details:   /erp/devel/pi/rev/7f46d8acefa3
changeset: 10853:7f46d8acefa3
user:      Gorka Ion Damián <gorkaion.damian <at> openbravo.com>
date:      Wed Feb 23 18:34:56 2011 +0100
summary:   [OBUISEL] Properly set default expression filter on picklist using 
Custom Query selectors.

diffstat:

 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
 |  19 +++++++--
 1 files changed, 14 insertions(+), 5 deletions(-)

diffs (51 lines):

diff -r f94b103c7ff4 -r 7f46d8acefa3 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
--- 
a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
  Wed Feb 23 17:27:11 2011 +0100
+++ 
b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
  Wed Feb 23 18:34:56 2011 +0100
@@ -169,10 +169,17 @@
     }
     additionalFilter.append(getDefaultFilterExpression(sel, parameters));
 
+    StringBuffer defaultExpressionsFilter = new StringBuffer();
     boolean hasFilter = false;
     for (SelectorField field : sel.getOBUISELSelectorFieldList()) {
+      if (StringUtils.isEmpty(field.getClauseLeftPart())) {
+        continue;
+      }
       String value = parameters.get(field.getDisplayColumnAlias());
-      if (field.getDefaultExpression() != null && 
!"Window".equals(requestType)) {
+      // Add field default expression on picklist if it is not already 
filtered. Default expressions
+      // on selector popup are already evaluated and their values came in the 
parameters object.
+      if (field.getDefaultExpression() != null && !"Window".equals(requestType)
+          && StringUtils.isEmpty(value)) {
         try {
           String defaultValue = "";
           Object defaultValueObject = 
ParameterUtils.getJSExpressionResult(parameters,
@@ -181,15 +188,14 @@
             defaultValue = defaultValueObject.toString();
           }
           if (StringUtils.isNotEmpty(defaultValue)) {
-            additionalFilter.append(NEW_FILTER_CLAUSE);
-            additionalFilter.append(getWhereClause(defaultValue, field, 
xmlDateFormat));
+            defaultExpressionsFilter.append(NEW_FILTER_CLAUSE);
+            defaultExpressionsFilter.append(getWhereClause(defaultValue, 
field, xmlDateFormat));
           }
         } catch (Exception e) {
           log.error("Error evaluating filter expression: " + e.getMessage(), 
e);
         }
       }
-      if ((field.isFilterable() || field.getDefaultExpression() != null)
-          && field.getClauseLeftPart() != null && 
StringUtils.isNotEmpty(value)) {
+      if (field.isFilterable() && StringUtils.isNotEmpty(value)) {
         String whereClause = getWhereClause(value, field, xmlDateFormat);
         if (!hasFilter) {
           additionalFilter.append(NEW_FILTER_CLAUSE);
@@ -208,6 +214,9 @@
     if (hasFilter) {
       additionalFilter.append(")");
     }
+    if (defaultExpressionsFilter.length() > 0) {
+      additionalFilter.append(defaultExpressionsFilter);
+    }
     HQL = HQL.replace(ADDITIONAL_FILTERS, additionalFilter.toString());
     return HQL;
   }

------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in 
Real-Time with Splunk. Collect, index and harness all the fast moving IT data 
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business 
insights. http://p.sf.net/sfu/splunk-dev2dev 
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to