]> source.dussan.org Git - iciql.git/commitdiff
Fully support H2 UUID type. Cleanup imports for generated models.
authorJames Moger <james.moger@gmail.com>
Mon, 8 Aug 2011 13:32:30 +0000 (09:32 -0400)
committerJames Moger <james.moger@gmail.com>
Mon, 8 Aug 2011 13:32:30 +0000 (09:32 -0400)
src/com/iciql/ModelUtils.java
src/com/iciql/TableInspector.java
src/com/iciql/util/Utils.java
tests/com/iciql/test/IciqlSuite.java
tests/com/iciql/test/ModelsTest.java
tests/com/iciql/test/UUIDTest.java [new file with mode: 0644]

index 4f53d3b91f05ba17784774837f20844efe822711..51c2d6c00c9dffa7899c9af27c0d7a1f3cdef4fe 100644 (file)
@@ -25,6 +25,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 import java.util.regex.Pattern;
 
 import com.iciql.TableDefinition.FieldDefinition;
@@ -58,6 +59,7 @@ class ModelUtils {
                m.put(java.sql.Date.class, "DATE");
                m.put(java.sql.Time.class, "TIME");
                m.put(byte[].class, "BLOB");
+               m.put(UUID.class, "UUID");
                
                // map primitives
                m.put(boolean.class, m.get(Boolean.class));
index a4b3b8f6566f5ab3fbb932326f3285d07c7b6472..080e20e80972f5082fef643155b21e37afb6f371 100644 (file)
@@ -326,8 +326,11 @@ public class TableInspector {
                        sb.append("// unsupported type " + col.type);
                } else {
                        // Imports
-                       // don't import byte []
-                       if (!clazz.equals(byte[].class)) {
+                       // don't import primitives, java.lang classes, or byte []
+                       if (clazz.getPackage() == null) {
+                       } else if (clazz.getPackage().getName().equals("java.lang")) {                          
+                       } else if (clazz.equals(byte[].class)) {                                
+                       } else {
                                imports.add(clazz.getCanonicalName());
                        }
                        // @IQColumn
index d99f33b9c6c4f3ddd8a6416c1976f3c6e1e51a0a..3846c320b65f40986b15c09568bb83d722a622b4 100644 (file)
@@ -35,6 +35,7 @@ import java.util.HashSet;
 import java.util.IdentityHashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
+import java.util.UUID;\r
 import java.util.concurrent.atomic.AtomicLong;\r
 \r
 import com.iciql.Iciql.EnumId;\r
@@ -159,6 +160,8 @@ public class Utils {
                        // enums can not be instantiated reflectively\r
                        // return first constant as reference\r
                        return clazz.getEnumConstants()[0];\r
+               } else if (clazz == java.util.UUID.class) {\r
+                       return (T) UUID.randomUUID();\r
                } else if (clazz == List.class) {\r
                        return (T) new ArrayList();\r
                }\r
index 20dbea25cf55d37fecad519f60a0741f3b6a9ca9..056c996885ab3e23730d056fc93df3f1d6bfd277 100644 (file)
@@ -26,8 +26,8 @@ import org.junit.runners.Suite.SuiteClasses;
  */\r
 @RunWith(Suite.class)\r
 @SuiteClasses({ AliasMapTest.class, AnnotationsTest.class, BooleanModelTest.class, ClobTest.class,\r
-               ConcurrencyTest.class, ModelsTest.class, SamplesTest.class, UpdateTest.class, RuntimeQueryTest.class,\r
-               StatementLoggerTest.class })\r
+               ConcurrencyTest.class, ModelsTest.class, PrimitivesTest.class, RuntimeQueryTest.class,\r
+               SamplesTest.class, StatementLoggerTest.class, UpdateTest.class, UUIDTest.class })\r
 public class IciqlSuite {\r
 \r
        public static void assertStartsWith(String a, String b) {\r
index 0caae4b1cadc65b869ec37b6708886163fac67a2..75c2073e877cf41d622d172554f0e347947de748 100644 (file)
@@ -163,7 +163,7 @@ public class ModelsTest {
                                true);
                assertEquals(1, models.size());
                // a poor test, but a start
-               assertEquals(1893, models.get(0).length());
+               assertEquals(1697, models.get(0).length());
        }
 
        @Test
diff --git a/tests/com/iciql/test/UUIDTest.java b/tests/com/iciql/test/UUIDTest.java
new file mode 100644 (file)
index 0000000..b35d623
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2011 James Moger.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.iciql.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.iciql.Db;
+import com.iciql.Iciql.IQColumn;
+import com.iciql.Iciql.IQTable;
+
+/**
+ * Tests if UUID type.
+ */
+public class UUIDTest {
+
+       Db db;
+
+       @Before
+       public void setup() {
+               db = Db.open("jdbc:h2:mem:", "sa", "sa");
+       }
+
+       @After
+       public void tearDown() {
+               db.close();
+       }
+
+       @Test
+       public void testUUIDs() throws Exception {
+               List<UUIDRecord> originals = UUIDRecord.getList();
+               db.insertAll(originals);
+               UUIDRecord u = new UUIDRecord();
+               List<UUIDRecord> retrieved = db.from(u).orderBy(u.id).select();
+               assertEquals(originals.size(), retrieved.size());
+               for (int i = 0; i < originals.size(); i++) {
+                       UUIDRecord a = originals.get(i);
+                       UUIDRecord b = retrieved.get(i);
+                       assertTrue(a.equivalentTo(b));
+               }
+
+               UUIDRecord second = db.from(u).where(u.uuid).is(originals.get(1).uuid).selectFirst();
+               assertTrue(originals.get(1).equivalentTo(second));
+       }
+
+       /**
+        * A simple class used in this test.
+        */
+       @IQTable(name = "UUID_TEST")
+       public static class UUIDRecord {
+
+               @IQColumn(primaryKey = true)
+               public Integer id;
+
+               @IQColumn()
+               public UUID uuid;
+
+               public UUIDRecord() {
+                       // public constructor
+               }
+
+               private UUIDRecord(int id) {
+                       this.id = id;
+                       this.uuid = UUID.randomUUID();
+               }
+
+               public boolean equivalentTo(UUIDRecord b) {
+                       boolean same = true;
+                       same &= id == b.id;
+                       same &= uuid.equals(b.uuid);
+                       return same;
+               }
+
+               public String toString() {
+                       return id + ": " + uuid;
+               }
+
+               public static List<UUIDRecord> getList() {
+                       List<UUIDRecord> list = new ArrayList<UUIDRecord>();
+                       for (int i = 0; i < 10; i++) {
+                               list.add(new UUIDRecord(i + 1));
+                       }
+                       return list;
+               }
+       }
+}