尝试使用Java将OData $过滤器解析为其名称 - 值对

时间:2015-11-03 16:46:50

标签: java filter odata

我正在构建一个服务,它将接收"查询参数"使用OData语法:而不是更熟悉的

使=本田&安培;模型=飞行员和安培; TRIMLINE = LX

要求是接受单个OData过滤器" $ filter"正在通过。

$滤波器="'使' eq' Honda'和'模型' eq' Pilot'和' trimline' eq' LX'"

不需要考虑SQL查询映射,JDBC,转换为JSON等。这实际上只是试图从这种语法中获取一组名称 - 值对。我正在查看Olingo库并查看FilterExpression和UriParser之类的内容,但这似乎过于复杂了。我错过了什么吗?

$ filter String只有#eq' eq'适用于所有情况的操作员。

我假设有一种更简单的方法来做到这一点。我希望在Olingo库中有一些东西,我可以按照描述获得$ filter,也许最终得到一个HashMap。

由于

1 个答案:

答案 0 :(得分:2)

不幸的是Olingo不提供此功能。为了使用Olingo解析过滤器字符串,您至少需要一个EdmEntityType。然后你可以像这个UriParser.parseFilter(null,entityType,filterString)一样调用parseFilterMethod。

如果您只想要“eq”参数,为什么不使用String.split()方法在String“eq”处拆分以获取所需的段。我在eq之前和之后包含了空格,以防止溢出方法将有效的过滤器(如$ filter = Name eq'Equador'分成4段而不是3段。你甚至可以使用带有正则表达式的split方法,这比我的简单例子更复杂。