[teiid-commits] teiid SVN: r3569 - in trunk: common-core/src/main/java/org/teiid/core/types and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Oct 19 10:17:28 EDT 2011


Author: shawkins
Date: 2011-10-19 10:17:27 -0400 (Wed, 19 Oct 2011)
New Revision: 3569

Modified:
   trunk/client/src/main/java/org/teiid/client/BatchSerializer.java
   trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java
   trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/FunctionModifier.java
Log:
TEIID-1750 pushing type codes down to datatypemanager

Modified: trunk/client/src/main/java/org/teiid/client/BatchSerializer.java
===================================================================
--- trunk/client/src/main/java/org/teiid/client/BatchSerializer.java	2011-10-18 19:02:39 UTC (rev 3568)
+++ trunk/client/src/main/java/org/teiid/client/BatchSerializer.java	2011-10-19 14:17:27 UTC (rev 3569)
@@ -35,7 +35,6 @@
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TimeZone;
@@ -54,59 +53,6 @@
  */
 public class BatchSerializer {
 	
-    /*
-     * Public sharing part for the mapping between class and type in format of Map<class->Integer>.
-     */
-    public static final int STRING = 0;
-    public static final int CHAR = 1;
-    public static final int BOOLEAN = 2;
-    public static final int BYTE = 3;
-    public static final int SHORT = 4;
-    public static final int INTEGER = 5;
-    public static final int LONG = 6;
-    public static final int BIGINTEGER = 7;
-    public static final int FLOAT = 8;
-    public static final int DOUBLE = 9;
-    public static final int BIGDECIMAL = 10;
-    public static final int DATE = 11;
-    public static final int TIME = 12;
-    public static final int TIMESTAMP = 13;
-    public static final int OBJECT = 14;
-    public static final int BLOB = 15;
-    public static final int CLOB = 16;
-    public static final int XML = 17;
-    public static final int NULL = 18;
-
-    private static final Map<Class<?>, Integer> typeMap = new LinkedHashMap<Class<?>, Integer>(64);
-    private static final List<Class<?>> typeList;
-    
-    static {
-        typeMap.put(DataTypeManager.DefaultDataClasses.STRING, STRING);
-        typeMap.put(DataTypeManager.DefaultDataClasses.CHAR, CHAR);
-        typeMap.put(DataTypeManager.DefaultDataClasses.BOOLEAN, BOOLEAN);
-        typeMap.put(DataTypeManager.DefaultDataClasses.BYTE, BYTE);
-        typeMap.put(DataTypeManager.DefaultDataClasses.SHORT, SHORT);
-        typeMap.put(DataTypeManager.DefaultDataClasses.INTEGER, INTEGER);
-        typeMap.put(DataTypeManager.DefaultDataClasses.LONG, LONG);
-        typeMap.put(DataTypeManager.DefaultDataClasses.BIG_INTEGER, BIGINTEGER);
-        typeMap.put(DataTypeManager.DefaultDataClasses.FLOAT, FLOAT);
-        typeMap.put(DataTypeManager.DefaultDataClasses.DOUBLE, DOUBLE);
-        typeMap.put(DataTypeManager.DefaultDataClasses.BIG_DECIMAL, BIGDECIMAL);
-        typeMap.put(DataTypeManager.DefaultDataClasses.DATE, DATE);
-        typeMap.put(DataTypeManager.DefaultDataClasses.TIME, TIME);
-        typeMap.put(DataTypeManager.DefaultDataClasses.TIMESTAMP, TIMESTAMP);
-        typeMap.put(DataTypeManager.DefaultDataClasses.OBJECT, OBJECT);        
-        typeMap.put(DataTypeManager.DefaultDataClasses.BLOB, BLOB);
-        typeMap.put(DataTypeManager.DefaultDataClasses.CLOB, CLOB);
-        typeMap.put(DataTypeManager.DefaultDataClasses.XML, XML);
-        typeMap.put(DataTypeManager.DefaultDataClasses.NULL, NULL);
-        typeList = new ArrayList<Class<?>>(typeMap.keySet());
-    }    
-    
-    public static int getCode(Class<?> source) {
-        return typeMap.get(source).intValue();
-    }
-    
     private BatchSerializer() {} // Uninstantiable
     
     private static ColumnSerializer defaultSerializer = new ColumnSerializer();
@@ -145,15 +91,15 @@
     	@Override
     	protected void writeObject(ObjectOutput out, Object obj)
     			throws IOException {
-    		int code = getCode(obj.getClass());
+    		int code = DataTypeManager.getTypeCode(obj.getClass());
     		out.writeByte((byte)code);
-    		if (code == BOOLEAN) {
+    		if (code == DataTypeManager.BOOLEAN) {
     			if (Boolean.TRUE.equals(obj)) {
     				out.write((byte)1);
     			} else {
     				out.write((byte)0);
     			}
-    		} else if (code != OBJECT) {
+    		} else if (code != DataTypeManager.OBJECT) {
     			ColumnSerializer s = getSerializer(DataTypeManager.getDataTypeName(obj.getClass()), (byte)1);
     			s.writeObject(out, obj);
     		} else {
@@ -165,14 +111,14 @@
     	protected Object readObject(ObjectInput in) throws IOException,
     			ClassNotFoundException {
     		int code = in.readByte();
-    		if (code == BOOLEAN) {
+    		if (code == DataTypeManager.BOOLEAN) {
     			if (in.readByte() == (byte)0) {
     				return Boolean.FALSE;
     			}
     			return Boolean.TRUE;
     		}
-    		if (code != OBJECT) {
-    			ColumnSerializer s = getSerializer(DataTypeManager.getDataTypeName(typeList.get(code)), (byte)1);
+    		if (code != DataTypeManager.OBJECT) {
+    			ColumnSerializer s = getSerializer(DataTypeManager.getDataTypeName(DataTypeManager.getClass(code)), (byte)1);
     			return s.readObject(in);
     		}
 			return super.readObject(in);

Modified: trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java
===================================================================
--- trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java	2011-10-18 19:02:39 UTC (rev 3568)
+++ trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java	2011-10-19 14:17:27 UTC (rev 3569)
@@ -75,6 +75,8 @@
  * need to load the Class object, which may not be in the classpath. The
  * advantage of the Class option is speed.
  * </p>
+ * 
+ * TODO: refactor the string/class/code into an enum
  */
 public class DataTypeManager {
 	
@@ -224,6 +226,62 @@
 		public static final Class<ClobType> CLOB = ClobType.class;
 		public static final Class<XMLType> XML = XMLType.class;
 	}
+	
+	public static final class DefaultTypeCodes {
+		public static final int STRING = 0;
+		public static final int CHAR = 1;
+		public static final int BOOLEAN = 2;
+		public static final int BYTE = 3;
+		public static final int SHORT = 4;
+		public static final int INTEGER = 5;
+		public static final int LONG = 6;
+		public static final int BIGINTEGER = 7;
+		public static final int FLOAT = 8;
+		public static final int DOUBLE = 9;
+		public static final int BIGDECIMAL = 10;
+		public static final int DATE = 11;
+		public static final int TIME = 12;
+		public static final int TIMESTAMP = 13;
+		public static final int OBJECT = 14;
+		public static final int BLOB = 15;
+		public static final int CLOB = 16;
+		public static final int XML = 17;
+		public static final int NULL = 18;
+	}
+	
+    private static final Map<Class<?>, Integer> typeMap = new LinkedHashMap<Class<?>, Integer>(64);
+    private static final List<Class<?>> typeList;
+    
+    static {
+        typeMap.put(DataTypeManager.DefaultDataClasses.STRING, DefaultTypeCodes.STRING);
+        typeMap.put(DataTypeManager.DefaultDataClasses.CHAR, DefaultTypeCodes.CHAR);
+        typeMap.put(DataTypeManager.DefaultDataClasses.BOOLEAN, DefaultTypeCodes.BOOLEAN);
+        typeMap.put(DataTypeManager.DefaultDataClasses.BYTE, DefaultTypeCodes.BYTE);
+        typeMap.put(DataTypeManager.DefaultDataClasses.SHORT, DefaultTypeCodes.SHORT);
+        typeMap.put(DataTypeManager.DefaultDataClasses.INTEGER, DefaultTypeCodes.INTEGER);
+        typeMap.put(DataTypeManager.DefaultDataClasses.LONG, DefaultTypeCodes.LONG);
+        typeMap.put(DataTypeManager.DefaultDataClasses.BIG_INTEGER, DefaultTypeCodes.BIGINTEGER);
+        typeMap.put(DataTypeManager.DefaultDataClasses.FLOAT, DefaultTypeCodes.FLOAT);
+        typeMap.put(DataTypeManager.DefaultDataClasses.DOUBLE, DefaultTypeCodes.DOUBLE);
+        typeMap.put(DataTypeManager.DefaultDataClasses.BIG_DECIMAL, DefaultTypeCodes.BIGDECIMAL);
+        typeMap.put(DataTypeManager.DefaultDataClasses.DATE, DefaultTypeCodes.DATE);
+        typeMap.put(DataTypeManager.DefaultDataClasses.TIME, DefaultTypeCodes.TIME);
+        typeMap.put(DataTypeManager.DefaultDataClasses.TIMESTAMP, DefaultTypeCodes.TIMESTAMP);
+        typeMap.put(DataTypeManager.DefaultDataClasses.OBJECT, DefaultTypeCodes.OBJECT);        
+        typeMap.put(DataTypeManager.DefaultDataClasses.BLOB, DefaultTypeCodes.BLOB);
+        typeMap.put(DataTypeManager.DefaultDataClasses.CLOB, DefaultTypeCodes.CLOB);
+        typeMap.put(DataTypeManager.DefaultDataClasses.XML, DefaultTypeCodes.XML);
+        typeMap.put(DataTypeManager.DefaultDataClasses.NULL, DefaultTypeCodes.NULL);
+        typeList = new ArrayList<Class<?>>(typeMap.keySet());
+    }    
+    
+    public static int getTypeCode(Class<?> source) {
+        return typeMap.get(source).intValue();
+    }
+    
+    public static Class<?> getClass(int code) {
+    	return typeList.get(code);
+    }
 
 	/**
 	 * Doubly-nested map of String srcType --> Map of String targetType -->

Modified: trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/FunctionModifier.java
===================================================================
--- trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/FunctionModifier.java	2011-10-18 19:02:39 UTC (rev 3568)
+++ trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/FunctionModifier.java	2011-10-19 14:17:27 UTC (rev 3569)
@@ -26,7 +26,7 @@
 
 import java.util.List;
 
-import org.teiid.client.BatchSerializer;
+import org.teiid.core.types.DataTypeManager;
 import org.teiid.language.Function;
 import org.teiid.language.LanguageObject;
 
@@ -41,28 +41,28 @@
     /*
      * Public sharing part for the mapping between class and type in format of Map<class->Integer>.
      */
-    public static final int STRING = BatchSerializer.STRING;
-    public static final int CHAR = BatchSerializer.CHAR;
-    public static final int BOOLEAN = BatchSerializer.BOOLEAN;
-    public static final int BYTE = BatchSerializer.BYTE;
-    public static final int SHORT = BatchSerializer.SHORT;
-    public static final int INTEGER = BatchSerializer.INTEGER;
-    public static final int LONG = BatchSerializer.LONG;
-    public static final int BIGINTEGER = BatchSerializer.BIGINTEGER;
-    public static final int FLOAT = BatchSerializer.FLOAT;
-    public static final int DOUBLE = BatchSerializer.DOUBLE;
-    public static final int BIGDECIMAL = BatchSerializer.BIGDECIMAL;
-    public static final int DATE = BatchSerializer.DATE;
-    public static final int TIME = BatchSerializer.TIME;
-    public static final int TIMESTAMP = BatchSerializer.TIMESTAMP;
-    public static final int OBJECT = BatchSerializer.OBJECT;
-    public static final int BLOB = BatchSerializer.BLOB;
-    public static final int CLOB = BatchSerializer.CLOB;
-    public static final int XML = BatchSerializer.XML;
-    public static final int NULL = BatchSerializer.NULL;
+    public static final int STRING = DataTypeManager.DefaultTypeCodes.STRING;
+    public static final int CHAR = DataTypeManager.DefaultTypeCodes.CHAR;
+    public static final int BOOLEAN = DataTypeManager.DefaultTypeCodes.BOOLEAN;
+    public static final int BYTE = DataTypeManager.DefaultTypeCodes.BYTE;
+    public static final int SHORT = DataTypeManager.DefaultTypeCodes.SHORT;
+    public static final int INTEGER = DataTypeManager.DefaultTypeCodes.INTEGER;
+    public static final int LONG = DataTypeManager.DefaultTypeCodes.LONG;
+    public static final int BIGINTEGER = DataTypeManager.DefaultTypeCodes.BIGINTEGER;
+    public static final int FLOAT = DataTypeManager.DefaultTypeCodes.FLOAT;
+    public static final int DOUBLE = DataTypeManager.DefaultTypeCodes.DOUBLE;
+    public static final int BIGDECIMAL = DataTypeManager.DefaultTypeCodes.BIGDECIMAL;
+    public static final int DATE = DataTypeManager.DefaultTypeCodes.DATE;
+    public static final int TIME = DataTypeManager.DefaultTypeCodes.TIME;
+    public static final int TIMESTAMP = DataTypeManager.DefaultTypeCodes.TIMESTAMP;
+    public static final int OBJECT = DataTypeManager.DefaultTypeCodes.OBJECT;
+    public static final int BLOB = DataTypeManager.DefaultTypeCodes.BLOB;
+    public static final int CLOB = DataTypeManager.DefaultTypeCodes.CLOB;
+    public static final int XML = DataTypeManager.DefaultTypeCodes.XML;
+    public static final int NULL = DataTypeManager.DefaultTypeCodes.NULL;
 
     public static int getCode(Class<?> source) {
-        return BatchSerializer.getCode(source);
+        return DataTypeManager.getTypeCode(source);
     }
     
     /**



More information about the teiid-commits mailing list