Changeset 16551
- Timestamp:
- 20/08/08 16:22:09 (5 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/intermine/web/main/src/org/intermine/web/logic/query/MainHelper.java
r16021 r16551 695 695 QueryExpression qf = new QueryExpression(QueryExpression.LOWER, (QueryField) qn); 696 696 String lowerCaseValue = ((String) c.getValue()).toLowerCase(); 697 if (lowerCaseValue.indexOf('%') != -1 || lowerCaseValue.indexOf('_') != -1) { 698 if (c.getOp().equals(ConstraintOp.EQUALS)) { 699 return new SimpleConstraint(qf, ConstraintOp.MATCHES, 697 698 // notes: 699 // - we always turn EQUALS into a MATCHES(LIKE) constraint and rely on Postgres 700 // to be sensible 701 // - lowerCaseValue is quoted in a way suitable for a LIKE constraint, but not for an 702 // normal equals. for example 'Dpse\GA10108' needs to be 'Dpse\\GA10108' for equals 703 // but 'Dpse\\\\GA10108' (and hence "Dpse\\\\\\\\GA10108" as a Java string because 704 // backslash must be quoted with a backslash) 705 if (c.getOp().equals(ConstraintOp.EQUALS)) { 706 return new SimpleConstraint(qf, ConstraintOp.MATCHES, new QueryValue(lowerCaseValue)); 707 } else { 708 if (c.getOp().equals(ConstraintOp.NOT_EQUALS)) { 709 return new SimpleConstraint(qf, ConstraintOp.DOES_NOT_MATCH, 700 710 new QueryValue(lowerCaseValue)); 701 711 } else { 702 if (c.getOp().equals(ConstraintOp. NOT_EQUALS)) {703 return new SimpleConstraint(qf, ConstraintOp. DOES_NOT_MATCH,704 new QueryValue( lowerCaseValue));712 if (c.getOp().equals(ConstraintOp.CONTAINS)) { 713 return new SimpleConstraint(qf, ConstraintOp.MATCHES, 714 new QueryValue("%" + lowerCaseValue + "%")); 705 715 } else { 706 // fail through 707 } 708 } 709 } 710 if (c.getOp().equals(ConstraintOp.CONTAINS)) { 711 return new SimpleConstraint(qf, ConstraintOp.MATCHES, 712 new QueryValue("%" + lowerCaseValue + "%")); 713 } 714 return new SimpleConstraint(qf, c.getOp(), new QueryValue(lowerCaseValue)); 716 return new SimpleConstraint(qf, c.getOp(), new QueryValue(lowerCaseValue)); 717 } 718 } 719 } 715 720 } 716 721
