You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2016/09/30 14:50:23 UTC

[3/3] cayenne git commit: CAY-2116 Split schema synchronization code in a separate module

CAY-2116 Split schema synchronization code in a separate module

* unifying object name generators under cayenne-dbsync
* removing unused classes (probably work in progress)


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/fc27ef7a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/fc27ef7a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/fc27ef7a

Branch: refs/heads/master
Commit: fc27ef7ae6dbe296a7974da45a5738d10e923cee
Parents: 041cb78
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Fri Sep 30 17:34:49 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Fri Sep 30 17:45:59 2016 +0300

----------------------------------------------------------------------
 .../cayenne/dbsync/reverse/mapper/DbType.java   | 194 -------------
 .../mapper/DefaultJdbc2JavaTypeMapper.java      | 282 -------------------
 .../reverse/mapper/Jdbc2JavaTypeMapper.java     |  33 ---
 .../naming/LegacyObjectNameGenerator.java       |   2 +-
 .../dbsync/reverse/mapper/DbTypeTest.java       |  87 ------
 5 files changed, 1 insertion(+), 597 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DbType.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DbType.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DbType.java
deleted file mode 100644
index 9f829ea..0000000
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DbType.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you 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 org.apache.cayenne.dbsync.reverse.mapper;
-
-import org.apache.cayenne.util.EqualsBuilder;
-import org.apache.cayenne.util.HashCodeBuilder;
-import org.apache.commons.lang.builder.CompareToBuilder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import static org.apache.commons.lang.StringUtils.isBlank;
-
-/**
- * @since 4.0
- */
-public class DbType implements Comparable<DbType> {
-
-    private static final Log LOG = LogFactory.getLog(DbType.class);
-
-    public final String jdbc;
-
-    public final Integer length;
-    public final Integer precision;
-    public final Integer scale;
-    public final Boolean notNull;
-
-    public DbType(String jdbc) {
-        this(jdbc, null, null, null, null);
-    }
-
-    public DbType(String jdbc, Integer length, Integer precision, Integer scale, Boolean notNull) {
-        if (isBlank(jdbc)) {
-            throw new IllegalArgumentException("Jdbc type can't be null");
-        }
-        this.jdbc = jdbc;
-
-        this.length = getValidInt(length);
-        this.precision = getValidInt(precision);
-        this.scale = getValidInt(scale);
-        this.notNull = notNull;
-    }
-
-    public String getJdbc() {
-        return jdbc;
-    }
-
-    public Integer getLength() {
-        return length;
-    }
-
-    public Integer getPrecision() {
-        return precision;
-    }
-
-    public Integer getScale() {
-        return scale;
-    }
-
-    public Boolean getNotNull() {
-        return notNull;
-    }
-
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj == null) {
-            return false;
-        }
-        if (obj == this) {
-            return true;
-        }
-        if (obj.getClass() != getClass()) {
-            return false;
-        }
-        DbType rhs = (DbType) obj;
-        return new EqualsBuilder()
-                .append(this.jdbc, rhs.jdbc)
-                .append(this.length, rhs.length)
-                .append(this.precision, rhs.precision)
-                .append(this.scale, rhs.scale)
-                .append(this.notNull, rhs.notNull)
-                .isEquals();
-    }
-
-    @Override
-    public int hashCode() {
-        return new HashCodeBuilder()
-                .append(jdbc)
-                .append(length)
-                .append(precision)
-                .append(scale)
-                .append(notNull)
-                .toHashCode();
-    }
-
-
-    @Override
-    public String toString() {
-        String res = jdbc;
-
-        String len = "*";
-        if (isPositive(length)) {
-            len = length.toString();
-        }
-        if (isPositive(precision)) {
-            len = precision.toString();
-        }
-
-        res += " (" + len;
-        if (isPositive(scale)) {
-            res += ", " + scale;
-        }
-        res += ")";
-
-        if (notNull != null && notNull) {
-            res += " NOT NULL";
-        }
-
-        return res;
-    }
-
-    private boolean isPositive(Integer num) {
-        return num != null && num > 0;
-    }
-
-    private Integer getValidInt(Integer num) {
-        if (num == null || num > 0) {
-            return num;
-        }
-
-        LOG.warn("Invalid int value '" + num + "'");
-        return null;
-    }
-
-    /**
-     * Compare by specificity the most specific DbPath should be first in ordered list
-     */
-    @Override
-    public int compareTo(DbType dbType) {
-        return new CompareToBuilder()
-                .append(dbType.jdbc, jdbc)
-                .append(dbType.getSpecificity(), getSpecificity())
-                .append(dbType.length, length)
-                .append(dbType.precision, precision)
-                .append(dbType.scale, scale)
-                .append(dbType.notNull, notNull)
-                .toComparison();
-    }
-
-    private int getSpecificity() {
-        int res = 0;
-        if (isPositive(length)) {
-            res += 100;
-        }
-        if (isPositive(precision)) {
-            res += 100;
-        }
-        if (isPositive(scale)) {
-            res += 10;
-        }
-        if (this.notNull != null) {
-            res += 5;
-        }
-
-        return res;
-    }
-
-    public boolean isCover(DbType type) {
-        return this.jdbc.equals(type.jdbc)
-            && (isCover(length, type.length) || length == null && type.length == null && isCover(precision, type.precision))
-            && isCover(scale, type.scale)
-            && isCover(notNull, type.notNull);
-    }
-
-    private boolean isCover(Object a, Object b) {
-        return a == null || a.equals(b);
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DefaultJdbc2JavaTypeMapper.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DefaultJdbc2JavaTypeMapper.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DefaultJdbc2JavaTypeMapper.java
deleted file mode 100644
index 0af1690..0000000
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DefaultJdbc2JavaTypeMapper.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you 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 org.apache.cayenne.dbsync.reverse.mapper;
-
-import org.apache.cayenne.dba.TypesMapping;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.util.Util;
-
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.sql.Types;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-/**
- * @since 4.0.
- */
-public class DefaultJdbc2JavaTypeMapper implements Jdbc2JavaTypeMapper {
-
-	// Never use "-1" or any other normal integer, since there
-	// is a big chance it is being reserved in java.sql.Types
-	public static final int NOT_DEFINED = Integer.MAX_VALUE;
-
-	// char constants for Java data types
-	public static final String JAVA_LONG = "java.lang.Long";
-	public static final String JAVA_BYTES = "byte[]";
-	public static final String JAVA_BOOLEAN = "java.lang.Boolean";
-	public static final String JAVA_STRING = "java.lang.String";
-	public static final String JAVA_SQLDATE = "java.sql.Date";
-	public static final String JAVA_UTILDATE = "java.util.Date";
-	public static final String JAVA_BIGDECIMAL = "java.math.BigDecimal";
-	public static final String JAVA_DOUBLE = "java.lang.Double";
-	public static final String JAVA_FLOAT = "java.lang.Float";
-	public static final String JAVA_INTEGER = "java.lang.Integer";
-	public static final String JAVA_SHORT = "java.lang.Short";
-	public static final String JAVA_BYTE = "java.lang.Byte";
-	public static final String JAVA_TIME = "java.sql.Time";
-	public static final String JAVA_TIMESTAMP = "java.sql.Timestamp";
-	public static final String JAVA_BLOB = "java.sql.Blob";
-
-	/**
-	 * Keys: java class names, Values: SQL int type definitions from
-	 * java.sql.Types
-	 */
-	private final Map<String, Integer> javaSqlEnum = new HashMap<>();
-
-	private final Map<DbType, String> mapping = new HashMap<>();
-	private final SortedSet<DbType> dbTypes = new TreeSet<>();
-
-	private Map<String, String> classToPrimitive;
-
-	{
-		add(Types.BIGINT, JAVA_LONG);
-		add(Types.BINARY, JAVA_BYTES);
-		add(Types.BIT, JAVA_BOOLEAN);
-		add(Types.BOOLEAN, JAVA_BOOLEAN);
-		add(Types.BLOB, JAVA_BYTES);
-		add(Types.CLOB, JAVA_STRING);
-		add(Types.NCLOB, JAVA_STRING);
-		add(Types.SQLXML, JAVA_STRING);
-		add(Types.CHAR, JAVA_STRING);
-		add(Types.NCHAR, JAVA_STRING);
-		add(Types.DATE, JAVA_UTILDATE);
-		add(Types.DECIMAL, JAVA_BIGDECIMAL);
-		add(Types.DOUBLE, JAVA_DOUBLE);
-		add(Types.FLOAT, JAVA_FLOAT);
-		add(Types.INTEGER, JAVA_INTEGER);
-		add(Types.LONGVARCHAR, JAVA_STRING);
-		add(Types.LONGNVARCHAR, JAVA_STRING);
-		add(Types.LONGVARBINARY, JAVA_BYTES);
-		add(Types.NUMERIC, JAVA_BIGDECIMAL);
-		add(Types.REAL, JAVA_FLOAT);
-		add(Types.SMALLINT, JAVA_SHORT);
-		add(Types.TINYINT, JAVA_SHORT);
-		add(Types.TIME, JAVA_UTILDATE);
-		add(Types.TIMESTAMP, JAVA_UTILDATE);
-		add(Types.VARBINARY, JAVA_BYTES);
-		add(Types.VARCHAR, JAVA_STRING);
-		add(Types.NVARCHAR, JAVA_STRING);
-
-		javaSqlEnum.put(JAVA_LONG, Types.BIGINT);
-		javaSqlEnum.put(JAVA_BYTES, Types.BINARY);
-		javaSqlEnum.put(JAVA_BOOLEAN, Types.BIT);
-		javaSqlEnum.put(JAVA_STRING, Types.VARCHAR);
-		javaSqlEnum.put(JAVA_SQLDATE, Types.DATE);
-		javaSqlEnum.put(JAVA_UTILDATE, Types.DATE);
-		javaSqlEnum.put(JAVA_TIMESTAMP, Types.TIMESTAMP);
-		javaSqlEnum.put(JAVA_BIGDECIMAL, Types.DECIMAL);
-		javaSqlEnum.put(JAVA_DOUBLE, Types.DOUBLE);
-		javaSqlEnum.put(JAVA_FLOAT, Types.FLOAT);
-		javaSqlEnum.put(JAVA_INTEGER, Types.INTEGER);
-		javaSqlEnum.put(JAVA_SHORT, Types.SMALLINT);
-		javaSqlEnum.put(JAVA_BYTE, Types.SMALLINT);
-		javaSqlEnum.put(JAVA_TIME, Types.TIME);
-		javaSqlEnum.put(JAVA_TIMESTAMP, Types.TIMESTAMP);
-
-		// add primitives
-		javaSqlEnum.put("byte", Types.TINYINT);
-		javaSqlEnum.put("int", Types.INTEGER);
-		javaSqlEnum.put("short", Types.SMALLINT);
-		javaSqlEnum.put("char", Types.CHAR);
-		javaSqlEnum.put("double", Types.DOUBLE);
-		javaSqlEnum.put("long", Types.BIGINT);
-		javaSqlEnum.put("float", Types.FLOAT);
-		javaSqlEnum.put("boolean", Types.BIT);
-
-		classToPrimitive = new HashMap<>();
-		classToPrimitive.put(Byte.class.getName(), "byte");
-		classToPrimitive.put(Long.class.getName(), "long");
-		classToPrimitive.put(Double.class.getName(), "double");
-		classToPrimitive.put(Boolean.class.getName(), "boolean");
-		classToPrimitive.put(Float.class.getName(), "float");
-		classToPrimitive.put(Short.class.getName(), "short");
-		classToPrimitive.put(Integer.class.getName(), "int");
-	}
-
-	private Boolean usePrimitives;
-
-	/**
-	 * Returns default java.sql.Types type by the Java type name.
-	 *
-	 * @param className
-	 *            Fully qualified Java Class name.
-	 * @return The SQL type or NOT_DEFINED if no type found.
-	 */
-	public int getJdbcTypeByJava(DbAttribute attribute, String className) {
-		if (className == null) {
-			return NOT_DEFINED;
-		}
-
-		Integer type = javaSqlEnum.get(className);
-		if (type != null) {
-			return type;
-		}
-
-		// try to load a Java class - some nonstandard mappings may work
-		try {
-			return getSqlTypeByJava(attribute, Util.getJavaClass(className));
-		} catch (Throwable th) {
-			return NOT_DEFINED;
-		}
-	}
-
-	public void add(int jdbcType, String java) {
-		add(new DbType(TypesMapping.getSqlNameByType(jdbcType)), java);
-	}
-
-	@Override
-	public void add(DbType type, String java) {
-		mapping.put(type, java);
-		dbTypes.add(type);
-	}
-
-	/**
-	 * Guesses a default JDBC type for the Java class.
-	 *
-	 * @since 1.1
-	 */
-	protected int getSqlTypeByJava(DbAttribute attribute, Class<?> javaClass) {
-		if (javaClass == null) {
-			return NOT_DEFINED;
-		}
-
-		// check standard mapping of class and superclasses
-		Class<?> aClass = javaClass;
-		while (aClass != null) {
-
-			String name;
-
-			if (aClass.isArray()) {
-				name = aClass.getComponentType().getName() + "[]";
-			} else {
-				name = aClass.getName();
-			}
-
-			Object type = javaSqlEnum.get(name);
-			if (type != null) {
-				return ((Number) type).intValue();
-			}
-
-			aClass = aClass.getSuperclass();
-		}
-
-		// check non-standard JDBC types that are still supported by JPA
-		if (javaClass.isArray()) {
-
-			Class<?> elementType = javaClass.getComponentType();
-			if (Character.class.isAssignableFrom(elementType) || Character.TYPE.isAssignableFrom(elementType)) {
-				return Types.VARCHAR;
-			} else if (Byte.class.isAssignableFrom(elementType) || Byte.TYPE.isAssignableFrom(elementType)) {
-				return Types.VARBINARY;
-			}
-		}
-
-		if (Calendar.class.isAssignableFrom(javaClass)) {
-			return Types.TIMESTAMP;
-		}
-
-		if (BigInteger.class.isAssignableFrom(javaClass)) {
-			return Types.BIGINT;
-		}
-
-		if (Serializable.class.isAssignableFrom(javaClass)) {
-			// serializable check should be the last one when all other mapping
-			// attempts failed
-			return Types.VARBINARY;
-		}
-
-		return NOT_DEFINED;
-	}
-
-	/**
-	 * Get the corresponding Java type by its java.sql.Types counterpart. Note
-	 * that this method should be used as a last resort, with explicit mapping
-	 * provided by user used as a first choice, as it can only guess how to map
-	 * certain types, such as NUMERIC, etc.
-	 *
-	 * @return Fully qualified Java type name or null if not found.
-	 */
-	@Override
-	public String getJavaByJdbcType(DbAttribute attribute, int type) {
-		String jdbcType = TypesMapping.getSqlNameByType(type);
-		DbType dbType;
-		if (attribute != null) {
-			dbType = new DbType(jdbcType, attribute.getMaxLength(), attribute.getAttributePrecision(),
-					attribute.getScale(), attribute.isMandatory());
-		} else {
-			dbType = new DbType(jdbcType);
-		}
-
-		String typeName = getJavaByJdbcType(dbType);
-
-		if (usePrimitives != null && usePrimitives) {
-			String primitive = classToPrimitive.get(typeName);
-			if (primitive != null) {
-				return primitive;
-			}
-		}
-
-		return typeName;
-	}
-
-	public String getJavaByJdbcType(DbType type) {
-		for (DbType t : dbTypes) {
-			if (t.isCover(type)) {
-				// because dbTypes sorted by specificity we will take first and
-				// the most specific matching
-				// that applicable for attribute
-				return mapping.get(t);
-			}
-		}
-
-		return null;
-	}
-
-	public Boolean getUsePrimitives() {
-		return usePrimitives;
-	}
-
-	public void setUsePrimitives(Boolean usePrimitives) {
-		this.usePrimitives = usePrimitives;
-	}
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/Jdbc2JavaTypeMapper.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/Jdbc2JavaTypeMapper.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/Jdbc2JavaTypeMapper.java
deleted file mode 100644
index 71d86d5..0000000
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/Jdbc2JavaTypeMapper.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you 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 org.apache.cayenne.dbsync.reverse.mapper;
-
-import org.apache.cayenne.map.DbAttribute;
-
-/**
- * @since 4.0.
- */
-public interface Jdbc2JavaTypeMapper {
-
-    String getJavaByJdbcType(DbAttribute attribute, int type);
-
-    int getJdbcTypeByJava(DbAttribute attribute, String className);
-
-    void add(DbType type, String java);
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
index 290dba8..11ac007 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.map.naming.NameConverter;
  * BasicNamingStrategy is an naming strategy that creates names in Cayenne's
  * old-fashioned manner, i.e. the same way Cayenne did before 3.0
  * 
- * @since 3.0
+ * @since 4.0
  */
 public class LegacyObjectNameGenerator implements ObjectNameGenerator {
     public String createDbRelationshipName(

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/mapper/DbTypeTest.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/mapper/DbTypeTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/mapper/DbTypeTest.java
deleted file mode 100644
index f2cb475..0000000
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/mapper/DbTypeTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 org.apache.cayenne.dbsync.reverse.mapper;
-
-import org.junit.Test;
-
-import java.util.Iterator;
-import java.util.TreeSet;
-
-import static org.junit.Assert.*;
-
-public class DbTypeTest {
-
-    @Test
-    public void testCompareTo() throws Exception {
-        TreeSet<DbType> set = new TreeSet<DbType>();
-        set.add(new DbType("type-01", null, null, null, null));
-        set.add(new DbType("type-02", null, null, null, null));
-        set.add(new DbType("type-02", 1, null, null, null));
-        set.add(new DbType("type-02", 2, null, null, null));
-        set.add(new DbType("type-02", 2, null, null, true));
-        set.add(new DbType("type-02", 2, null, null, false));
-        set.add(new DbType("type-02", 2, null, 5, null));
-        set.add(new DbType("type-02", 2, null, 5, false));
-        set.add(new DbType("type-02", 2, null, 5, true));
-        set.add(new DbType("type-02", null, 8, 5, true));
-        set.add(new DbType("type-02", null, 9, 5, true));
-
-        Iterator<DbType> iterator = set.iterator();
-        assertEquals(new DbType("type-02", 2, null, 5, true), iterator.next());
-        assertEquals(new DbType("type-02", 2, null, 5, false), iterator.next());
-        assertEquals(new DbType("type-02", null, 9, 5, true), iterator.next());
-        assertEquals(new DbType("type-02", null, 8, 5, true), iterator.next());
-        assertEquals(new DbType("type-02", 2, null, 5, null), iterator.next());
-        assertEquals(new DbType("type-02", 2, null, null, true), iterator.next());
-        assertEquals(new DbType("type-02", 2, null, null, false), iterator.next());
-        assertEquals(new DbType("type-02", 2, null, null, null), iterator.next());
-        assertEquals(new DbType("type-02", 1, null, null, null), iterator.next());
-        assertEquals(new DbType("type-02", null, null, null, null), iterator.next());
-        assertEquals(new DbType("type-01", null, null, null, null), iterator.next());
-    }
-
-    @Test
-    public void testCover() throws Exception {
-        DbType typeJava = new DbType("java");
-        assertTrue(typeJava.isCover(typeJava));
-        assertTrue(typeJava.isCover(new DbType("java", 1, 1, 1, null)));
-        assertTrue(typeJava.isCover(new DbType("java", 1, null, null, null)));
-        assertTrue(typeJava.isCover(new DbType("java", null, 1, null, null)));
-        assertTrue(typeJava.isCover(new DbType("java", null, null, 1, null)));
-        assertTrue(typeJava.isCover(new DbType("java", null, null, null, true)));
-        assertTrue(typeJava.isCover(new DbType("java", null, null, null, false)));
-        assertFalse(typeJava.isCover(new DbType("java1", null, null, null, null)));
-
-        DbType typeWithLength = new DbType("java", 1, null, null, null);
-        assertTrue(typeWithLength.isCover(typeWithLength));
-        assertTrue(typeWithLength.isCover(new DbType("java", 1, null, 1, null)));
-        assertTrue(typeWithLength.isCover(new DbType("java", 1, null, 1, true)));
-        assertTrue(typeWithLength.isCover(new DbType("java", 1, null, null, true)));
-        assertTrue(typeWithLength.isCover(new DbType("java", 1, 1, null, true)));
-        assertFalse(typeWithLength.isCover(new DbType("java", 2, null, null, null)));
-        assertFalse(typeWithLength.isCover(new DbType("java", null, null, null, true)));
-        assertFalse(typeWithLength.isCover(new DbType("java1", 2, null, null, null)));
-
-        DbType typeWithLengthAndNotNull = new DbType("java", 1, null, null, true);
-        assertTrue(typeWithLength.isCover(typeWithLengthAndNotNull));
-        assertTrue(typeWithLength.isCover(new DbType("java", 1, null, 1, true)));
-        assertTrue(typeWithLength.isCover(new DbType("java", 1, 1, 1, true)));
-    }
-}
\ No newline at end of file