[teiid-commits] teiid SVN: r2913 - trunk/api/src/main/java/org/teiid/language.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Feb 16 16:32:50 EST 2011


Author: shawkins
Date: 2011-02-16 16:32:50 -0500 (Wed, 16 Feb 2011)
New Revision: 2913

Modified:
   trunk/api/src/main/java/org/teiid/language/SQLConstants.java
Log:
TEIIDDES-868 exposing reserved and non reserved words for use by designer

Modified: trunk/api/src/main/java/org/teiid/language/SQLConstants.java
===================================================================
--- trunk/api/src/main/java/org/teiid/language/SQLConstants.java	2011-02-16 16:28:02 UTC (rev 2912)
+++ trunk/api/src/main/java/org/teiid/language/SQLConstants.java	2011-02-16 21:32:50 UTC (rev 2913)
@@ -23,8 +23,9 @@
 package org.teiid.language;
 
 import java.lang.reflect.Field;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.Set;
-import java.util.HashSet;
 
 /**
  * SQL Constants for Teiid.
@@ -400,23 +401,42 @@
     /**
  	 * Set of CAPITALIZED reserved words for checking whether a string is a reserved word.
  	 */
-    private static final Set<String> RESERVED_WORDS = new HashSet<String>();
+    private static final Set<String> RESERVED_WORDS = extractFieldNames(SQLConstants.Reserved.class);
+    private static final Set<String> NON_RESERVED_WORDS = extractFieldNames(SQLConstants.NonReserved.class);
 
-    // Initialize RESERVED_WORDS set - This is a poor man's enum.  To much legacy code expects the constants to be Strings.
- 	static {
- 		Field[] fields = SQLConstants.Reserved.class.getDeclaredFields();
+    /**
+     * @throws AssertionError
+     */
+    private static Set<String> extractFieldNames(Class<?> clazz) throws AssertionError {
+        HashSet<String> result = new HashSet<String>();
+        Field[] fields = clazz.getDeclaredFields();
  		for (Field field : fields) {
  			if (field.getType() == String.class) {
 				try {
-					if (!RESERVED_WORDS.add((String)field.get(null))) {
+					if (!result.add((String)field.get(null))) {
 						throw new AssertionError("Duplicate value for " + field.getName()); //$NON-NLS-1$
 					}
 				} catch (Exception e) {
 				}
  			}
  		}
- 	}
-
+ 		return Collections.unmodifiableSet(result);
+    }
+    
+    /**
+     * @return nonReservedWords
+     */
+    public static Set<String> getNonReservedWords() {
+        return NON_RESERVED_WORDS;
+    }
+    
+    /**
+     * @return reservedWords
+     */
+    public static Set<String> getReservedWords() {
+        return RESERVED_WORDS;
+    }
+    
  	/** Can't construct */
  	private SQLConstants() {}   
 



More information about the teiid-commits mailing list