KickJava   Java API By Example, From Geeks To Geeks.

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


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 JavaDoc run(Object JavaDoc 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      /* The initcap function sets the first character in each word to uppercase and the rest to lowercase.
36         The syntax for the initcap function is:
37         initcap (string1)
38         string1 is the string argument whose first character in each word will be converted to uppercase and all remaining characters converted to lowercase.
39         For example:
40         initcap ('tech on the net'); would return 'Tech On The Net'
41         initcap ('GEORGE BURNS'); would return 'George Burns'
42      */

43
44         private Object JavaDoc initCap(String JavaDoc query) {
45         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
46         StringTokenizer st = new StringTokenizer(query, " ");
47         char first, firstCap;
48         while (st.hasMoreTokens()) {
49         String JavaDoc 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 JavaDoc getResult(int type, Object JavaDoc 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 JavaDoc operand = (Number JavaDoc) object;
79          return initCap(operand.toString());
80       case CHARACTER:
81       case VARCHAR:
82       case CHAR:
83       case CHARACTERVARYING:
84          String JavaDoc string = (String JavaDoc) object;
85          return initCap(string);
86       default:
87          throw new DException("DSE514", new Object JavaDoc[] {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 JavaDoc getNameOfColumn(ColumnDetails[] columnDetails) throws DException {
112       String JavaDoc nameOfColumn = "";
113       for (int i = 0; i < columnDetails.length; ++i) {
114          nameOfColumn += columnDetails[i].getColumn();
115       }
116       return nameOfColumn;
117    }
118
119       public String JavaDoc toString() {
120     StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
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       /**
133         * clone
134         *
135         * @return Object
136         */

137        public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
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        /**
152         * getByteComparison
153         *
154         * @param object Object
155         * @return ByteComparison
156         */

157        public ByteComparison getByteComparison(Object JavaDoc 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        /**
166         * getChildColumnDetails
167         *
168         * @return ColumnDetails[]
169         */

170
171        public ColumnDetails[] getChildColumnDetails() throws DException{
172          return columnDetails;
173        }
174
175        /**
176         * getChilds
177         *
178         * @return AbstractRowValueExpression[]
179         */

180        public AbstractRowValueExpression[] getChilds() {
181          AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] {
182              (AbstractRowValueExpression) (_charactervalueexpression1)};
183          return childs;
184        }
185
186
187        /**
188         * getType
189         *
190         * @return String
191         */

192        public String JavaDoc getType() throws DException {
193           return (String JavaDoc) _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 JavaDoc[] {StaticClass.getDataTypeName(type),
230                                       "INITCAP"});
231              }
232         }
233
234
235
236        public int getColumnSize(Object JavaDoc 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