package org.odata4j.producer.resources; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.core.UriInfo; import org.odata4j.expression.BoolCommonExpression; import org.odata4j.expression.CommonExpression; import org.odata4j.expression.EntitySimpleProperty; import org.odata4j.expression.ExpressionParser; import org.odata4j.expression.OrderByExpression; import org.odata4j.producer.InlineCount; public class OptionsQueryParser { public static InlineCount parseInlineCount(String inlineCount) { if (inlineCount == null) { return null; } Map<String, InlineCount> rt = new HashMap<String, InlineCount>(); rt.put("allpages", InlineCount.ALLPAGES); rt.put("none", InlineCount.NONE); return rt.get(inlineCount); } public static Integer parseTop(String top) { return top == null ? null : Integer.parseInt(top); } public static Integer parseSkip(String skip) { return skip == null ? null : Integer.parseInt(skip); } public static BoolCommonExpression parseFilter(String filter) { if (filter == null) { return null; } CommonExpression ce = ExpressionParser.parse(filter); if (!(ce instanceof BoolCommonExpression)) { throw new RuntimeException("Bad filter"); } return (BoolCommonExpression) ce; } public static List<OrderByExpression> parseOrderBy(String orderBy) { if (orderBy == null) { return null; } return ExpressionParser.parseOrderBy(orderBy); } public static String parseSkipToken(String skipToken) { return skipToken; } public static Map<String, String> parseCustomOptions(UriInfo uriInfo) { Map<String, String> rt = new HashMap<String, String>(); for (String qp : uriInfo.getQueryParameters().keySet()) { if (!qp.startsWith("$")) { rt.put(qp, uriInfo.getQueryParameters().getFirst(qp)); } } return rt; } public static List<EntitySimpleProperty> parseExpand(String expand) { if (expand == null) { return null; } return ExpressionParser.parseExpand(expand); } public static List<EntitySimpleProperty> parseSelect(String select) { if (select == null) { return null; } return ExpressionParser.parseExpand(select); } }