001    package railo.commons.lang;
002    
003    
004    
005    public final class CFTypes {
006            // FUTURE sollten auch pattern wie zip unterstuetzt sein
007    
008        /**
009         * Field <code>TYPE_ANY</code>
010         */
011        public static final short TYPE_ANY=0;
012        /**
013         * Field <code>TYPE_ARRAY</code>
014         */
015        public static final short TYPE_ARRAY=1;
016        /**
017         * Field <code>TYPE_BOOLEAN</code>
018         */
019        public static final short TYPE_BASE64=20;
020        /**
021         * Field <code>TYPE_BOOLEAN</code>
022         */
023        public static final short TYPE_BOOLEAN=2;
024        /**
025         * Field <code>TYPE_BINARY</code>
026         */
027        public static final short TYPE_BINARY=3;
028        /**
029         * Field <code>TYPE_DATETIME</code>
030         */
031        public static final short TYPE_DATETIME=4;
032        /**
033         * Field <code>TYPE_NUMERIC</code>
034         */
035        public static final short TYPE_NUMERIC=5;
036        /**
037         * Field <code>TYPE_QUERY</code>
038         */
039        public static final short TYPE_QUERY=6;
040        /**
041         * Field <code>TYPE_STRING</code>
042         */
043        public static final short TYPE_STRING=7;
044        /**
045         * Field <code>TYPE_STRUCT</code>
046         */
047        public static final short TYPE_STRUCT=8;
048        /**
049         * Field <code>TYPE_TIMESPAN</code>
050         */
051        public static final short TYPE_TIMESPAN=9;
052        /**
053         * Field <code>TYPE_UUID</code>
054         */
055        public static final short TYPE_UUID=10;
056        /**
057         * Field <code>TYPE_VARIABLE_NAME</code>
058         */
059        public static final short TYPE_VARIABLE_NAME=11;
060        /**
061         * Field <code>TYPE_VARIABLE_STRING</code>
062         */
063        public static final short TYPE_VARIABLE_STRING=12;
064        /**
065         * Field <code>TYPE_UNKNOW</code>
066         */
067        public static final short TYPE_UNKNOW=-1;
068        /**
069         * Field <code>TYPE_UNKNOW</code>
070         */
071        public static final short TYPE_UNDEFINED=14;
072        /**
073         * Field <code>TYPE_VOID</code>
074         */
075        public static final short TYPE_VOID=15;
076        
077        /**
078         * Field <code>TYPE_XML</code>
079         */
080        public static final short TYPE_XML = 16;
081        
082        /**
083         * Field <code>TYPE_SIZE</code>
084         */
085        public static final short TYPE_SIZE = 21;
086    
087        public static final short TYPE_GUID = 22;
088        
089        /**
090             * Wandelt einen String Datentypen in ein CFML short Typ um.
091             * @param type
092             * @param defaultValue
093             * @return short Data Type
094             */
095            public static String toString(int type,String defaultValue) {
096                switch(type){
097                            case TYPE_ANY:return "any";
098                            case TYPE_ARRAY:return "array";
099                            case TYPE_BASE64:return "base64";
100                            case TYPE_BINARY:return "binary";
101                            case TYPE_BOOLEAN:return "boolean";
102                            case TYPE_DATETIME:return "datetime";
103                            case TYPE_GUID:return "guid";
104                            case TYPE_NUMERIC:return "numeric";
105                            case TYPE_QUERY:return "query";
106                            case TYPE_STRING:return "string";
107                            case TYPE_STRUCT:return "struct";
108                            case TYPE_TIMESPAN:return "timespan";
109                            case TYPE_UNDEFINED:return "any";
110                            case TYPE_UNKNOW:return "any";
111                            case TYPE_UUID:return "uuid";
112                            case TYPE_VARIABLE_NAME:return "variablename";
113                            case TYPE_VARIABLE_STRING:return "variablestring";
114                            case TYPE_VOID:return "void";
115                            case TYPE_XML:return "xml";
116                    }
117                    return defaultValue;
118        
119            }
120            
121            public static short toShortStrict(String type, short defaultValue) {
122                    type=type.toLowerCase().trim();
123                if(type.length()>2) {
124                    char first=type.charAt(0);
125                    switch(first) {
126                            case 'a':
127                                if(type.equals("any")) return TYPE_ANY;
128                                if(type.equals("array")) return TYPE_ARRAY;
129                            break;
130                            case 'b':
131                                if(type.equals("boolean") || type.equals("bool")) return TYPE_BOOLEAN;
132                                if(type.equals("binary")) return TYPE_BINARY;
133                                
134                            break;                  
135                            case 'd':
136                            if(type.equals("date") || type.equals("datetime"))      return TYPE_DATETIME;
137                            break; 
138                            case 'g':
139                            if("guid".equals(type))                                                         return TYPE_GUID;
140                        break;
141                        case 'n':
142                                if(type.equals("numeric")) return TYPE_NUMERIC;
143                                else if(type.equals("number")) return TYPE_NUMERIC;
144                                break;
145                            case 'o':
146                                if(type.equals("object")) return TYPE_ANY;
147                                break;
148                            case 'q':
149                                if(type.equals("query")) return TYPE_QUERY;
150                                break;
151                            case 's':
152                                if(type.equals("string")) return TYPE_STRING;
153                                else if(type.equals("struct")) return TYPE_STRUCT;
154                            break;
155                            case 't':
156                                if(type.equals("timespan")) return TYPE_TIMESPAN;
157                                if(type.equals("time")) return TYPE_DATETIME;
158                                if(type.equals("timestamp")) return TYPE_DATETIME;
159                                break;
160                            case 'u':
161                                if(type.equals("uuid")) return TYPE_UUID;
162                            break;
163                            case 'v':
164                                if(type.equals("variablename")) return TYPE_VARIABLE_NAME;
165                                if(type.equals("variable_name")) return TYPE_VARIABLE_NAME;
166                                if(type.equals("variablestring")) return TYPE_VARIABLE_STRING;
167                                if(type.equals("variable_string")) return TYPE_VARIABLE_STRING;
168                                if(type.equals("void")) return TYPE_VOID;
169                                break;
170                    case 'x':
171                        if(type.equals("xml")) return TYPE_XML;
172                        break;
173                       }
174                    }
175                    return defaultValue;
176            }
177            
178            public static short toShort(String type, short defaultValue) {
179                    type=type.toLowerCase().trim();
180                if(type.length()>2) {
181                    char first=type.charAt(0);
182                    switch(first) {
183                            case 'a':
184                                if(type.equals("any")) return TYPE_ANY;
185                                if(type.equals("array")) return TYPE_ARRAY;
186                            break;
187                            case 'b':
188                                if(type.equals("boolean") || type.equals("bool")) return TYPE_BOOLEAN;
189                                if(type.equals("binary")) return TYPE_BINARY;
190                                if(type.equals("bigint")) return TYPE_NUMERIC;
191                                if("base64".equals(type))return TYPE_STRING;
192                                
193                            break;                  
194                            case 'c':
195                                if("char".equals(type))return TYPE_STRING;
196                                
197                            break;                  
198                        case 'd':
199                            if("double".equals(type))                                                       return TYPE_NUMERIC;
200                            if("decimal".equals(type))                                                      return TYPE_STRING;
201                                if(type.equals("date") || type.equals("datetime"))  return TYPE_DATETIME;
202                            break; 
203    
204                        case 'e':
205                            if("eurodate".equals(type))                                                     return TYPE_DATETIME;
206                        break;
207                        case 'f':
208                            if("float".equals(type))                                                        return TYPE_NUMERIC;
209                        break;
210                        case 'g':
211                            if("guid".equals(type))                                                         return TYPE_GUID;
212                        break;
213    
214                        case 'i':
215                            if("int".equals(type))                                                          return TYPE_NUMERIC;
216                            if("integer".equals(type))                                                      return TYPE_NUMERIC;
217                        break;
218    
219                        case 'l':
220                            if("long".equals(type))                                                         return TYPE_NUMERIC;
221                        break;
222                            
223                        case 'm':
224                            if("memory".equals(type))                                                               return TYPE_STRING;
225                        break;
226                            
227                            case 'n':
228                                if(type.equals("numeric")) return TYPE_NUMERIC;
229                                else if(type.equals("number")) return TYPE_NUMERIC;
230                                else if(type.equals("node")) return TYPE_XML;
231                                else if(type.equals("nvarchar")) return TYPE_STRING;
232                                else if(type.equals("nchar")) return TYPE_STRING;
233                                break;
234                            case 'o':
235                                if(type.equals("object")) return TYPE_ANY;
236                                if(type.equals("other")) return TYPE_ANY;
237                                break;
238                            case 'q':
239                                if(type.equals("query")) return TYPE_QUERY;
240                                break;
241                            case 's':
242                                if(type.equals("string")) return TYPE_STRING;
243                                else if(type.equals("struct")) return TYPE_STRUCT;
244                            if("short".equals(type))return TYPE_NUMERIC;
245                            break;
246                            case 't':
247                                if(type.equals("timespan")) return TYPE_TIMESPAN;
248                                if(type.equals("time")) return TYPE_DATETIME;
249                                if(type.equals("timestamp")) return TYPE_DATETIME;
250                                if(type.equals("text")) return TYPE_STRING;
251                                break;
252                            case 'u':
253                                if(type.equals("uuid")) return TYPE_UUID;
254                            if("usdate".equals(type))return TYPE_DATETIME;
255                                break;
256                            case 'v':
257                                if(type.equals("variablename")) return TYPE_VARIABLE_NAME;
258                                if(type.equals("variable_name")) return TYPE_VARIABLE_NAME;
259                                if(type.equals("variablestring")) return TYPE_VARIABLE_STRING;
260                                if(type.equals("variable_string")) return TYPE_VARIABLE_STRING;
261                                if(type.equals("void")) return TYPE_VOID;
262                                if(type.equals("varchar")) return TYPE_STRING;
263                                break;
264                    case 'x':
265                        if(type.equals("xml")) return TYPE_XML;
266                        break;
267                       }
268                    }
269                    return defaultValue;
270            }
271    }