KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > expression > booleanvalueexpression > predicates > SimpleEscapeSpecialComparator


1 package com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.predicates;
2
3 import java.sql.*;
4
5 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.*;
6 import com.daffodilwoods.daffodildb.utils.*;
7 import com.daffodilwoods.daffodildb.utils.field.*;
8 import com.daffodilwoods.database.resource.*;
9
10 /**
11  * <p>Title: </p>
12  * <p>Description: </p>
13  * <p>Copyright: Copyright (c) 2003</p>
14  * <p>Company: </p>
15  * @author unascribed
16  * @version 1.0
17  */

18
19 public class SimpleEscapeSpecialComparator extends SimpleEscapeComparator {
20
21    public SimpleEscapeSpecialComparator(SRESERVEDWORD1206543922escapecharacter escpaeCharacter0, Object JavaDoc object0, boolean firstClob0, boolean secondClob0, boolean thirdClob0) {
22       super(escpaeCharacter0, object0, firstClob0, secondClob0, thirdClob0);
23    }
24
25    public int compare(_DComparator leftMatchValue0, _DComparator rightPattern0) throws DException {
26       FieldBase escapeCharacter1 = ( (FieldBase[]) escpaeCharacter11.run(object))[0];
27
28       char[] matchValue = firstClob ? getValueForClob(leftMatchValue0)
29           : ( (String JavaDoc) ( (FieldBase) leftMatchValue0).getObject()).toLowerCase().toCharArray();
30       char[] matchPattern = secondClob ? getValueForClob(rightPattern0)
31           : ( (String JavaDoc) ( (FieldBase) rightPattern0).getObject()).toLowerCase().toCharArray();
32       char[] escapeArray = thirdClob ? getValueForClob(escapeCharacter1)
33           : ( (String JavaDoc) escapeCharacter1.getObject()).toCharArray();
34       if (escapeArray.length != 1) {
35          throw new DException("DSE0", new Object JavaDoc[] {"Invalid escape character '" + new String JavaDoc(escapeArray) + "' was specified in a LIKE predicate."});
36       }
37       escapeCharacter = Character.toLowerCase(escapeArray[0]);
38       return compareEscapeLike(matchValue, matchPattern);
39    }
40
41    private char[] getValueForClob(_DComparator value) throws DException {
42       DClobUpdatable clob = (DClobUpdatable) value;
43       try {
44          return clob.getSubString(1, (int) clob.length()).toLowerCase().toCharArray();
45       } catch (SQLException ex) {
46          throw new DException("DSE0", new Object JavaDoc[] {"" + ex});
47       }
48    }
49
50 }
51
Popular Tags