details: https://code.openbravo.com/erp/devel/pi/rev/506b45ab88e4
changeset: 18558:506b45ab88e4
user: Shankar Balachandran <shankar.balachandran <at> openbravo.com>
date: Sun Oct 28 18:50:13 2012 +0100
summary: Fixes Issue 0022007 : Handling null values in filter by identifiers.
Added a new method replaceValueWithJoins to handle cases where joins are formed
but the property path is used to compare with values.
For eg., instead of join_4.description, e.product.attributeSetValue.description
is used in the where clause which results in exception when nullobjects are sub
referenced.
diffstat:
modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java
| 36 ++++++++-
1 files changed, 31 insertions(+), 5 deletions(-)
diffs (68 lines):
diff -r 2785dcc9cf21 -r 506b45ab88e4
modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java
---
a/modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java
Mon Nov 19 12:21:21 2012 +0100
+++
b/modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java
Sun Oct 28 18:50:13 2012 +0100
@@ -708,7 +708,7 @@
&& (operator.equals(OPERATOR_GREATERTHAN) ||
operator.equals(OPERATOR_GREATEROREQUAL)
|| operator.equals(OPERATOR_IGREATERTHAN) ||
operator.equals(OPERATOR_IGREATEROREQUAL)
|| operator.equals(OPERATOR_GREATERTHANFIElD) || operator
- .equals(OPERATOR_GREATEROREQUALFIELD));
+ .equals(OPERATOR_GREATEROREQUALFIELD));
}
private boolean isLesserOperator(String operator) {
@@ -716,7 +716,7 @@
&& (operator.equals(OPERATOR_LESSTHAN) ||
operator.equals(OPERATOR_LESSOREQUAL)
|| operator.equals(OPERATOR_ILESSTHAN) ||
operator.equals(OPERATOR_ILESSOREQUAL)
|| operator.equals(OPERATOR_LESSTHANFIELD) || operator
- .equals(OPERATOR_LESSOREQUALFIElD));
+ .equals(OPERATOR_LESSOREQUALFIElD));
}
private String computeLeftWhereClauseForIdentifier(Property property, String
key,
@@ -1188,10 +1188,10 @@
+ " from " + prop.getTranslationProperty().getEntity().getName()
+ " as t where t."
+ prop.getTrlParentProperty().getName() + " = "
+ prefix.substring(0, prefix.lastIndexOf('.')) + " and
t.language.language='"
- + OBContext.getOBContext().getLanguage().getLanguage() + "')),
to_char(" + prefix
- + prop.getName() + "), '')");
+ + OBContext.getOBContext().getLanguage().getLanguage() + "')),
to_char("
+ + replaceValueWithJoins(prefix + prop.getName()) + "), '')");
} else {
- sb.append("COALESCE(to_char(" + prefix + prop.getName() + "),'')");
+ sb.append("COALESCE(to_char(" + replaceValueWithJoins(prefix +
prop.getName()) + "),'')");
}
} else {
@@ -1205,6 +1205,32 @@
return "(" + sb.toString() + ")";
}
+ /*
+ * To handle cases where joins are formed but the property path is used to
compare with values.
+ * For eg., instead of join_4.description,
e.product.attributeSetValue.description is used in
+ * where clause which results in exception when null objects are sub
referenced.Refer issue
+ * https://issues.openbravo.com/view.php?id=22007
+ */
+ private String replaceValueWithJoins(String value) {
+ String query = value;
+ String compare = value.substring(0, value.lastIndexOf(DalUtil.DOT));
+ String properties[] = value.split("\\.");
+ if (properties.length > 2) {
+ for (JoinDefinition join : joinDefinitions) {
+ if (compare.contains("join")) {
+ if (properties[0].equalsIgnoreCase(join.ownerAlias)) {
+ return join.joinAlias + DalUtil.DOT + properties[properties.length
- 1];
+ }
+ } else {
+ if (compare.equalsIgnoreCase(getMainAlias() + DalUtil.DOT +
join.property)) {
+ return join.joinAlias + DalUtil.DOT + properties[properties.length
- 1];
+ }
+ }
+ }
+ }
+ return query;
+ }
+
/**
* @return true if one of the filter parameters is the {@link
JsonConstants#ORG_PARAMETER}.
*/
------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits