私たちの製品の Web サービス インターフェイスでは、SQL のようなクエリ文字列を定義しています。それらは正確なSQL構文に従っていません。それはこのように動作します。文字列は xml 要求に存在します。私のアプリケーションは文字列を解析し、コンテンツに基づいて Java オブジェクトを作成しています。これらの Java オブジェクトは、DB へのクエリに使用されます。クエリ文字列の例を次に示します。
objectType==device && deviceType==mobile && returnType==full
objectType==device && deviceType==computer && deviceState==connected && returnType==basic
objectType==networkEntity && namePattern==*.nw && networkEntityType==SGSN
通常、キー (objectType など) と値 (device/networkEntity) は列挙されます。したがって、解析メカニズムからの期待は次のとおりです。
- 不明な要素 (キー/値) がクエリ文字列にある場合、失敗するはずです。
- 要素 (キー/値) は、定義された順序で表示される必要があります (これは、解析ロジックを単純化するためのものです)
- 将来、「==」と「&&」に加えて、他の操作も導入される可能性があります。
- キー/値のさまざまな組み合わせが存在する可能性があり、その結果、多数の一意のクエリ文字列が生成されます。
現在、String.split と Scanner の組み合わせを使用して文字列を解析しています。しかし、コードが複雑になり、デバッグが難しくなっていることがわかりました。これまで、主要な検証は導入していません。そのため、コードがさらに複雑で「醜い」ものになると予想しています。
[質問] そのような文字列を解析するのに役立つライブラリはありますか? その他の提案や考えも歓迎します。