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 ");
  +          }
           }
         }