1 package com.daffodilwoods.daffodildb.server.sql99.expression.datetimevalueexpression; 2 3 import java.sql.*; 4 import java.sql.Date ; 5 import java.util.*; 6 7 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*; 8 import com.daffodilwoods.daffodildb.server.serversystem.*; 9 import com.daffodilwoods.daffodildb.server.sql99.common.*; 10 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*; 11 import com.daffodilwoods.daffodildb.server.sql99.token.*; 12 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 13 import com.daffodilwoods.daffodildb.utils.*; 14 import com.daffodilwoods.daffodildb.utils.field.*; 15 import com.daffodilwoods.database.resource.*; 16 import com.daffodilwoods.daffodildb.server.sql99.expression.stringvalueexpression.charactervaluefunction; 17 import com.daffodilwoods.daffodildb.server.sql99.common.TypeConstants; 18 import com.daffodilwoods.daffodildb.server.sql99.expression.stringvalueexpression.AbstractStringValueExpression; 19 20 public class daynamefunction extends AbstractStringValueExpression implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter,charactervaluefunction , TypeConstants, Datatypes { 21 public Srightparen_1874859514 _Srightparen_18748595140; 22 public datetimevalueexpression _datetimevalueexpression1; 23 public Sleftparen653880241 _Sleftparen6538802412; 24 public SNONRESERVEDWORD136444255 _SNONRESERVEDWORD1364442553; 25 private String [] DAYNAMES = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}; 26 27 public Object run(Object object) throws com.daffodilwoods.database.resource.DException{ 28 FieldBase result = (FieldBase)_datetimevalueexpression1.run(object); 29 return (result.isNull()) ? 30 new FieldStringLiteral(FieldUtility.NULLBUFFERRANGE, CHARACTER) : 31 getResult(getDataType(result), result.getObject()); 32 } 33 34 35 protected ParameterInfo[] getThisParameterInfo() throws DException { 36 ParameterInfo parameterInfo = new ParameterInfo(); 37 parameterInfo.setName(toString()); 38 parameterInfo.setDataType(CHARACTER); 39 return new ParameterInfo[] {parameterInfo}; 40 } 41 42 protected Object getResult(int type, Object object) throws DException { 43 GregorianCalendar calendar = new GregorianCalendar(); 44 switch (type) { 45 case BYTE: 46 case TINYINT: 47 case SHORT: 48 case SMALLINT: 49 case INTEGER: 50 case INT: 51 Number number = (Number ) object; 52 calendar.set(Calendar.DAY_OF_WEEK, number.intValue()); 53 return new FieldStringLiteral(new String (DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) % 7]), Datatype.CHARACTER); 54 case REAL: 55 case DOUBLE: 56 case FLOAT: 57 case DOUBLEPRECISION: 58 case LONG: 59 case BIGINT: 60 case BIGDECIMAL: 61 case DEC: 62 case DECIMAL: 63 case NUMERIC: 64 throw new DException("DSE8106", new Object [] {StaticClass.getDataTypeName(type)}); 65 case CHARACTER: 66 case VARCHAR: 67 case CHAR: 68 case CHARACTERVARYING: 69 String string = (String ) object; 70 try { 71 Timestamp timestamp = TypeValidityHandler.getTimestamp(string); 72 Date d1 = new com.daffodilwoods.daffodildb.utils.DBDate(timestamp.getTime()); 73 calendar.setTime(d1); 74 return new FieldStringLiteral(new String (DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER); 75 } 76 catch (DException ex) { 77 try { 78 Object dateObj = TypeValidityHandler.getDBDate(string); 79 Date d2 = (Date )dateObj; 80 calendar.setTime(d2); 81 return new FieldStringLiteral(new String (DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER); 82 } 83 catch (DException ex1) { 84 try { 85 Time time = TypeValidityHandler.getTime(string); 86 Date d = new com.daffodilwoods.daffodildb.utils.DBDate(time.getTime()); 87 calendar.setTime(d); 88 return new FieldStringLiteral(new String (DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER); 89 } 90 catch (DException ex2) { 91 try { 92 calendar.set(Calendar.DAY_OF_WEEK, new Integer (string).intValue()); 93 return new FieldStringLiteral(new String (DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) % 7]), Datatype.CHARACTER); 94 } 95 catch (NumberFormatException ex3) { 96 throw new DException("DSE419", new Object [] {string}); 97 } 98 } 99 } 100 } 101 case DATE: 102 Date d2 = (Date ) object; 103 calendar.setTime(d2); 104 return new FieldStringLiteral(new String (DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER); 105 case TIME: 106 Time time = (Time) object; 107 Date d = new com.daffodilwoods.daffodildb.utils.DBDate(time.getTime()); 108 calendar.setTime(d); 109 return new FieldStringLiteral(new String (DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER); 110 case TIMESTAMP: 111 Timestamp time1 = (Timestamp) object; 112 Date d1 = new com.daffodilwoods.daffodildb.utils.DBDate(time1.getTime()); 113 calendar.setTime(d1); 114 return new FieldStringLiteral(new String (DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER); 115 default: 116 throw new DException("DSE419", new Object [] {"DAYNAME"}); 117 } 118 } 119 120 172 173 public AbstractRowValueExpression[] getChilds() { 174 AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] { (AbstractRowValueExpression) (_datetimevalueexpression1)}; 175 return childs; 176 177 } 178 179 180 public String toString() { 181 StringBuffer sb = new StringBuffer (); 182 sb.append(" "); 183 sb.append(_SNONRESERVEDWORD1364442553); 184 sb.append(" "); 185 sb.append(_Sleftparen6538802412); 186 sb.append(" "); 187 sb.append(_datetimevalueexpression1); 188 sb.append(" "); 189 sb.append(_Srightparen_18748595140); 190 return sb.toString(); 191 } 192 193 public Object clone() throws CloneNotSupportedException { 194 daynamefunction tempClass = new daynamefunction(); 195 tempClass._Srightparen_18748595140 = (Srightparen_1874859514) _Srightparen_18748595140.clone(); 196 tempClass._datetimevalueexpression1 = (datetimevalueexpression) _datetimevalueexpression1.clone(); 197 tempClass._Sleftparen6538802412 = (Sleftparen653880241) _Sleftparen6538802412.clone(); 198 tempClass._SNONRESERVEDWORD1364442553 = (SNONRESERVEDWORD136444255) _SNONRESERVEDWORD1364442553.clone(); 199 return tempClass; 200 } 201 202 203 public ByteComparison getByteComparison(Object object) throws DException { 204 ByteComparison byteComparison =new ByteComparison(false, new int[] {CHARACTER}); 205 byteComparison.setSize(getColumnSize(object)); 206 return byteComparison; 207 } 208 209 public String getType() throws DException { 210 return (String ) _SNONRESERVEDWORD1364442553.run(null); 211 } 212 213 public _Reference[] checkSemantic(_ServerSession parent) throws DException { 214 _Reference[] ref = super.checkSemantic(parent); 215 if(ref!=null) { 216 return ref; 217 } 218 int type = _datetimevalueexpression1.getByteComparison(parent).getDataTypes()[0]; 219 switch (type) { 220 case -1: 221 case BYTE: 222 case TINYINT: 223 case INTEGER: 224 case INT: 225 case REAL: 226 case DOUBLE: 227 case FLOAT: 228 case DOUBLEPRECISION: 229 case LONG: 230 case BIGINT: 231 case SHORT: 232 case SMALLINT: 233 case BIGDECIMAL: 234 case DEC: 235 case DECIMAL: 236 case NUMERIC: 237 case DATE: 238 case TIME: 239 case TIMESTAMP: 240 return ref; 241 case CHARACTER: 242 case VARCHAR: 243 case CHAR: 244 case CHARACTERVARYING: 245 default: 246 throw new DException("DSE419", new Object [] {StaticClass.getDataTypeName(type), "MONTH"}); 247 } 248 } 249 250 public ParameterInfo[] getParameterInfo() throws DException { 251 ParameterInfo[] paramInfo = super.getParameterInfo(); 252 for (int i = 0; i < paramInfo.length; i++) { 253 if (paramInfo[i].getQuestionMark()) { 254 paramInfo[i].setDataType(Datatypes.DATE); 255 paramInfo[i].setName("DAYNAME Arg"); 256 } 257 } 258 return paramInfo; 259 } 260 261 public int getColumnSize(Object object) throws DException { 262 int maximumLengthOfName=9; 263 return maximumLengthOfName; 264 } 265 266 267 public ColumnDetails[] getChildColumnDetails() throws DException { 268 return columnDetails; 269 } 270 271 272 273 280 } 281 | Popular Tags |