top / index / prev / next / target / source

2021-05-14 diary: [Oiyokan] 技術者向け: OData v4: Apache Olingo の Filter Expression 処理

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

[Oiyokan] 技術者向け: OData v4: Apache Olingo の Filter Expression 処理

Apache Olingo を利用して OData v4 仕様 REST API Server を作る過程で、一番手間のかかる作業のひとつは Filter Expression の実装だと思われます。

Oiyokan の v1.14 では以下のソースコード箇所がこれに該当します。(Oiyokan では REST から SQL への変換が実装されています)

簡単な実装例は以下のようになります。REST の le を SQL の <= に置き換えているところです。Olingo は AST でデータ構築されているので、これをトラバースしながら SQL の WHERE 文に展開していきます。

} else if (opKind == BinaryOperatorKind.LE) {
  // LE
  sqlInfo.getSqlBuilder().append("(");
  expand(impl.getLeftOperand());
  sqlInfo.getSqlBuilder().append(" <= ");
  expand(impl.getRightOperand());
  sqlInfo.getSqlBuilder().append(")");
  return;

バージョン違いに留意できるのであれば、Olingo v2 の以下の記事は参考になります。

このコードにあるように、Oiyokan ではまだ未対応の OData v4 文法が残っています。仕様対応追加の提案や pull request などが期待されます。

関連する日記

Last modified: $Date: 2021-05-14 $

登場キーワード


この日記について