| 1 package com.daffodilwoods.daffodildb.server.sql99.expression.stringvalueexpression; 2 import com.daffodilwoods.database.resource.*; 3 import com.daffodilwoods.daffodildb.server.sql99.token.*; 4 import com.daffodilwoods.daffodildb.server.sql99.common.ColumnDetails; 5 import com.daffodilwoods.daffodildb.server.sql99.utils.ByteComparison; 6 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference; 7 import com.daffodilwoods.daffodildb.server.serversystem._ServerSession; 8 import com.daffodilwoods.daffodildb.server.sql99.common.ParameterInfo; 9 import java.util.*; 10 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression. 11 AbstractRowValueExpression; 12 import com.daffodilwoods.daffodildb.utils.field.*; 13 import com.daffodilwoods.daffodildb.utils.*; 14 import com.daffodilwoods.daffodildb.server.sql99.common.*; 15 import in.co.daffodil.db.jdbc.*; 16 17 public class initcapfunction extends AbstractStringValueExpression implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter ,charactervaluefunction { 18 19 public Srightparen_1874859514 _Srightparen_18748595140 ; 20 public charactervalueexpression _charactervalueexpression1 ; 21 public Sleftparen653880241 _Sleftparen6538802412 ; 22 public SNONRESERVEDWORD136444255 _SNONRESERVEDWORD1364442553 ; 23 24 public Object run(Object object) throws DException{ 25 FieldBase result = (FieldBase) _charactervalueexpression1.run(object); 26 if (result.isNull()) { 27 return new FieldStringLiteral(FieldUtility.NULLBUFFERRANGE, CHARACTER); 28 } 29 return getResult(getDataType(result), result.getObject()); 30 31 } 32 33 34 35 43 44 private Object initCap(String query) { 45 StringBuffer sb = new StringBuffer (); 46 StringTokenizer st = new StringTokenizer(query, " "); 47 char first, firstCap; 48 while (st.hasMoreTokens()) { 49 String token = st.nextToken(); 50 first = token.charAt(0); 51 firstCap = Character.toUpperCase(first); 52 sb.append(token.replaceFirst("" + first, "" + firstCap)); 53 if(st.hasMoreTokens()) 54 sb.append(" "); 55 } 56 return new FieldStringLiteral(sb.toString(), CHARACTER); 57 } 58 59 60 private Object getResult(int type, Object object) throws DException { 61 switch (type) { 62 case BYTE: 63 case TINYINT: 64 case INTEGER: 65 case INT: 66 case REAL: 67 case DOUBLE: 68 case FLOAT: 69 case DOUBLEPRECISION: 70 case LONG: 71 case BIGINT: 72 case SHORT: 73 case SMALLINT: 74 case BIGDECIMAL: 75 case DEC: 76 case DECIMAL: 77 case NUMERIC: 78 Number operand = (Number ) object; 79 return initCap(operand.toString()); 80 case CHARACTER: 81 case VARCHAR: 82 case CHAR: 83 case CHARACTERVARYING: 84 String string = (String ) object; 85 return initCap(string); 86 default: 87 throw new DException("DSE514", new Object [] {StaticClass.getDataTypeName(type)}); 88 } 89 } 90 91 public ParameterInfo[] getParameterInfo() throws DException { 92 ParameterInfo[] param =_charactervalueexpression1.getParameterInfo(); 93 for (int i = 0; i < param.length; i++) { 94 if (param[i].getQuestionMark()) { 95 param[i].setDataType(Datatypes.CHARACTER); 96 param[i].setName("INITCAP Arg"); 97 return param; 98 } 99 } 100 return getThisParameterInfo(); 101 } 102 103 protected ParameterInfo[] getThisParameterInfo() throws DException { 104 ParameterInfo parameterInfo = new ParameterInfo(); 105 parameterInfo.setName(toString()); 106 parameterInfo.setDataType(Datatypes.CHARACTER); 107 return new ParameterInfo[] {parameterInfo}; 108 } 109 110 111 protected String getNameOfColumn(ColumnDetails[] columnDetails) throws DException { 112 String nameOfColumn = ""; 113 for (int i = 0; i < columnDetails.length; ++i) { 114 nameOfColumn += columnDetails[i].getColumn(); 115 } 116 return nameOfColumn; 117 } 118 119 public String toString() { 120 StringBuffer sb = new StringBuffer (); 121 sb.append(" "); 122 sb.append(_SNONRESERVEDWORD1364442553); 123 sb.append(" "); 124 sb.append(_Sleftparen6538802412); 125 sb.append(" "); 126 sb.append(_charactervalueexpression1); 127 sb.append(" "); 128 sb.append(_Srightparen_18748595140); 129 return sb.toString(); 130 } 131 132 137 public Object clone() throws CloneNotSupportedException { 138 initcapfunction tempClass = new initcapfunction(); 139 tempClass._Srightparen_18748595140 = (Srightparen_1874859514) 140 _Srightparen_18748595140.clone(); 141 tempClass._charactervalueexpression1 = (charactervalueexpression) 142 _charactervalueexpression1.clone(); 143 tempClass._Sleftparen6538802412 = (Sleftparen653880241) 144 _Sleftparen6538802412.clone(); 145 tempClass._SNONRESERVEDWORD1364442553 = (SNONRESERVEDWORD136444255)_SNONRESERVEDWORD1364442553.clone(); 146 return tempClass; 147 } 148 149 150 151 157 public ByteComparison getByteComparison(Object object) throws DException { 158 ByteComparison byteComparison =new ByteComparison(false, new int[] {CHARACTER}); 159 int columnSize= getColumnSize(object); 160 byteComparison.setSize(columnSize); 161 return byteComparison; 162 163 } 164 165 170 171 public ColumnDetails[] getChildColumnDetails() throws DException{ 172 return columnDetails; 173 } 174 175 180 public AbstractRowValueExpression[] getChilds() { 181 AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] { 182 (AbstractRowValueExpression) (_charactervalueexpression1)}; 183 return childs; 184 } 185 186 187 192 public String getType() throws DException { 193 return (String ) _SNONRESERVEDWORD1364442553.run(null); 194 } 195 196 197 public _Reference[] checkSemantic(_ServerSession parent) throws DException { 198 _Reference[] ref = super.checkSemantic(parent); 199 if(ref!=null) { 200 return ref; 201 } 202 int type = _charactervalueexpression1.getByteComparison(parent). 203 getDataTypes()[0]; 204 switch (type) { 205 case -1: 206 case BYTE: 207 case TINYINT: 208 case INTEGER: 209 case INT: 210 case REAL: 211 case DOUBLE: 212 case FLOAT: 213 case DOUBLEPRECISION: 214 case LONG: 215 case BIGINT: 216 case SHORT: 217 case SMALLINT: 218 case BIGDECIMAL: 219 case DEC: 220 case DECIMAL: 221 case NUMERIC: 222 case CHARACTER: 223 case VARCHAR: 224 case CHAR: 225 case CHARACTERVARYING: 226 return ref; 227 default: 228 throw new DException("DSE514", 229 new Object [] {StaticClass.getDataTypeName(type), 230 "INITCAP"}); 231 } 232 } 233 234 235 236 public int getColumnSize(Object object) throws DException { 237 ColumnDetails[] columnDetails = getChildColumnDetails(); 238 if (columnDetails[0].getQuestion()) { 239 return DatabaseProperties.maxCharLiteralLength; 240 } 241 else if (columnDetails[0].getType() != TypeConstants.CONSTANT || 242 columnDetails[0].getSize() != -5) { 243 return columnDetails[0].getSize(); 244 } else { 245 FieldBase field = (FieldBase) _charactervalueexpression1.run(object); 246 field.setDatatype(columnDetails[0].getDatatype()); 247 return field.getLength(); 248 } 249 250 } 251 252 } 253 | Popular Tags |