KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > expression > datetimevalueexpression > daynamefunction


1 package com.daffodilwoods.daffodildb.server.sql99.expression.datetimevalueexpression;
2
3 import java.sql.*;
4 import java.sql.Date JavaDoc;
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 /*AbstractDateTimeValueFunction*/ implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter,/* datetimevaluefunction*/charactervaluefunction , TypeConstants, Datatypes {
21    public Srightparen_1874859514 _Srightparen_18748595140;
22    public datetimevalueexpression _datetimevalueexpression1;
23    public Sleftparen653880241 _Sleftparen6538802412;
24    public SNONRESERVEDWORD136444255 _SNONRESERVEDWORD1364442553;
25    private String JavaDoc[] DAYNAMES = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
26
27      public Object JavaDoc run(Object JavaDoc 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 JavaDoc getResult(int type, Object JavaDoc 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 JavaDoc number = (Number JavaDoc) object;
52             calendar.set(Calendar.DAY_OF_WEEK, number.intValue());
53             return new FieldStringLiteral(new String JavaDoc(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 JavaDoc[] {StaticClass.getDataTypeName(type)});
65          case CHARACTER:
66          case VARCHAR:
67          case CHAR:
68          case CHARACTERVARYING:
69            String JavaDoc string = (String JavaDoc) object;
70            try {
71              Timestamp timestamp = TypeValidityHandler.getTimestamp(string);
72              Date JavaDoc d1 = new com.daffodilwoods.daffodildb.utils.DBDate(timestamp.getTime());
73              calendar.setTime(d1);
74              return new FieldStringLiteral(new String JavaDoc(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER);
75            }
76            catch (DException ex) {
77              try {
78                Object JavaDoc dateObj = TypeValidityHandler.getDBDate(string);
79                Date JavaDoc d2 = (Date JavaDoc)dateObj;
80                calendar.setTime(d2);
81                return new FieldStringLiteral(new String JavaDoc(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 JavaDoc d = new com.daffodilwoods.daffodildb.utils.DBDate(time.getTime());
87                  calendar.setTime(d);
88                  return new FieldStringLiteral(new String JavaDoc(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 JavaDoc(string).intValue());
93                    return new FieldStringLiteral(new String JavaDoc(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) % 7]), Datatype.CHARACTER);
94                  }
95                  catch (NumberFormatException JavaDoc ex3) {
96                    throw new DException("DSE419", new Object JavaDoc[] {string});
97                  }
98                }
99              }
100            }
101          case DATE:
102             Date JavaDoc d2 = (Date JavaDoc) object;
103             calendar.setTime(d2);
104             return new FieldStringLiteral(new String JavaDoc(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER);
105          case TIME:
106             Time time = (Time) object;
107             Date JavaDoc d = new com.daffodilwoods.daffodildb.utils.DBDate(time.getTime());
108             calendar.setTime(d);
109             return new FieldStringLiteral(new String JavaDoc(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER);
110          case TIMESTAMP:
111             Timestamp time1 = (Timestamp) object;
112             Date JavaDoc d1 = new com.daffodilwoods.daffodildb.utils.DBDate(time1.getTime());
113             calendar.setTime(d1);
114             return new FieldStringLiteral(new String JavaDoc(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) - 1]), Datatype.CHARACTER);
115          default:
116             throw new DException("DSE419", new Object JavaDoc[] {"DAYNAME"});
117       }
118    }
119
120    /* protected Object getResult(int type,Object object) throws DException {
121       if(object == null)
122     return new FieldStringLiteral(FieldUtility.NULLBUFFERRANGE,Datatype.CHARACTER);
123       GregorianCalendar calendar = new GregorianCalendar();
124     switch(type){
125       case BYTE : case TINYINT :
126         calendar.set(Calendar.DATE, ((Byte)object).intValue() );
127         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
128       case INTEGER : case INT :
129         Integer integer = (Integer)object;
130         calendar.set(Calendar.DATE,integer.intValue());
131         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
132       case REAL :
133         Float floatV = (Float)object;
134         calendar.set(Calendar.DATE,floatV.intValue());
135         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
136       case DOUBLE : case FLOAT : case DOUBLEPRECISION :
137         Double doubleV = (Double)object;
138         calendar.set(Calendar.DATE,doubleV.intValue());
139         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
140       case LONG : case BIGINT :
141         Long longV = (Long)object;
142         calendar.set(Calendar.DATE,longV.intValue());
143         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
144       case SHORT : case SMALLINT :
145         Short shortV = (Short)object;
146         calendar.set(Calendar.DATE,shortV.intValue());
147         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
148       case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
149         BigDecimal bigDecimal = (BigDecimal)object;
150         calendar.set(Calendar.DATE,bigDecimal.intValue());
151         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
152       case CHARACTER :case VARCHAR: case CHAR: case CHARACTERVARYING:
153         throw new DException("DSE537",null);
154       case DATE :
155         Date d2 = (Date)object;
156         calendar.setTime(d2);
157         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
158       case TIME :
159         Time time = (Time)object;
160         Date d = new com.daffodilwoods.daffodildb.utils.DBDate(time.getTime());
161         calendar.setTime(d);
162         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
163       case TIMESTAMP :
164         Timestamp time1 = (Timestamp)object;
165         Date d1 = new com.daffodilwoods.daffodildb.utils.DBDate(time1.getTime());
166         calendar.setTime(d1);
167         return new FieldStringLiteral(new String(DAYNAMES[calendar.get(Calendar.DAY_OF_WEEK) -1]),Datatype.CHARACTER);
168       default :
169         throw new DException("DSE419",new Object[]{"DAYNAME"});
170     }
171     } */

172
173    public AbstractRowValueExpression[] getChilds() {
174       AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] { (AbstractRowValueExpression) (_datetimevalueexpression1)};
175       return childs;
176
177    }
178
179
180    public String JavaDoc toString() {
181       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
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 JavaDoc clone() throws CloneNotSupportedException JavaDoc {
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 JavaDoc 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 JavaDoc getType() throws DException {
210       return (String JavaDoc) _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 JavaDoc[] {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 JavaDoc 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 /*
274    public static void main(String[] args) {
275       String[] DAYNAMES = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
276       GregorianCalendar c = new GregorianCalendar();
277       c.set(Calendar.DAY_OF_WEEK, 7);
278    }
279 /*/

280 }
281
Popular Tags