Yair Zaslavsky has uploaded a new change for review.

Change subject: aaa: Fix search to search properly for users by groups
......................................................................

aaa: Fix search to search properly for users by groups

Instead of ilike 'group%' which is problematic in case the
user is member of multiple groups , the pattern matching
operator is used with a proper expression to replace the %
wildcard.

Topic: AAA
Change-Id: I14e795926cb57de15b628587d5c3df427518720a
Signed-off-by: Yair Zaslavsky <[email protected]>
---
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/BaseConditionFieldAutoCompleter.java
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/IConditionFieldAutoCompleter.java
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java
4 files changed, 27 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/53/32153/1

diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/BaseConditionFieldAutoCompleter.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/BaseConditionFieldAutoCompleter.java
index 7d6832d..1f3dd9a 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/BaseConditionFieldAutoCompleter.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/BaseConditionFieldAutoCompleter.java
@@ -49,6 +49,11 @@
             return Config.<String> getValue(ConfigValues.DBLikeSyntax);
     }
 
+    public String getMatchingSyntax(boolean positive, boolean caseSensitive) {
+        return new StringBuilder(positive ? "" : " NOT 
").append(getLikeSyntax(caseSensitive)).toString();
+    }
+
+
     /**
      * Gets the I18N prefix used for value compare.
      *
@@ -377,4 +382,9 @@
                     pair.getFirst(), pair.getSecond());
         }
     }
+
+    @Override
+    public String getWildcard() {
+        return "%";
+    }
 }
diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/IConditionFieldAutoCompleter.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/IConditionFieldAutoCompleter.java
index 9d94e3c..1e20596 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/IConditionFieldAutoCompleter.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/IConditionFieldAutoCompleter.java
@@ -20,6 +20,10 @@
 
     String buildFreeTextConditionSql(String tableName, String relations, 
String value, boolean caseSensitive);
 
+    String getMatchingSyntax(boolean positive, boolean caseSensitive);
+
+    String getWildcard();
+
     String buildConditionSql(String fieldName,
             String customizedValue,
             String customizedRelation,
diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
index 4bfcd57..df327cb 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
@@ -1088,9 +1088,9 @@
                 
String.class.equals(conditionFieldAC.getDbFieldType(fieldName)))) {
             /* enable case-insensitive search by changing operation to I/LIKE 
*/
             if ("=".equals(customizedRelation)) {
-                customizedRelation = 
BaseConditionFieldAutoCompleter.getLikeSyntax(caseSensitive);
+                customizedRelation = conditionFieldAC.getMatchingSyntax(true, 
caseSensitive);
             } else if ("!=".equals(customizedRelation)) {
-                customizedRelation = "NOT " + 
BaseConditionFieldAutoCompleter.getLikeSyntax(caseSensitive);
+                customizedRelation = conditionFieldAC.getMatchingSyntax(false, 
caseSensitive);
             }
         }
         return customizedRelation;
@@ -1113,7 +1113,7 @@
                     
conditionValueAC.convertFieldEnumValueToActualValue(obj.getBody()));
         } else if ("".equals(fieldName) /* search on all relevant fields */||
                 
(String.class.equals(conditionFieldAC.getDbFieldType(fieldName)))) {
-            customizedValue = customizedValue.replace('*', '%');
+            customizedValue = customizedValue.replace("*", 
conditionFieldAC.getWildcard());
         }
         return customizedValue;
     }
diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java
index a517a61..d935f87 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdcUserConditionFieldAutoCompleter.java
@@ -69,6 +69,11 @@
     }
 
     @Override
+    public String getMatchingSyntax(boolean positive, boolean caseSensitive) {
+        return new StringBuilder(positive ? "" : " !").append(caseSensitive ? 
"~" : "~*").toString();
+    }
+
+    @Override
     public String buildConditionSql(
         String fieldName,
         String customizedValue,
@@ -108,4 +113,9 @@
             );
         }
     }
+
+    @Override
+    public String getWildcard() {
+        return ".*";
+    }
 }


-- 
To view, visit http://gerrit.ovirt.org/32153
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I14e795926cb57de15b628587d5c3df427518720a
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to