You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by sv...@apache.org on 2005/03/17 03:16:03 UTC
cvs commit: ws-juddi/src/java/org/apache/juddi/datastore/jdbc FindServiceByNameQuery.java
sviens 2005/03/16 18:16:03
Modified: src/java/org/apache/juddi/datastore/jdbc
FindServiceByNameQuery.java
Log:
Fix for bug#'s JUDDI-5 and JUDDI-12. The find-by-name find qualifier logic for the find_service has been implemented (see http://issues.apache.org/jira/browse/JUDDI-5 or http://issues.apache.org/jira/browse/JUDDI-12)
Revision Changes Path
1.7 +45 -27 ws-juddi/src/java/org/apache/juddi/datastore/jdbc/FindServiceByNameQuery.java
Index: FindServiceByNameQuery.java
===================================================================
RCS file: /home/cvs/ws-juddi/src/java/org/apache/juddi/datastore/jdbc/FindServiceByNameQuery.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FindServiceByNameQuery.java 15 Mar 2005 02:07:37 -0000 1.6
+++ FindServiceByNameQuery.java 17 Mar 2005 02:16:03 -0000 1.7
@@ -125,41 +125,59 @@
sql.addValue(businessKey);
}
- if ((names != null) && (names.size() > 0))
+ if (names != null)
{
- sql.append("AND (");
-
int nameSize = names.size();
- for (int i=0; i<nameSize; i++)
+ if (nameSize > 0)
{
- Name name = (Name)names.elementAt(i);
- String text = name.getValue();
- String lang = name.getLanguageCode();
+ sql.append("AND (");
- if ((text != null) && (text.length() > 0))
+ for (int i=0; i<nameSize; i++)
{
- if ((qualifiers != null) && (qualifiers.exactNameMatch))
- {
- sql.append("(NAME = ?");
- sql.addValue(text);
- }
- else
- {
- sql.append("(NAME LIKE ?");
- sql.addValue(text.endsWith("%") ? text : text+"%");
- }
+ Name name = (Name)names.elementAt(i);
+ String text = name.getValue();
+ String lang = name.getLanguageCode();
- // If lang is "en" we'll need to match with "en", "en_US" or "en_UK"
- if ((lang != null) && (lang.length() > 0))
+ if ((text != null) && (text.length() > 0))
{
- sql.append(" AND (UPPER(LANG_CODE) LIKE ?)");
- sql.addValue(lang.toUpperCase()+"%");
- }
+ if (qualifiers == null) // default
+ {
+ sql.append("(UPPER(NAME) LIKE ?");
+ sql.addValue(text.endsWith("%") ? text.toUpperCase() : text.toUpperCase()+"%");
+ }
+ else if ((qualifiers.caseSensitiveMatch) && (qualifiers.exactNameMatch))
+ {
+ sql.append("(NAME = ?");
+ sql.addValue(text);
+ }
+ else if ((!qualifiers.caseSensitiveMatch) && (qualifiers.exactNameMatch))
+ {
+ sql.append("(UPPER(NAME) = ?");
+ sql.addValue(text.toUpperCase());
+ }
+ else if ((qualifiers.caseSensitiveMatch) && (!qualifiers.exactNameMatch))
+ {
+ sql.append("(NAME LIKE ?");
+ sql.addValue(text.endsWith("%") ? text : text+"%");
+ }
+ else if ((!qualifiers.caseSensitiveMatch) && (!qualifiers.exactNameMatch))
+ {
+ sql.append("(UPPER(NAME) LIKE ?");
+ sql.addValue(text.endsWith("%") ? text.toUpperCase() : text.toUpperCase()+"%");
+ }
+
+ // If lang is "en" we'll need to match with "en", "en_US" or "en_UK"
+ if ((lang != null) && (lang.length() > 0))
+ {
+ sql.append(" AND (UPPER(LANG_CODE) LIKE ?)");
+ sql.addValue(lang.toUpperCase()+"%");
+ }
+
+ sql.append(")");
- sql.append(")");
-
- if (i+1 < nameSize)
- sql.append(" OR ");
+ if (i+1 < nameSize)
+ sql.append(" OR ");
+ }
}
}