# HG changeset patch
# User Adrián Romero <adrianromero@openbravo.com>
# Date 1491309118 -7200
#      Tue Apr 04 14:31:58 2017 +0200
# Node ID a8bcdcd185ee17b1fcc81141cb66f7d58504ec79
# Parent  5119622b48fc1da0ae6a7f6028b941a4ce40ab77
[TEMP] Fixes infrastructure for mandatory remote filters
* It has been adjusted the method hasRelevantRemoteFilters to consider relevant filters all filters wut operator equal and a non empty value.
Basically now the idea is that only filters *startsWith* or *contains* with a value with length < 3 are considered non relevants. This is done to avoid for example the case of searching EAN codes equals to a value with length less than 3 to be considered non relevant

diff --git a/src/org/openbravo/mobile/core/process/ProcessHQLQuery.java b/src/org/openbravo/mobile/core/process/ProcessHQLQuery.java
--- a/src/org/openbravo/mobile/core/process/ProcessHQLQuery.java
+++ b/src/org/openbravo/mobile/core/process/ProcessHQLQuery.java
@@ -326,23 +326,25 @@
   }
 
   private boolean hasRelevantRemoteFilters(JSONArray remoteFilters) {
-    boolean hasFilters = false;
     try {
-      for (int i = 0; i < remoteFilters.length() && !hasFilters; i++) {
-        JSONObject objFilter;
-        objFilter = (JSONObject) remoteFilters.get(i);
-        if (objFilter.getString("value").equals("__all__")
-            || ((!objFilter.has("fieldType") || !objFilter.getString("fieldType").equals("Number")) && objFilter
-                .getString("value").length() < 3)) {
-          continue;
+      for (int i = 0; i < remoteFilters.length(); i++) {
+        JSONObject objFilter = (JSONObject) remoteFilters.get(i);
+        // Check filter has a non empty value
+        if (!objFilter.getString("value").equals("__all__")
+            && !objFilter.getString("value").equals("")) {
+          if (!objFilter.getString("operator").equals("startsWith")
+              && !objFilter.getString("operator").equals("contains")) {
+            return true; // equals, notEquals, greaterThan and lessThan are always relevant
+          }
+          if (objFilter.getString("value").length() >= 3) {
+            return true; // for startsWith and contains, the filter is relevant if length >= 3
+          }
         }
-        hasFilters = true;
       }
-      return hasFilters;
+      return false; // No filter of the list is relevant
     } catch (JSONException e) {
-      throw new OBException("Unable to read remote filters");
+      throw new OBException("Unable to read remote filters.");
     }
-
   }
 
   public interface StrategyQuery {
