KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > expression > numericvalueexpression > atan2function


1 package com.daffodilwoods.daffodildb.server.sql99.expression.numericvalueexpression;
2
3 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*;
4 import com.daffodilwoods.daffodildb.server.serversystem.*;
5 import com.daffodilwoods.daffodildb.server.sql99.common.*;
6 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*;
7 import com.daffodilwoods.daffodildb.server.sql99.token.*;
8 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
9 import com.daffodilwoods.daffodildb.utils.*;
10 import com.daffodilwoods.daffodildb.utils.field.*;
11 import com.daffodilwoods.database.resource.*;
12
13 public class atan2function extends AbstractNumericValueFunction {
14
15    public parencommanumericvalueexpression _parencommanumericvalueexpression0;
16    public SNONRESERVEDWORD136444255 _SNONRESERVEDWORD1364442551;
17
18    public Object JavaDoc run(Object JavaDoc object) throws com.daffodilwoods.database.resource.DException {
19       FieldBase[] res = GeneralPurposeStaticClass.changeIntoFieldBase( (Object JavaDoc[]) _parencommanumericvalueexpression0.run(object));
20       FieldBase result1 = res[0];
21       FieldBase result2 = res[1];
22       if (result1.isNull() || result2.isNull()) {
23          return new FieldLiteral(FieldUtility.NULLBUFFERRANGE, DOUBLE);
24       }
25       return getResult(getDataType(result1), getDataType(result2), result1.getObject(), result2.getObject());
26    }
27
28    public ColumnDetails[] getExistingColumnDetails() throws DException {
29       return columnDetails;
30    }
31
32    public ParameterInfo[] getParameterInfo() throws DException {
33      ParameterInfo[] paramInfo = super.getParameterInfo();
34      for (int i = 0; i < paramInfo.length; i++) {
35        if (paramInfo[i].getQuestionMark()) {
36          paramInfo[i].setDataType(Datatypes.DOUBLE);
37          paramInfo[i].setName("ATAN2 Arg");
38        }
39      }
40      return paramInfo;
41    }
42
43    private Object JavaDoc getResult(int type1, int type2, Object JavaDoc result1, Object JavaDoc result2) throws DException {
44       if (type1 <= 15) {
45          double operand1 = ( (Number JavaDoc) result1).doubleValue();
46          if (type2 <= 15) {
47             double operand2 = ( (Number JavaDoc) result2).doubleValue();
48             return new FieldLiteral(new Double JavaDoc(Math.atan2(operand1, operand2)), Datatype.DOUBLE);
49          } else {
50             throw new DException("DSE4108", new Object JavaDoc[] {StaticClass.getDataTypeName(type2), "ATAN2"});
51          }
52       } else {
53          throw new DException("DSE4108", new Object JavaDoc[] {StaticClass.getDataTypeName(type1), "ATAN2"});
54       }
55       /* switch(type1){
56          case BYTE : case TINYINT :
57          case SHORT : case SMALLINT :
58          case INTEGER : case INT :
59          case LONG : case BIGINT :
60          case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
61          case REAL :
62          case DOUBLE : case FLOAT : case DOUBLEPRECISION :
63          double operand1 = ((Number)result1).doubleValue();
64              switch(type2){
65                case BYTE : case TINYINT :
66                case SHORT : case SMALLINT :
67                case INTEGER : case INT :
68                case LONG : case BIGINT :
69                case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
70                case REAL :
71                case DOUBLE : case FLOAT : case DOUBLEPRECISION :
72                double operand2 = ((Number)result2).doubleValue();
73                return new FieldLiteral(new Double(Math.atan2(operand1,operand2)),Datatype.DOUBLE);
74                default:
75                throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type2),"ATAN2"});
76              }
77            default:
78              throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type1),"ATAN2"});
79        }*/

80    }
81
82    /* private Object getResult(int type1,int type2,Object result1,Object result2) throws DException {
83           switch(type1){
84             case BYTE : case TINYINT :
85                 double operand23 = ((Byte)result1).doubleValue();
86                 switch(type2){
87                   case BYTE : case TINYINT :
88                       Byte byte1 = (Byte)result2;
89                       return new FieldLiteral(new Double(Math.atan2(operand23,byte1.doubleValue())),Datatype.DOUBLE);
90                     case SHORT : case SMALLINT :
91                       double s23 = ((Short)result2).doubleValue();
92                       return new FieldLiteral(new Double(Math.atan2(operand23,s23)),Datatype.DOUBLE);
93                     case INTEGER : case INT :
94                       double s24 = ((Integer)result2).doubleValue();
95                       return new FieldLiteral(new Double(Math.atan2(operand23,s24)),Datatype.DOUBLE);
96                     case LONG : case BIGINT :
97                       double s25 = ((Long)result2).doubleValue();
98                       return new FieldLiteral(new Double(Math.atan2(operand23,s25)),Datatype.DOUBLE);
99                     case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
100                       double s26 = ((BigDecimal)result2).doubleValue();
101                       return new FieldLiteral(new Double(Math.atan2(operand23,s26)),Datatype.DOUBLE);
102                    case REAL :
103                       double s27 = ((Float)result2).doubleValue();
104                       return new FieldLiteral(new Double(Math.atan2(operand23,s27)),Datatype.DOUBLE);
105                    case DOUBLE : case FLOAT : case DOUBLEPRECISION :
106                       double s28 = ((Double)result2).doubleValue();
107                       return new FieldLiteral(new Double(Math.atan2(operand23,s28)),Datatype.DOUBLE);
108                       default:
109                         throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type2),"ATAN2"});
110                 }
111               case SHORT : case SMALLINT :
112                 double operand = ((Short)result1).doubleValue();
113                 switch(type2){
114                   case BYTE : case TINYINT :
115                       Byte byte2 = (Byte)result2;
116                       return new FieldLiteral(new Double(Math.atan2(operand,byte2.doubleValue())),Datatype.DOUBLE);
117                     case SHORT : case SMALLINT :
118                       double s1 = ((Short)result2).doubleValue();
119                       return new FieldLiteral(new Double(Math.atan2(operand,s1)),Datatype.DOUBLE);
120                     case INTEGER : case INT :
121                       double s2 = ((Integer)result2).doubleValue();
122                       return new FieldLiteral(new Double(Math.atan2(operand,s2)),Datatype.DOUBLE);
123                     case LONG : case BIGINT :
124                       double s3 = ((Long)result2).doubleValue();
125                       return new FieldLiteral(new Double(Math.atan2(operand,s3)),Datatype.DOUBLE);
126                     case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
127                       double b1 = ((BigDecimal)result2).doubleValue();
128                       return new FieldLiteral(new Double(Math.atan2(operand,b1)),Datatype.DOUBLE);
129                    case REAL :
130                       double s4 = ((Float)result2).doubleValue();
131                       return new FieldLiteral(new Double(Math.atan2(operand,s4)),Datatype.DOUBLE);
132                    case DOUBLE : case FLOAT : case DOUBLEPRECISION :
133                       double s5 = ((Double)result2).doubleValue();
134                       return new FieldLiteral(new Double(Math.atan2(operand,s5)),Datatype.DOUBLE);
135                     default:
136                       throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type2),"ATAN2"});
137                 }
138               case INTEGER : case INT :
139                 double operand1 = ((Integer)result1).doubleValue();
140                 switch(type2){
141                   case BYTE : case TINYINT :
142                       Byte byte3 = (Byte)result2;
143                       return new FieldLiteral(new Double(Math.atan2(operand1,byte3.doubleValue())),Datatype.DOUBLE);
144                     case SHORT : case SMALLINT :
145                       double s6 = ((Short)result2).doubleValue();
146                       return new FieldLiteral(new Double(Math.atan2(operand1,s6)),Datatype.DOUBLE);
147                     case INTEGER : case INT :
148                       double operand2 = ((Integer)result2).doubleValue();
149                       return new FieldLiteral(new Double(Math.atan2(operand1,operand2)),Datatype.DOUBLE);
150                     case LONG : case BIGINT :
151                       double operand3 = ((Long)result2).doubleValue();
152                       return new FieldLiteral(new Double(Math.atan2(operand1,operand3)),Datatype.DOUBLE);
153                     case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
154                       double b2 = ((BigDecimal)result2).doubleValue();
155                       return new FieldLiteral(new Double(Math.atan2(operand1,b2)),Datatype.DOUBLE);
156                    case REAL :
157                       double operand4 = ((Float)result2).doubleValue();
158                       return new FieldLiteral(new Double(Math.atan2(operand1,operand4)),Datatype.DOUBLE);
159                    case DOUBLE : case FLOAT : case DOUBLEPRECISION :
160                       double operand5 = ((Double)result2).doubleValue();
161                       return new FieldLiteral(new Double(Math.atan2(operand1,operand5)),Datatype.DOUBLE);
162                     default:
163                       throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type2),"ATAN2"});
164                 }
165               case LONG : case BIGINT :
166                 double operand11 = ((Long)result1).doubleValue();
167                 switch(type2){
168                   case BYTE : case TINYINT :
169                       Byte byte3 = (Byte)result2;
170                       return new FieldLiteral(new Double(Math.atan2(operand11,byte3.doubleValue())),Datatype.DOUBLE);
171                     case SHORT : case SMALLINT :
172                       double s7 = ((Short)result2).doubleValue();
173                       return new FieldLiteral(new Double(Math.atan2(operand11,s7)),Datatype.DOUBLE);
174                     case INTEGER : case INT :
175                       double operand6 = ((Integer)result2).doubleValue();
176                       return new FieldLiteral(new Double(Math.atan2(operand11,operand6)),Datatype.DOUBLE);
177                     case LONG : case BIGINT :
178                       double operand7 = ((Long)result2).doubleValue();
179                       return new FieldLiteral(new Double(Math.atan2(operand11,operand7)),Datatype.DOUBLE);
180                     case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
181                       double b3 = ((BigDecimal)result2).doubleValue();
182                       return new FieldLiteral(new Double(Math.atan2(operand11,b3)),Datatype.DOUBLE);
183                    case REAL :
184                       double operand8 = ((Float)result2).doubleValue();
185                       return new FieldLiteral(new Double(Math.atan2(operand11,operand8)),Datatype.DOUBLE);
186                    case DOUBLE : case FLOAT : case DOUBLEPRECISION :
187                       double operand9 = ((Double)result2).doubleValue();
188                       return new FieldLiteral(new Double(Math.atan2(operand11,operand9)),Datatype.DOUBLE);
189                     default:
190                       throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type2),"ATAN2"});
191                 }
192               case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
193                 double bigD = ((BigDecimal)result1).doubleValue();
194                 switch(type2){
195                   case BYTE : case TINYINT :
196                       Byte byte4 = (Byte)result2;
197                       return new FieldLiteral(new Double(Math.atan2(bigD,byte4.doubleValue())),Datatype.DOUBLE);
198                     case SHORT : case SMALLINT :
199                       double d1 = ((Short)result2).doubleValue();
200                       return new FieldLiteral(new Double(Math.atan2(bigD,d1)),Datatype.DOUBLE);
201                     case INTEGER : case INT :
202                       double d2 = ((Integer)result2).doubleValue();
203                       return new FieldLiteral(new Double(Math.atan2(bigD,d2)),Datatype.DOUBLE);
204                     case LONG : case BIGINT :
205                       double d3 = ((Long)result2).doubleValue();
206                       return new FieldLiteral(new Double(Math.atan2(bigD,d3)),Datatype.DOUBLE);
207                     case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
208                       return new FieldLiteral(new Double(Math.atan2(bigD,((BigDecimal)result2).doubleValue())),Datatype.DOUBLE);
209                    case REAL :
210                       double d4 = ((Float)result2).doubleValue();
211                       return new FieldLiteral(new Double(Math.atan2(bigD,d4)),Datatype.DOUBLE);
212                    case DOUBLE : case FLOAT : case DOUBLEPRECISION :
213                       double d5 = ((Double)result2).doubleValue();
214                       return new FieldLiteral(new Double(Math.atan2(bigD,d5)),Datatype.DOUBLE);
215                     default:
216                       throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type2),"ATAN2"});
217                 }
218              case REAL :
219                 double operand111 = ((Float)result1).doubleValue();
220                 switch(type2){
221                   case BYTE : case TINYINT :
222                       Byte byte5 = (Byte)result2;
223                       return new FieldLiteral(new Double(Math.atan2(operand111,byte5.doubleValue())),Datatype.DOUBLE);
224                     case SHORT : case SMALLINT :
225                       double s8 = ((Short)result2).doubleValue();
226                       return new FieldLiteral(new Double(Math.atan2(operand111,s8)),Datatype.DOUBLE);
227                     case INTEGER : case INT :
228                       double operand12 = ((Integer)result2).intValue();
229                       return new FieldLiteral(new Double(Math.atan2(operand111,operand12)),Datatype.DOUBLE);
230                     case LONG : case BIGINT :
231                       double operand13 = ((Long)result2).doubleValue();
232                       return new FieldLiteral(new Double(Math.atan2(operand111,operand13)),Datatype.DOUBLE);
233                     case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
234                       double b4 = ((BigDecimal)result2).doubleValue();
235                       return new FieldLiteral(new Double(Math.atan2(operand111,b4)),Datatype.DOUBLE);
236                    case REAL :
237                       double operand14 = ((Float)result2).doubleValue();
238                       return new FieldLiteral(new Double(Math.atan2(operand111,operand14)),Datatype.DOUBLE);
239                    case DOUBLE : case FLOAT : case DOUBLEPRECISION :
240                       double operand15 = ((Double)result2).doubleValue();
241                       return new FieldLiteral(new Double(Math.atan2(operand111,operand15)),Datatype.DOUBLE);
242                     default:
243                       throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type2),"ATAN2"});
244                 }
245              case DOUBLE : case FLOAT : case DOUBLEPRECISION :
246                 double operand1111 = ((Double)result1).doubleValue();
247                 switch(type2){
248                   case BYTE : case TINYINT :
249                       Byte byte6 = (Byte)result2;
250                       return new FieldLiteral(new Double(Math.atan2(operand1111,byte6.doubleValue())),Datatype.DOUBLE);
251                     case SHORT : case SMALLINT :
252                       double s9 = ((Short)result2).doubleValue();
253                       return new FieldLiteral(new Double(Math.atan2(operand1111,s9)),Datatype.DOUBLE);
254                     case INTEGER : case INT :
255                       double operand16 = ((Integer)result2).doubleValue();
256                       return new FieldLiteral(new Double(Math.atan2(operand1111,operand16)),Datatype.DOUBLE);
257                     case LONG : case BIGINT :
258                       double operand17 = ((Long)result2).doubleValue();
259                       return new FieldLiteral(new Double(Math.atan2(operand1111,operand17)),Datatype.DOUBLE);
260                     case BIGDECIMAL : case DEC : case DECIMAL : case NUMERIC :
261                       double b5 = ((BigDecimal)result2).doubleValue();
262                       return new FieldLiteral(new Double(Math.atan2(operand1111,b5)),Datatype.DOUBLE);
263                    case REAL :
264                       double operand18 = ((Float)result2).doubleValue();
265                       return new FieldLiteral(new Double(Math.atan2(operand1111,operand18)),Datatype.DOUBLE);
266                    case DOUBLE : case FLOAT : case DOUBLEPRECISION :
267                       double operand19 = ((Double)result2).doubleValue();
268                       return new FieldLiteral(new Double(Math.atan2(operand1111,operand19)),Datatype.DOUBLE);
269                     default:
270                       throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type2),"ATAN2"});
271                 }
272               default:
273                 throw new DException("DSE4108",new Object[]{StaticClass.getDataTypeName(type1),"ATAN2"});
274           }
275        } */

276
277    public AbstractRowValueExpression[] getChilds() {
278       AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] {_parencommanumericvalueexpression0};
279       return childs;
280    }
281
282    public String JavaDoc getType() throws DException {
283       return (String JavaDoc) _SNONRESERVEDWORD1364442551.run(null);
284    }
285
286    public String JavaDoc toString() {
287       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
288       sb.append(" ");
289       sb.append(_SNONRESERVEDWORD1364442551);
290       sb.append(_parencommanumericvalueexpression0);
291       return sb.toString();
292    }
293
294    public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
295       atan2function tempClass = new atan2function();
296       tempClass._parencommanumericvalueexpression0 = (parencommanumericvalueexpression) _parencommanumericvalueexpression0.clone();
297       tempClass._SNONRESERVEDWORD1364442551 = (SNONRESERVEDWORD136444255) _SNONRESERVEDWORD1364442551.clone();
298       return tempClass;
299    }
300
301    public ByteComparison getByteComparison(Object JavaDoc object) throws DException {
302    ByteComparison byteComparison =new ByteComparison(false, new int[] {DOUBLE});
303    byteComparison.setSize(getColumnSize(object));
304    return byteComparison;
305    }
306
307    public _Reference[] checkSemantic(_ServerSession parent) throws DException {
308       _Reference[] ref = super.checkSemantic(parent);
309       if(ref!=null) {
310             return ref;
311           }
312       int[] type = _parencommanumericvalueexpression0.getByteComparison(parent).getDataTypes();
313       if (type[0] <= 15 || type[0] == -1) {
314          if (type[1] <= 15 || type[1] == -1) {
315             return ref;
316          }
317          throw new DException("DSE4108",
318                               new Object JavaDoc[] {StaticClass.getDataTypeName(type[1]),
319                               "ATAN2"});
320       }
321       throw new DException("DSE4108",
322                            new Object JavaDoc[] {StaticClass.getDataTypeName(type[0]),
323                            "ATAN2"});
324
325    }
326  public int getColumnSize(Object JavaDoc object) throws DException {
327           return Datatypes.DOUBLESIZE;
328     }
329
330 }
331
Popular Tags