0
我正在开发一个API,其中,我根据请求中收到的条件树生成一个查询。 以下是树格式:Java Tree遍历
应该得到翻译在SQL查询这样的:
WHERE (a>b OR c<d) AND (e>f OR g<h)
或者说,像这样的
WHERE ((a>b) OR (c<d)) AND ((e>f) OR (g<h))
使用前序遍历,我能够生成查询。但是,我无法附加括号。以下是我的inOrder遍历代码:
public void inorder(Filter n, StringBuilder builder) {
if (n != null) {
inorder(n.getLeft(), builder);
print(n, builder);
inorder(n.getRight(), builder);
}
}
private void print(Filter node, StringBuilder builder) {
if (null == node.getField() || null == node.getValue()) {
builder.append(node.getLogicOperator());
} else {
builder.append((node.getField() + " " + node.getComparisonOperator() + " " + node
.getValue()));
}
builder.append("\n");
}
任何人都可以请指导我在何处插入括号? 在此先感谢。
**** ****更新
现在,我想生成相同的结构蒙戈查询。我能够生成字符串,但无法附加括号:我想要这样的:
$and : [
{ $or : [ { a: b}, { c: d } ] },
{ $or : [ { e: f}, { g: { $lt : h} } ] }
]
任何人都可以请帮忙吗?
点上!在考虑情景之后,我做了类似的事情。如果节点是根节点,我还插入了不附加括号的条件。干杯! – user3968762 2014-09-26 12:59:03
你好,你能提供一些用于括号生成字符串的指针吗? – user3968762 2014-09-26 14:17:04