Lior Vernia has uploaded a new change for review. Change subject: engine: Added ability to affect sort order in search ......................................................................
engine: Added ability to affect sort order in search Added to the search mechanism a generic way for developers to override the default sort order according to a field in the database, without affecting other conditions related to that field. Change-Id: I80b65dacdccc208c8c7e0f2564f2660782d36d69 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=895468 Signed-off-by: Lior Vernia <lver...@redhat.com> --- 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 3 files changed, 25 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/11469/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 f6553f0..03ea073 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 @@ -34,10 +34,12 @@ new HashMap<String, List<ValueValidationFunction>>(); private final Map<String, Class<?>> mTypeDict = new HashMap<String, Class<?>>(); protected final Map<String, String> mColumnNameDict = new HashMap<String, String>(); + protected final Map<String, String> mSortableFieldDict = new HashMap<String, String>(); protected final List<String> mNotFreeTextSearchableFieldsList = new ArrayList<String>(); /** * Gets the LIKE clause syntax for non case-sensitive search + * * @return the LIKE syntax according to current DBEngine. */ public static String getLikeSyntax(boolean caseSensitive) { @@ -51,6 +53,7 @@ /** * Gets the I18N prefix used for value compare. + * * @return */ public static String getI18NPrefix() { @@ -115,6 +118,15 @@ return retval; } + public String getSortableDbField(String fieldName) { + if (mSortableFieldDict.containsKey(fieldName)) { + return mSortableFieldDict.get(fieldName); + } + else { + return getDbFieldName(fieldName); + } + } + public Class<?> getDbFieldType(String fieldName) { Class<?> retval = null; if (mTypeDict.containsKey(fieldName)) { @@ -125,7 +137,10 @@ } // FIXME Probably Not Hibernate Friendly - public final String buildFreeTextConditionSql(String tableName, String relations, String value, boolean caseSensitive) { + public final String buildFreeTextConditionSql(String tableName, + String relations, + String value, + boolean caseSensitive) { StringBuilder sb = new StringBuilder(" ( "); boolean firstTime = true; if (!StringHelper.isNullOrEmpty(value) && !"''".equals(value)) { @@ -305,6 +320,7 @@ } } } + // private static final String DATE_FORMAT = "MMM dd,yyyy"; private static DateTime DealWithDateEnum(String value) { DateTime formatedValue = new DateTime(); 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 ecdc0c7..67dc775 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 @@ -10,6 +10,8 @@ String getDbFieldName(String fieldName); + String getSortableDbField(String fieldName); + Class<?> getDbFieldType(String fieldName); IAutoCompleter getFieldRelationshipAutoCompleter(String fieldName); @@ -18,7 +20,11 @@ String buildFreeTextConditionSql(String tableName, String relations, String value, boolean caseSensitive); - String buildConditionSql(String fieldName, String customizedValue, String customizedRelation, String tableName, boolean caseSensitive); + String buildConditionSql(String fieldName, + String customizedValue, + String customizedRelation, + String tableName, + boolean caseSensitive); void formatValue(String fieldName, RefObject<String> relations, RefObject<String> value, boolean caseSensitive); } 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 9d0a98a..0edbcf5 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 @@ -824,7 +824,7 @@ case SORT_FIELD: conditionFieldAC = mSearchObjectAC.getFieldAutoCompleter(searchObjStr); sortByPhrase = - StringFormat.format(" ORDER BY %1$s", conditionFieldAC.getDbFieldName(obj.getBody())); + StringFormat.format(" ORDER BY %1$s", conditionFieldAC.getSortableDbField(obj.getBody())); break; case SORT_DIRECTION: sortByPhrase = StringFormat.format("%1$s %2$s", sortByPhrase, obj.getBody()); -- To view, visit http://gerrit.ovirt.org/11469 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I80b65dacdccc208c8c7e0f2564f2660782d36d69 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <lver...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches