M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

シンプルなクエリ処理ライブラリを作ってみた

自作中のツールで使うことを意図してシンプルなクエリ処理ライブラリMinqueを作ってみた。

比較演算子と論理演算子からなるクエリをパースして、任意の要素型のコレクションを対象に検索処理を実行できる。

その他、クエリAPIの概要やクエリで使用できる構文などについてはMinqueプロジェクトのREADME.mdを参照。

package minque.usage;

import com.m12i.minque.Query;
import com.m12i.minque.QueryFactory;

...

public class Main {

    public static void main(String... args) throws QueryParseException {

    // Map<String, Object>を要素とするコレクションがあると仮定します
    final List<Map<String, Object> list0 = ...;

    // Collection<Map<String, Object>>から
    // 条件にマッチする要素を取得するクエリのためのファクトリ実装を生成
        final QueryFactory<Map<String, Object>> factory = QueryFactory
                .createMapQueryFactory();

        // 文字列で表現されたクエリをパースして解析済みクエリを作成します
        final Query<Map<String, Object>> query = factory
            .create("prop0 == foo and prop1 == bar");

    // コレクションに対する検索を実施します
        q.selectFrom(list0); // => List<Map<String, Object>>

  }

}