details:   /erp/devel/pi/rev/9158261ee690
changeset: 10482:9158261ee690
user:      Gorka Ion Damián <gorkaion.damian <at> openbravo.com>
date:      Wed Feb 09 17:36:03 2011 +0100
summary:   [OBUISEL] Fixed issue filtering the picklist on selectors using 
custom query.

diffstat:

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

diffs (54 lines):

diff -r 8191d45f2d75 -r 9158261ee690 
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 09 17:32:31 2011 +0100
+++ 
b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
  Wed Feb 09 17:36:03 2011 +0100
@@ -52,6 +52,7 @@
   private static Logger log = Logger.getLogger(SelectorDataSourceFilter.class);
   private static final String ADDITIONAL_FILTERS = "@additional_filters@";
   private static final String NEW_FILTER_CLAUSE = "\n AND ";
+  private static final String NEW_OR_FILTER_CLAUSE = "\n OR ";
 
   @Override
   protected int getCount(Map<String, String> parameters) {
@@ -133,6 +134,7 @@
     if (!_HQL.contains(ADDITIONAL_FILTERS)) {
       return _HQL;
     }
+    final String requestType = 
parameters.get(SelectorConstants.DS_REQUEST_TYPE_PARAMETER);
     String HQL = _HQL;
     StringBuffer additionalFilter = new StringBuffer();
     final String entityAlias = sel.getEntityAlias();
@@ -148,16 +150,29 @@
     }
     additionalFilter.append(getDefaultFilterExpression(sel, parameters));
 
+    boolean hasFilter = false;
     for (SelectorField field : sel.getOBUISELSelectorFieldList()) {
-      if (field.isFilterable() && field.getClauseLeftPart() != null) {
-        String value = parameters.get(field.getDisplayColumnAlias());
-        if (StringUtils.isNotEmpty(value)) {
-          String whereClause = getWhereClause(value, field, xmlDateFormat);
+      String value = parameters.get(field.getDisplayColumnAlias());
+      if (field.isFilterable() && field.getClauseLeftPart() != null
+          && StringUtils.isNotEmpty(value)) {
+        String whereClause = getWhereClause(value, field, xmlDateFormat);
+        if (!hasFilter) {
           additionalFilter.append(NEW_FILTER_CLAUSE);
-          additionalFilter.append(whereClause);
+          additionalFilter.append(" (");
+          hasFilter = true;
+        } else {
+          if ("Window".equals(requestType)) {
+            additionalFilter.append(NEW_FILTER_CLAUSE);
+          } else {
+            additionalFilter.append(NEW_OR_FILTER_CLAUSE);
+          }
         }
+        additionalFilter.append(whereClause);
       }
     }
+    if (hasFilter) {
+      additionalFilter.append(")");
+    }
     HQL = HQL.replace(ADDITIONAL_FILTERS, additionalFilter.toString());
     return HQL;
   }

------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to