Browse Source

Fully support H2 UUID type. Cleanup imports for generated models.

tags/v0.6.3
James Moger 13 years ago
parent
commit
083e5031c2

+ 2
- 0
src/com/iciql/ModelUtils.java View 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));

+ 5
- 2
src/com/iciql/TableInspector.java View 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

+ 3
- 0
src/com/iciql/util/Utils.java View File

@@ -35,6 +35,7 @@ import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicLong;
import com.iciql.Iciql.EnumId;
@@ -159,6 +160,8 @@ public class Utils {
// enums can not be instantiated reflectively
// return first constant as reference
return clazz.getEnumConstants()[0];
} else if (clazz == java.util.UUID.class) {
return (T) UUID.randomUUID();
} else if (clazz == List.class) {
return (T) new ArrayList();
}

+ 2
- 2
tests/com/iciql/test/IciqlSuite.java View File

@@ -26,8 +26,8 @@ import org.junit.runners.Suite.SuiteClasses;
*/
@RunWith(Suite.class)
@SuiteClasses({ AliasMapTest.class, AnnotationsTest.class, BooleanModelTest.class, ClobTest.class,
ConcurrencyTest.class, ModelsTest.class, SamplesTest.class, UpdateTest.class, RuntimeQueryTest.class,
StatementLoggerTest.class })
ConcurrencyTest.class, ModelsTest.class, PrimitivesTest.class, RuntimeQueryTest.class,
SamplesTest.class, StatementLoggerTest.class, UpdateTest.class, UUIDTest.class })
public class IciqlSuite {
public static void assertStartsWith(String a, String b) {

+ 1
- 1
tests/com/iciql/test/ModelsTest.java View 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

+ 108
- 0
tests/com/iciql/test/UUIDTest.java View File

@@ -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;
}
}
}

Loading…
Cancel
Save