From 2575c1d7f4db34e0ab3937f63dd22bec69aca1bf Mon Sep 17 00:00:00 2001 From: Shawn Date: Thu, 23 Jun 2011 22:14:49 +0800 Subject: [PATCH 2/2] If the name in query contains "%" , it sould be a like clause. --- .../apache/juddi/query/FindEntityByNamesQuery.java | 7 +++++-- .../apache/juddi/query/FindTModelByNameQuery.java | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java index f7fe958..184ca59 100644 --- a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java +++ b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java @@ -127,17 +127,20 @@ public class FindEntityByNamesQuery extends EntityQuery { nameTerm = "upper(" + entityAliasChild + ".name)"; nameValue = n.getValue().toUpperCase(); } + + String tempNamePredicate = nameValue.indexOf("%") > -1 ? DynamicQuery.PREDICATE_LIKE : namePredicate; + // JUDDI-235: wildcards are provided by user (only commenting in case a new interpretation arises) //if (fq.isApproximateMatch()) // nameValue = nameValue.endsWith(DynamicQuery.WILDCARD)?nameValue:nameValue + DynamicQuery.WILDCARD; if (n.getLang() == null || n.getLang().length() == 0 ) { - qry.appendGroupedAnd(new DynamicQuery.Parameter(nameTerm, nameValue, namePredicate)); + qry.appendGroupedAnd(new DynamicQuery.Parameter(nameTerm, nameValue, tempNamePredicate)); } else { // Per spec, the language argument is always wildcarded and case insensitive String langValue = n.getLang().endsWith(DynamicQuery.WILDCARD)?n.getLang().toUpperCase():n.getLang().toUpperCase() + DynamicQuery.WILDCARD; - qry.appendGroupedAnd(new DynamicQuery.Parameter(nameTerm, nameValue, namePredicate), + qry.appendGroupedAnd(new DynamicQuery.Parameter(nameTerm, nameValue, tempNamePredicate), new DynamicQuery.Parameter("upper(" + entityAliasChild + ".langCode)", langValue, DynamicQuery.PREDICATE_LIKE)); } diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByNameQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByNameQuery.java index 08f0f01..10ac5cb 100644 --- a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByNameQuery.java +++ b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByNameQuery.java @@ -79,6 +79,9 @@ public class FindTModelByNameQuery extends TModelQuery { String nameTerm = ENTITY_ALIAS + ".name"; String nameValue = name.getValue(); + + namePredicate = nameValue.indexOf("%") > -1 ? DynamicQuery.PREDICATE_LIKE : namePredicate; + if (fq.isCaseInsensitiveMatch()) { nameTerm = "upper(" + ENTITY_ALIAS + ".name)"; nameValue = name.getValue().toUpperCase(); -- 1.7.3.1.msysgit.0