Changeset 3749


Ignore:
Timestamp:
Sep 18, 2007, 9:21:37 AM (14 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #761: Not equal in filter doesn't support wildcards

Location:
branches/2.4-stable/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4-stable/src/clients/web/net/sf/basedb/clients/web/Base.java

    r3679 r3749  
    511511            if (value != null)
    512512            {
     513              boolean hasWildcard = value.indexOf('%') >= 0;
    513514              Type valueType = Type.valueOf(name.substring(7, colonIndex));
    514515 
     
    517518              filter.setValueType(valueType);
    518519             
    519               Operator op = Operator.EQ;
     520              Operator op = hasWildcard ? Operator.LIKE : Operator.EQ;
    520521              if (value.startsWith("<>") || value.startsWith("!="))
    521522              {
    522                 op = Operator.NEQ;
     523                op = hasWildcard ? Operator.NOTLIKE : Operator.NEQ;
    523524                value = value.substring(2);
    524525              }
     
    545546              else if (value.startsWith("="))
    546547              {
    547                 op = Operator.EQ;
     548                op = hasWildcard ? Operator.LIKE : Operator.EQ;
    548549                value = value.substring(1);
    549               }
    550               else if (value.indexOf('%') >= 0)
    551               {
    552                 op = Operator.LIKE;
    553550              }
    554551              if ("".equals(value)) value = null;
     
    669666        {}
    670667      }
    671       if (op == Operator.EQ && (value == null || (value != null && value.indexOf('%') >= 0)))
     668      if (op == Operator.EQ && value == null)
    672669      {
    673670        result = "=";
    674671      }
    675       else if (op == Operator.NEQ)
     672      else if (op == Operator.NEQ || op == Operator.NOTLIKE)
    676673      {
    677674        result = "<>";
  • branches/2.4-stable/src/core/net/sf/basedb/core/Operator.java

    r3679 r3749  
    126126      return Restrictions.like(lvalue, rvalue);
    127127    }
     128  },
     129 
     130  NOTLIKE(11, "NOT LIKE", "NOT LIKE", true)
     131  {
     132    public Restriction getRestriction(Expression lvalue, Expression rvalue)
     133      throws InvalidDataException
     134    {
     135      return Restrictions.not(Restrictions.like(lvalue, rvalue));
     136    }
    128137  };
    129138
Note: See TracChangeset for help on using the changeset viewer.