KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > db > api > sql > SQLKeywords


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.db.api.sql;
21
22 import java.util.Arrays JavaDoc;
23
24 /**
25  * An utility class for working with SQL keywords. Currently it provides
26  * the list of reserved and non-reserved SQL-99 keywords.
27  *
28  * @author Andrei Badea
29  *
30  * @since 1.2
31  */

32 public final class SQLKeywords {
33
34     // the following lists are searched using binary search
35
// so they should be lexicographically sorted
36

37     // the source of the SQL-99 keyword lists is
38
// the SQL-99 Complete book by Gulutzan and Pelzer
39

40     /**
41      * The list of SQL-99 reserved keywords. Not private because of the tests.
42      */

43     static final String JavaDoc[] SQL99_RESERVED = {
44         "ABSOLUTE", //NOI18N
45
"ACTION", //NOI18N
46
"ADD", //NOI18N
47
"ADMIN", //NOI18N
48
"AFTER", //NOI18N
49
"AGGREGATE", //NOI18N
50
"ALIAS", //NOI18N
51
"ALL", //NOI18N
52
"ALLOCATE", //NOI18N
53
"ALTER", //NOI18N
54
"AND", //NOI18N
55
"ANY", //NOI18N
56
"ARE", //NOI18N
57
"ARRAY", //NOI18N
58
"AS", //NOI18N
59
"ASC", //NOI18N
60
"ASSERTION", //NOI18N
61
"AT", //NOI18N
62
"AUTHORIZATION", //NOI18N
63
"BEFORE", //NOI18N
64
"BEGIN", //NOI18N
65
"BINARY", //NOI18N
66
"BIT", //NOI18N
67
"BLOB", //NOI18N
68
"BOOLEAN", //NOI18N
69
"BOTH", //NOI18N
70
"BREADTH", //NOI18N
71
"BY", //NOI18N
72
"CALL", //NOI18N
73
"CASCADE", //NOI18N
74
"CASCADED", //NOI18N
75
"CASE", //NOI18N
76
"CAST", //NOI18N
77
"CATALOG", //NOI18N
78
"CHAR", //NOI18N
79
"CHARACTER", //NOI18N
80
"CHECK", //NOI18N
81
"CLASS", //NOI18N
82
"CLOB", //NOI18N
83
"CLOSE", //NOI18N
84
"COLLATE", //NOI18N
85
"COLLATION", //NOI18N
86
"COLUMN", //NOI18N
87
"COMMIT", //NOI18N
88
"COMPLETION", //NOI18N
89
"CONDITION", //NOI18N
90
"CONNECT", //NOI18N
91
"CONNECTION", //NOI18N
92
"CONSTRAINT", //NOI18N
93
"CONSTRAINTS", //NOI18N
94
"CONSTRUCTOR", //NOI18N
95
"CONTAINS", //NOI18N
96
"CONTINUE", //NOI18N
97
"CORRESPONDING", //NOI18N
98
"CREATE", //NOI18N
99
"CROSS", //NOI18N
100
"CUBE", //NOI18N
101
"CURRENT", //NOI18N
102
"CURRENT_DATE", //NOI18N
103
"CURRENT_PATH", //NOI18N
104
"CURRENT_ROLE", //NOI18N
105
"CURRENT_TIME", //NOI18N
106
"CURRENT_TIMESTAMP", //NOI18N
107
"CURRENT_USER", //NOI18N
108
"CURSOR", //NOI18N
109
"CYCLE", //NOI18N
110
"DATA", //NOI18N
111
"DATALINK", //NOI18N
112
"DATE", //NOI18N
113
"DAY", //NOI18N
114
"DEALLOCATE", //NOI18N
115
"DEC", //NOI18N
116
"DECIMAL", //NOI18N
117
"DECLARE", //NOI18N
118
"DEFAULT", //NOI18N
119
"DEFERRABLE", //NOI18N
120
"DEFERRED", //NOI18N
121
"DELETE", //NOI18N
122
"DEPTH", //NOI18N
123
"DEREF", //NOI18N
124
"DESC", //NOI18N
125
"DESCRIBE", //NOI18N
126
"DESCRIPTOR", //NOI18N
127
"DESTROY", //NOI18N
128
"DESTRUCTOR", //NOI18N
129
"DETERMINISTIC", //NOI18N
130
"DIAGNOSTICS", //NOI18N
131
"DICTIONARY", //NOI18N
132
"DISCONNECT", //NOI18N
133
"DISTINCT", //NOI18N
134
"DO", //NOI18N
135
"DOMAIN", //NOI18N
136
"DOUBLE", //NOI18N
137
"DROP", //NOI18N
138
"DYNAMIC", //NOI18N
139
"EACH", //NOI18N
140
"ELSE", //NOI18N
141
"ELSEIF", //NOI18N
142
"END", //NOI18N
143
"END-EXEC", //NOI18N
144
"EQUALS", //NOI18N
145
"ESCAPE", //NOI18N
146
"EVERY", //NOI18N
147
"EXCEPT", //NOI18N
148
"EXCEPTION", //NOI18N
149
"EXEC", //NOI18N
150
"EXECUTE", //NOI18N
151
"EXIT", //NOI18N
152
"EXPAND", //NOI18N
153
"EXPANDING", //NOI18N
154
"EXTERNAL", //NOI18N
155
"FALSE", //NOI18N
156
"FETCH", //NOI18N
157
"FIRST", //NOI18N
158
"FLOAT", //NOI18N
159
"FOR", //NOI18N
160
"FOREIGN", //NOI18N
161
"FOUND", //NOI18N
162
"FREE", //NOI18N
163
"FROM", //NOI18N
164
"FULL", //NOI18N
165
"FUNCTION", //NOI18N
166
"GENERAL", //NOI18N
167
"GET", //NOI18N
168
"GLOBAL", //NOI18N
169
"GO", //NOI18N
170
"GOTO", //NOI18N
171
"GRANT", //NOI18N
172
"GROUP", //NOI18N
173
"GROUPING", //NOI18N
174
"HANDLER", //NOI18N
175
"HASH", //NOI18N
176
"HAVING", //NOI18N
177
"HOST", //NOI18N
178
"HOUR", //NOI18N
179
"IDENTITY", //NOI18N
180
"IF", //NOI18N
181
"IGNORE", //NOI18N
182
"IMMEDIATE", //NOI18N
183
"IN", //NOI18N
184
"INDICATOR", //NOI18N
185
"INITIALIZE", //NOI18N
186
"INITIALLY", //NOI18N
187
"INNER", //NOI18N
188
"INOUT", //NOI18N
189
"INPUT", //NOI18N
190
"INSERT", //NOI18N
191
"INT", //NOI18N
192
"INTEGER", //NOI18N
193
"INTERSECT", //NOI18N
194
"INTERVAL", //NOI18N
195
"INTO", //NOI18N
196
"IS", //NOI18N
197
"ISOLATION", //NOI18N
198
"ITERATE", //NOI18N
199
"JOIN", //NOI18N
200
"KEY", //NOI18N
201
"LANGUAGE", //NOI18N
202
"LARGE", //NOI18N
203
"LAST", //NOI18N
204
"LATERAL", //NOI18N
205
"LEADING", //NOI18N
206
"LEAVE", //NOI18N
207
"LEFT", //NOI18N
208
"LESS", //NOI18N
209
"LEVEL", //NOI18N
210
"LIKE", //NOI18N
211
"LIMIT", //NOI18N
212
"LOCAL", //NOI18N
213
"LOCALTIME", //NOI18N
214
"LOCALTIMESTAMP", //NOI18N
215
"LOCATOR", //NOI18N
216
"LOOP", //NOI18N
217
"MATCH", //NOI18N
218
"MEETS", //NOI18N
219
"MINUTE", //NOI18N
220
"MODIFIES", //NOI18N
221
"MODIFY", //NOI18N
222
"MODULE", //NOI18N
223
"MONTH", //NOI18N
224
"NAMES", //NOI18N
225
"NATIONAL", //NOI18N
226
"NATURAL", //NOI18N
227
"NCHAR", //NOI18N
228
"NCLOB", //NOI18N
229
"NEW", //NOI18N
230
"NEXT", //NOI18N
231
"NO", //NOI18N
232
"NONE", //NOI18N
233
"NORMALIZE", //NOI18N
234
"NOT", //NOI18N
235
"NULL", //NOI18N
236
"NUMERIC", //NOI18N
237
"OBJECT", //NOI18N
238
"OF", //NOI18N
239
"OFF", //NOI18N
240
"OLD", //NOI18N
241
"ON", //NOI18N
242
"ONLY", //NOI18N
243
"OPEN", //NOI18N
244
"OPERATION", //NOI18N
245
"OPTION", //NOI18N
246
"OR", //NOI18N
247
"ORDER", //NOI18N
248
"ORDINALITY", //NOI18N
249
"OUT", //NOI18N
250
"OUTER", //NOI18N
251
"OUTPUT", //NOI18N
252
"PAD", //NOI18N
253
"PARAMETER", //NOI18N
254
"PARAMETERS", //NOI18N
255
"PARTIAL", //NOI18N
256
"PATH", //NOI18N
257
"PERIOD", //NOI18N
258
"POSTFIX", //NOI18N
259
"PRECEDES", //NOI18N
260
"PRECISION", //NOI18N
261
"PREFIX", //NOI18N
262
"PREORDER", //NOI18N
263
"PREPARE", //NOI18N
264
"PRESERVE", //NOI18N
265
"PRIMARY", //NOI18N
266
"PRIOR", //NOI18N
267
"PRIVILEGES", //NOI18N
268
"PROCEDURE", //NOI18N
269
"PUBLIC", //NOI18N
270
"READ", //NOI18N
271
"READS", //NOI18N
272
"REAL", //NOI18N
273
"RECURSIVE", //NOI18N
274
"REDO", //NOI18N
275
"REF", //NOI18N
276
"REFERENCES", //NOI18N
277
"REFERENCING", //NOI18N
278
"RELATIVE", //NOI18N
279
"REPEAT", //NOI18N
280
"RESIGNAL", //NOI18N
281
"RESTRICT", //NOI18N
282
"RESULT", //NOI18N
283
"RETURN", //NOI18N
284
"RETURNS", //NOI18N
285
"REVOKE", //NOI18N
286
"RIGHT", //NOI18N
287
"ROLE", //NOI18N
288
"ROLLBACK", //NOI18N
289
"ROLLUP", //NOI18N
290
"ROUTINE", //NOI18N
291
"ROW", //NOI18N
292
"ROWS", //NOI18N
293
"SAVEPOINT", //NOI18N
294
"SCHEMA", //NOI18N
295
"SCROLL", //NOI18N
296
"SEARCH", //NOI18N
297
"SECOND", //NOI18N
298
"SECTION", //NOI18N
299
"SELECT", //NOI18N
300
"SEQUENCE", //NOI18N
301
"SESSION", //NOI18N
302
"SESSION_USER", //NOI18N
303
"SET", //NOI18N
304
"SETS", //NOI18N
305
"SIGNAL", //NOI18N
306
"SIZE", //NOI18N
307
"SMALLINT", //NOI18N
308
"SOME", //NOI18N
309
"SPACE", //NOI18N
310
"SPECIFIC", //NOI18N
311
"SPECIFICTYPE", //NOI18N
312
"SQL", //NOI18N
313
"SQLEXCEPTION", //NOI18N
314
"SQLSTATE", //NOI18N
315
"SQLWARNING", //NOI18N
316
"START", //NOI18N
317
"STATE", //NOI18N
318
"STATEMENT", //NOI18N
319
"STATIC", //NOI18N
320
"STRUCTURE", //NOI18N
321
"SYSTEM_USER", //NOI18N
322
"TABLE", //NOI18N
323
"TEMPORARY", //NOI18N
324
"TERMINATE", //NOI18N
325
"THAN", //NOI18N
326
"THEN", //NOI18N
327
"TIME", //NOI18N
328
"TIMESTAMP", //NOI18N
329
"TIMEZONE_HOUR", //NOI18N
330
"TIMEZONE_MINUTE", //NOI18N
331
"TO", //NOI18N
332
"TRAILING", //NOI18N
333
"TRANSACTION", //NOI18N
334
"TRANSLATION", //NOI18N
335
"TREAT", //NOI18N
336
"TRIGGER", //NOI18N
337
"TRUE", //NOI18N
338
"UNDER", //NOI18N
339
"UNION", //NOI18N
340
"UNIQUE", //NOI18N
341
"UNKNOWN", //NOI18N
342
"UNTIL", //NOI18N
343
"UPDATE", //NOI18N
344
"USAGE", //NOI18N
345
"USER", //NOI18N
346
"USING", //NOI18N
347
"VALUE", //NOI18N
348
"VALUES", //NOI18N
349
"VARCHAR", //NOI18N
350
"VARIABLE", //NOI18N
351
"VARYING", //NOI18N
352
"VIEW", //NOI18N
353
"WHEN", //NOI18N
354
"WHENEVER", //NOI18N
355
"WHERE", //NOI18N
356
"WHILE", //NOI18N
357
"WITH", //NOI18N
358
"WITHOUT", //NOI18N
359
"WORK", //NOI18N
360
"WRITE", //NOI18N
361
"YEAR", //NOI18N
362
"ZONE", //NOI18N
363
};
364
365     /**
366      * The list of SQL-99 non-reserved keywords. Not private because of the tests.
367      */

368     static final String JavaDoc[] SQL99_NON_RESERVED = {
369         "ABS", //NOI18N
370
"ADA", //NOI18N
371
"ASENSITIVE", //NOI18N
372
"ASSIGNMENT", //NOI18N
373
"ASYMMETRIC", //NOI18N
374
"ATOMIC", //NOI18N
375
"AVG", //NOI18N
376
"BETWEEN", //NOI18N
377
"BITVAR", //NOI18N
378
"BIT_LENGTH", //NOI18N
379
"BLOCKED", //NOI18N
380
"C", //NOI18N
381
"CARDINALITY", //NOI18N
382
"CATALOG_NAME", //NOI18N
383
"CHAIN", //NOI18N
384
"CHARACTER_LENGTH", //NOI18N
385
"CHARACTER_SET_CATALOG", //NOI18N
386
"CHARACTER_SET_NAME", //NOI18N
387
"CHARACTER_SET_SCHEMA", //NOI18N
388
"CHAR_LENGTH", //NOI18N
389
"CHECKED", //NOI18N
390
"CLASS_ORIGIN", //NOI18N
391
"COALESCE", //NOI18N
392
"COBOL", //NOI18N
393
"COLLATION_CATALOG", //NOI18N
394
"COLLATION_NAME", //NOI18N
395
"COLLATION_SCHEMA", //NOI18N
396
"COLUMN_NAME", //NOI18N
397
"COMMAND_FUNCTION", //NOI18N
398
"COMMAND_FUNCTION_CODE", //NOI18N
399
"COMMITTED", //NOI18N
400
"CONCATENATE", //NOI18N
401
"CONDITION_NUMBER", //NOI18N
402
"CONNECTION_NAME", //NOI18N
403
"CONSTRAINT_CATALOG", //NOI18N
404
"CONSTRAINT_NAME", //NOI18N
405
"CONSTRAINT_SCHEMA", //NOI18N
406
"CONTAINS", //NOI18N
407
"CONTROL", //NOI18N
408
"CONVERT", //NOI18N
409
"COUNT", //NOI18N
410
"CURSOR_NAME", //NOI18N
411
"DATETIME_INTERVAL_CODE", //NOI18N
412
"DATETIME_INTERVAL_PRECISION", //NOI18N
413
"DB", //NOI18N
414
"DISPATCH", //NOI18N
415
"DLCOMMENT", //NOI18N
416
"DLFILESIZE", //NOI18N
417
"DLFILESIZEEXACT", //NOI18N
418
"DLLINKTYPE", //NOI18N
419
"DLURLCOMPLETE", //NOI18N
420
"DLURLPATH", //NOI18N
421
"DLURLPATHONLY", //NOI18N
422
"DLURLSCHEMA", //NOI18N
423
"DLURLSERVER", //NOI18N
424
"DLVALUE", //NOI18N
425
"DYNAMIC_FUNCTION", //NOI18N
426
"DYNAMIC_FUNCTION_CODE", //NOI18N
427
"EXISTING", //NOI18N
428
"EXISTS", //NOI18N
429
"EXTRACT", //NOI18N
430
"FILE", //NOI18N
431
"FINAL", //NOI18N
432
"FORTRAN", //NOI18N
433
"GENERATED", //NOI18N
434
"HOLD", //NOI18N
435
"INFIX", //NOI18N
436
"INSENSITIVE", //NOI18N
437
"INSTANTIABLE", //NOI18N
438
"INTEGRITY", //NOI18N
439
"KEY_MEMBER", //NOI18N
440
"KEY_TYPE", //NOI18N
441
"LENGTH", //NOI18N
442
"LINK", //NOI18N
443
"LOWER", //NOI18N
444
"MAX", //NOI18N
445
"MESSAGE_LENGTH", //NOI18N
446
"MESSAGE_OCTET_LENGTH", //NOI18N
447
"MESSAGE_TEXT", //NOI18N
448
"METHOD", //NOI18N
449
"MIN", //NOI18N
450
"MOD", //NOI18N
451
"MORE", //NOI18N
452
"MUMPS", //NOI18N
453
"NAME", //NOI18N
454
"NULLABLE", //NOI18N
455
"NULLIF", //NOI18N
456
"NUMBER", //NOI18N
457
"OCTET_LENGTH", //NOI18N
458
"OPTIONS", //NOI18N
459
"OVERLAPS", //NOI18N
460
"OVERLAY", //NOI18N
461
"OVERRIDING", //NOI18N
462
"PARAMETER_MODE", //NOI18N
463
"PARAMETER_NAME", //NOI18N
464
"PARAMETER_ORDINAL_POSITION", //NOI18N
465
"PARAMETER_SPECIFIC_CATALOG", //NOI18N
466
"PARAMETER_SPECIFIC_NAME", //NOI18N
467
"PARAMETER_SPECIFIC_SCHEMA", //NOI18N
468
"PASCAL", //NOI18N
469
"PERMISSION", //NOI18N
470
"PLI", //NOI18N
471
"POSITION", //NOI18N
472
"RECOVERY", //NOI18N
473
"REPEATABLE", //NOI18N
474
"RESTORE", //NOI18N
475
"RETURNED_LENGTH", //NOI18N
476
"RETURNED_OCTET_LENGTH", //NOI18N
477
"RETURNED_SQLSTATE", //NOI18N
478
"ROUTINE_CATALOG", //NOI18N
479
"ROUTINE_NAME", //NOI18N
480
"ROUTINE_SCHEMA", //NOI18N
481
"ROW_COUNT", //NOI18N
482
"ROW_TYPE_CATALOG", //NOI18N
483
"ROW_TYPE_NAME", //NOI18N
484
"ROW_TYPE_SCHEMA", //NOI18N
485
"SCALE", //NOI18N
486
"SCHEMA_NAME", //NOI18N
487
"SELECTIVE", //NOI18N
488
"SELF", //NOI18N
489
"SENSITIVE", //NOI18N
490
"SERIALIZABLE", //NOI18N
491
"SERVER_NAME", //NOI18N
492
"SIMILAR", //NOI18N
493
"SIMPLE", //NOI18N
494
"SOURCE", //NOI18N
495
"SPECIFIC_NAME", //NOI18N
496
"STRUCTURE", //NOI18N
497
"STYLE", //NOI18N
498
"SUBCLASS_ORIGIN", //NOI18N
499
"SUBLIST", //NOI18N
500
"SUBSTRING", //NOI18N
501
"SUM", //NOI18N
502
"SYMMETRIC", //NOI18N
503
"SYSTEM", //NOI18N
504
"TABLE_NAME", //NOI18N
505
"TRANSACTIONS_COMMITTED", //NOI18N
506
"TRANSACTIONS_ROLLED_BACK", //NOI18N
507
"TRANSACTION_ACTIVE", //NOI18N
508
"TRANSFORM", //NOI18N
509
"TRANSLATE", //NOI18N
510
"TRIGGER_CATALOG", //NOI18N
511
"TRIGGER_NAME", //NOI18N
512
"TRIGGER_SCHEMA", //NOI18N
513
"TRIM", //NOI18N
514
"TYPE", //NOI18N
515
"UNCOMMITTED", //NOI18N
516
"UNLINK", //NOI18N
517
"UNNAMED", //NOI18N
518
"UPPER", //NOI18N
519
"USER_DEFINED_TYPE_CATALOG", //NOI18N
520
"USER_DEFINED_TYPE_NAME", //NOI18N
521
"USER_DEFINED_TYPE_SCHEMA", //NOI18N
522
"YES", //NOI18N
523
};
524
525     private SQLKeywords() {
526     }
527
528     /**
529      * Returns true if the given identifier is a SQL-99 reserved keyword.
530      *
531      * @param identifier the identifier to test; case does not matter; cannot be null.
532      * @return true if <code>identifier</code> is a SQL-99 reserved keyword,
533      * false otherwise.
534      * @throws NullPointerException if <code>identifier</code> is null.
535      */

536     public static boolean isSQL99ReservedKeyword(String JavaDoc identifier) {
537         if (identifier == null) {
538             throw new NullPointerException JavaDoc("The identifier cannot be null"); // NOI18N
539
}
540         return Arrays.binarySearch(SQL99_RESERVED, identifier.toUpperCase()) >= 0;
541     }
542
543     /**
544      * Returns true if the given identifier is a SQL-99 non-reserved keyword.
545      *
546      * @param identifier the identifier to test; case does not matter; cannot be null.
547      * @return true if <code>identifier</code> is a SQL-99 non-reserved keyword,
548      * false otherwise.
549      * @throws NullPointerException if <code>identifier</code> is null.
550      */

551     public static boolean isSQL99NonReservedKeyword(String JavaDoc identifier) {
552         if (identifier == null) {
553             throw new NullPointerException JavaDoc("The identifier cannot be null"); // NOI18N
554
}
555         return Arrays.binarySearch(SQL99_NON_RESERVED, identifier.toUpperCase()) >= 0;
556     }
557
558     /**
559      * Returns true if the given identifier is a SQL-99 keyword (reserved or
560      * non-reserved).
561      *
562      * @param identifier the identifier to test; case does not matter; cannot be null.
563      * @return true if <code>identifier</code> is a SQL-99 non-reserved keyword,
564      * false otherwise.
565      * @throws NullPointerException if <code>identifier</code> is null.
566      */

567     public static boolean isSQL99Keyword(String JavaDoc identifier) {
568         return isSQL99ReservedKeyword(identifier) || isSQL99NonReservedKeyword(identifier);
569     }
570 }
571
Popular Tags