You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by un...@apache.org on 2004/11/22 14:41:32 UTC

cvs commit: jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression RDBMSNotPropContainsExpression.java RDBMSPropContainsExpression.java

unico       2004/11/22 05:41:32

  Modified:    src/stores/org/apache/slide/store/impl/rdbms/expression Tag:
                        SLIDE_2_1_RELEASE_BRANCH
                        RDBMSNotPropContainsExpression.java
                        RDBMSPropContainsExpression.java
  Log:
  escape SQL wildcard characters in LIKE expressions
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.2.2.2   +18 -6     jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression/RDBMSNotPropContainsExpression.java
  
  Index: RDBMSNotPropContainsExpression.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression/RDBMSNotPropContainsExpression.java,v
  retrieving revision 1.2.2.1
  retrieving revision 1.2.2.2
  diff -u -r1.2.2.1 -r1.2.2.2
  --- RDBMSNotPropContainsExpression.java	1 Nov 2004 11:01:44 -0000	1.2.2.1
  +++ RDBMSNotPropContainsExpression.java	22 Nov 2004 13:41:32 -0000	1.2.2.2
  @@ -26,8 +26,6 @@
   import org.apache.slide.search.basic.Literals;
   import org.jdom.Element;
   
  -/**
  - */
   public class RDBMSNotPropContainsExpression extends RDBMSCompareExpression {
   
       public RDBMSNotPropContainsExpression(Element element, RDBMSQueryContext context) {
  @@ -39,6 +37,20 @@
           Element literal = _element.getChild(Literals.LITERAL, NamespaceCache.DEFAULT_NAMESPACE);
           return "NOT (p" + _tableIndex + ".PROPERTY_NAME = '" + property.getName() + "' AND " +
                   "p" + _tableIndex + ".PROPERTY_NAMESPACE = '" + property.getNamespaceURI() + "' AND " +
  -                "p" + _tableIndex + ".PROPERTY_VALUE LIKE '%" + literal.getTextNormalize() + "%')";
  +                "p" + _tableIndex + ".PROPERTY_VALUE LIKE '%" + getPropertyValue(literal) + "%')";
       }
  +
  +    private String getPropertyValue(Element literal) {
  +        String value = literal.getTextNormalize();
  +        StringBuffer sb = new StringBuffer(value.length() + 10);
  +        for (int i = 0, l = value.length(); i < l; i++) {
  +            char c = value.charAt(i);
  +            if (c == '_' || c == '%') {
  +                sb.append("\\\\");
  +            }
  +            sb.append(c);
  +        }
  +        return sb.toString();
  +    }
  +
   }
  
  
  
  1.2.2.2   +18 -4     jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression/RDBMSPropContainsExpression.java
  
  Index: RDBMSPropContainsExpression.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression/RDBMSPropContainsExpression.java,v
  retrieving revision 1.2.2.1
  retrieving revision 1.2.2.2
  diff -u -r1.2.2.1 -r1.2.2.2
  --- RDBMSPropContainsExpression.java	1 Nov 2004 11:01:44 -0000	1.2.2.1
  +++ RDBMSPropContainsExpression.java	22 Nov 2004 13:41:32 -0000	1.2.2.2
  @@ -39,6 +39,20 @@
           Element literal = _element.getChild(Literals.LITERAL, NamespaceCache.DEFAULT_NAMESPACE);
           return "(p" + _tableIndex + ".PROPERTY_NAME = '" + property.getName() + "' AND " +
                   "p" + _tableIndex + ".PROPERTY_NAMESPACE = '" + property.getNamespaceURI() + "' AND " +
  -                "p" + _tableIndex + ".PROPERTY_VALUE LIKE '%" + literal.getTextNormalize() + "%')";
  +                "p" + _tableIndex + ".PROPERTY_VALUE LIKE '%" + getPropertyValue(literal) + "%')";
       }
  +    
  +    private String getPropertyValue(Element literal) {
  +        String value = literal.getTextNormalize();
  +        StringBuffer sb = new StringBuffer(value.length() + 10);
  +        for (int i = 0, l = value.length(); i < l; i++) {
  +            char c = value.charAt(i);
  +            if (c == '_' || c == '%') {
  +                sb.append("\\\\");
  +            }
  +            sb.append(c);
  +        }
  +        return sb.toString();
  +    }
  +
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org