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 18 19 public class SimpleEscapeSpecialComparator extends SimpleEscapeComparator { 20 21 public SimpleEscapeSpecialComparator(SRESERVEDWORD1206543922escapecharacter escpaeCharacter0, Object 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 ) ( (FieldBase) leftMatchValue0).getObject()).toLowerCase().toCharArray(); 30 char[] matchPattern = secondClob ? getValueForClob(rightPattern0) 31 : ( (String ) ( (FieldBase) rightPattern0).getObject()).toLowerCase().toCharArray(); 32 char[] escapeArray = thirdClob ? getValueForClob(escapeCharacter1) 33 : ( (String ) escapeCharacter1.getObject()).toCharArray(); 34 if (escapeArray.length != 1) { 35 throw new DException("DSE0", new Object [] {"Invalid escape character '" + new String (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 [] {"" + ex}); 47 } 48 } 49 50 } 51 | Popular Tags |