KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > expression > stringvalueexpression > soundexfunction


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 JavaDoc run(Object JavaDoc 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 JavaDoc getResult(int type, Object JavaDoc result) throws DException {
62
63       switch (type) {
64          case CHARACTER:
65          case VARCHAR:
66          case CHAR:
67          case CHARACTERVARYING:
68             String JavaDoc string = (String JavaDoc) result;
69             return new FieldStringLiteral(Soundex.soundex(string), Datatype.CHARACTER);
70       }
71       throw new DException("DSE4108", new Object JavaDoc[] {StaticClass.getDataTypeName(type), "soundex"});
72
73    }
74
75    /*private int getDataType(Object object) throws DException {
76      if (object instanceof String)
77        return CHARACTER;
78      else
79        throw new DException("DSE4112",new Object[]{"Soundex","character"});
80       }*/

81
82    protected String JavaDoc getNameOfColumn(ColumnDetails[] columnDetails) throws
83        DException {
84       String JavaDoc 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 JavaDoc getType() throws DException {
109       return (String JavaDoc) _SNONRESERVEDWORD1364442553.run(null);
110    }
111
112    public String JavaDoc toString() {
113       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
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 JavaDoc clone() throws CloneNotSupportedException JavaDoc {
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 JavaDoc[] {StaticClass.getDataTypeName(type), "soundex"});
153
154    }
155
156    public int getColumnSize(Object JavaDoc 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