コマンド ライン ベースのアプリケーションで、データベースの結果をフィルタリングするための基本的なサポートを提供したいと考えています。このために、ユーザー入力を解析する必要があります。これらのトークンをサポートしたい:
and
、or
、not
および括弧を含むブール (論理) 演算子- 変数、文字列、日付、数値
- 比較演算子:
=
,!=
,<
,>
,>=
,<=
したがって、入力文字列は次のようになります。
(age > 3 or name != 'tom') and city='london' and ((birthday=01.01.2010 or birthday >= 01.01.2013))
基本的なもの。
質問: そのための (トークナイザーと) パーサーはどこで入手できますか?
- これらの基本をサポートするライブラリは既にありますか?
- そうでない場合は、トークナイザーとパーサー用の Java クラスを生成するツールがあることを知っています。おすすめはありますか?
次に、結果を JPA の に変換しPredicate
ますCriteriaQuery
。まず、コマンド ラインで JPQL を提供し、ユーザーに SQL ベースの制限を指定させることができると考えました。しかし、データベース スキーマが変更された場合などに、機能しなくなる可能性のある条件をユーザーに記述させたくありません。