1 package com.daffodilwoods.daffodildb.server.sql99.expression. 2 stringvalueexpression; 3 4 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*; 5 import com.daffodilwoods.daffodildb.server.serversystem.*; 6 import com.daffodilwoods.daffodildb.server.sql99.common.*; 7 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*; 8 import com.daffodilwoods.daffodildb.server.sql99.token.*; 9 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 10 import com.daffodilwoods.daffodildb.utils.*; 11 import com.daffodilwoods.daffodildb.utils.field.*; 12 import com.daffodilwoods.database.resource.*; 13 import in.co.daffodil.db.jdbc.DatabaseProperties; 14 15 public class soundexfunction extends AbstractStringValueExpression implements charactervaluefunction { 16 17 public Srightparen_1874859514 _Srightparen_18748595140; 18 public charactervalueexpression _charactervalueexpression1; 19 public Sleftparen653880241 _Sleftparen6538802412; 20 public SNONRESERVEDWORD136444255 _SNONRESERVEDWORD1364442553; 21 22 int type = -1; 23 24 public Object run(Object object) throws com.daffodilwoods.database.resource. 25 DException { 26 27 FieldBase result = (FieldBase) _charactervalueexpression1.run(object); 28 if (result.isNull()) { 29 return new FieldStringLiteral(FieldUtility.NULLBUFFERRANGE, CHARACTER); 30 } 31 return getResult(getDataType(result), result.getObject()); 32 33 } 34 35 public ColumnDetails[] getChildColumnDetails() throws DException { 36 return columnDetails; 37 } 38 39 40 public ParameterInfo[] getParameterInfo() throws DException { 41 42 ParameterInfo[] parameterInfo1 = _charactervalueexpression1.getParameterInfo(); 43 for (int i = 0; i < parameterInfo1.length; i++) { 44 if (parameterInfo1[i].getQuestionMark()) { 45 parameterInfo1[i].setDataType(Datatypes.CHARACTER); 46 parameterInfo1[i].setName("SOUNDEX Arg"); 47 return parameterInfo1; 48 } 49 } 50 return getThisParameterInfo(); 51 } 52 53 protected ParameterInfo[] getThisParameterInfo() throws DException { 54 ParameterInfo parameterInfo = new ParameterInfo(); 55 parameterInfo.setName(toString()); 56 parameterInfo.setDataType(Datatypes.CHARACTER); 57 return new ParameterInfo[] {parameterInfo}; 58 } 59 60 61 private Object getResult(int type, Object result) throws DException { 62 63 switch (type) { 64 case CHARACTER: 65 case VARCHAR: 66 case CHAR: 67 case CHARACTERVARYING: 68 String string = (String ) result; 69 return new FieldStringLiteral(Soundex.soundex(string), Datatype.CHARACTER); 70 } 71 throw new DException("DSE4108", new Object [] {StaticClass.getDataTypeName(type), "soundex"}); 72 73 } 74 75 81 82 protected String getNameOfColumn(ColumnDetails[] columnDetails) throws 83 DException { 84 String nameOfColumn = ""; 85 for (int i = 0; i < columnDetails.length; ++i) { 86 nameOfColumn += columnDetails[i].getColumn(); 87 } 88 return nameOfColumn; 89 } 90 91 private ColumnDetails[] mergeColumnDetails(ColumnDetails[] columnDetails) throws 92 DException { 93 ColumnDetails[] objectTarget = new ColumnDetails[columnDetails.length]; 94 int i = 0; 95 for (; i < columnDetails.length; ++i) { 96 objectTarget[i] = columnDetails[i]; 97 } 98 return objectTarget; 99 } 100 101 public AbstractRowValueExpression[] getChilds() { 102 AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] { 103 (AbstractRowValueExpression) (_charactervalueexpression1)}; 104 return childs; 105 106 } 107 108 public String getType() throws DException { 109 return (String ) _SNONRESERVEDWORD1364442553.run(null); 110 } 111 112 public String toString() { 113 StringBuffer sb = new StringBuffer (); 114 sb.append(" "); 115 sb.append(_SNONRESERVEDWORD1364442553); 116 sb.append(" "); 117 sb.append(_Sleftparen6538802412); 118 sb.append(" "); 119 sb.append(_charactervalueexpression1); 120 sb.append(" "); 121 sb.append(_Srightparen_18748595140); 122 return sb.toString(); 123 } 124 125 public Object clone() throws CloneNotSupportedException { 126 soundexfunction tempClass = new soundexfunction(); 127 tempClass._Srightparen_18748595140 = (Srightparen_1874859514) 128 _Srightparen_18748595140.clone(); 129 tempClass._charactervalueexpression1 = (charactervalueexpression) 130 _charactervalueexpression1.clone(); 131 tempClass._Sleftparen6538802412 = (Sleftparen653880241) 132 _Sleftparen6538802412.clone(); 133 tempClass._SNONRESERVEDWORD1364442553 = (SNONRESERVEDWORD136444255) 134 _SNONRESERVEDWORD1364442553.clone(); 135 return tempClass; 136 } 137 138 public _Reference[] checkSemantic(_ServerSession parent) throws DException { 139 _Reference[] ref = super.checkSemantic(parent); 140 if(ref!=null) { 141 return ref; 142 } 143 int type = _charactervalueexpression1.getByteComparison(parent).getDataTypes()[0]; 144 switch (type) { 145 case -1: 146 case CHARACTER: 147 case VARCHAR: 148 case CHAR: 149 case CHARACTERVARYING: 150 return ref; 151 } 152 throw new DException("DSE4108", new Object [] {StaticClass.getDataTypeName(type), "soundex"}); 153 154 } 155 156 public int getColumnSize(Object object) throws DException{ 157 ColumnDetails[] columnDetails = getChildColumnDetails(); 158 if (columnDetails[0].getQuestion()) { 159 return DatabaseProperties.maxCharLiteralLength; 160 } 161 else if (columnDetails[0].getType() != TypeConstants.CONSTANT || 162 columnDetails[0].getSize() != -5) { 163 return columnDetails[0].getSize(); 164 } 165 else { 166 FieldBase field = (FieldBase) _charactervalueexpression1.run(object); 167 field.setDatatype(columnDetails[0].getDatatype()); 168 return field.getLength(); 169 } 170 171 } 172 173 174 } 175 | Popular Tags |