/**
* personium.io
* Modifications copyright 2014 FUJITSU LIMITED
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* --------------------------------------------------
* This code is based on OptionsQueryParser.java of odata4j-core, and some modifications
* for personium.io are applied by us.
* --------------------------------------------------
* The copyright and the license text of the original code is as follows:
*/
/****************************************************************************
* Copyright (c) 2010 odata4j
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.fujitsu.dc.core.odata;
import java.util.List;
import org.odata4j.expression.BoolCommonExpression;
import org.odata4j.expression.CommonExpression;
import org.odata4j.expression.EntitySimpleProperty;
import org.odata4j.expression.MethodCallExpression;
import org.odata4j.expression.OrderByExpression;
import org.odata4j.producer.resources.OptionsQueryParser;
import com.fujitsu.dc.core.DcCoreException;
/**
* DcOptionsQueryParserクラス.
* OData4jのライブラリのソースよりコピー
*/
public final class DcOptionsQueryParser extends OptionsQueryParser {
/**
* Orderbyのクエリをパースする.
* @param orderBy orderbyクエリの値
* @return パース結果
*/
public static List<OrderByExpression> parseOrderBy(String orderBy) {
if (orderBy == null) {
return null;
}
return DcExpressionParser.parseOrderBy(orderBy);
}
/**
* Filterのクエリをパースする.
* @param filter filterクエリの値
* @return パース結果
*/
public static BoolCommonExpression parseFilter(String filter) {
if (filter == null) {
return null;
}
CommonExpression ce = DcExpressionParser.parse(filter);
if (ce instanceof BoolCommonExpression) {
return (BoolCommonExpression) ce;
}
if (ce instanceof MethodCallExpression) {
throw DcCoreException.OData.UNSUPPORTED_QUERY_FUNCTION.params("");
} else {
throw DcCoreException.OData.UNSUPPORTED_QUERY_OPERATOR.params("");
}
}
/**
* Selectのクエリをパースする.
* @param select selectクエリの値
* @return パース結果
*/
public static List<EntitySimpleProperty> parseSelect(String select) {
if (select == null) {
return null;
}
return DcExpressionParser.parseExpand(select);
}
/**
* Expandのクエリをパースする.
* @param expand expandクエリの値
* @return パース結果
*/
public static List<EntitySimpleProperty> parseExpand(String expand) {
if (expand == null) {
return null;
}
return DcExpressionParser.parseExpandQuery(expand);
}
}