You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by to...@apache.org on 2004/07/20 00:14:01 UTC
cvs commit: jakarta-commons-sandbox/sql/src/test-input jdbc-type-mappings.csv
tomdz 2004/07/19 15:14:00
Modified: sql/src/java/org/apache/commons/sql/model Column.java
IndexColumn.java Database.java Reference.java
Table.java ForeignKey.java UniqueColumn.java
Unique.java Index.java
Added: sql/src/test-input jdbc-type-mappings.csv
Log:
Added ability to merge two database models
Revision Changes Path
1.13 +22 -2 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Column.java
Index: Column.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Column.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Column.java 18 Jul 2004 21:55:58 -0000 1.12
+++ Column.java 19 Jul 2004 22:14:00 -0000 1.13
@@ -15,8 +15,7 @@
*/
package org.apache.commons.sql.model;
-
-public class Column
+public class Column implements Cloneable
{
private String name;
private String javaName;
@@ -35,6 +34,27 @@
{
}
+ /* (non-Javadoc)
+ * @see java.lang.Object#clone()
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ Column result = new Column();
+
+ result.name = name;
+ result.javaName = javaName;
+ result.primaryKey = primaryKey;
+ result.required = required;
+ result.autoIncrement = autoIncrement;
+ result.typeCode = typeCode;
+ result.type = type;
+ result.size = size;
+ result.defaultValue = defaultValue;
+ result.scale = scale;
+ result.precisionRadix = precisionRadix;
+ result.ordinalPosition = ordinalPosition;
+ return result;
+ }
public Column(String name, String javaName, int typeCode, String size, boolean required, boolean
primaryKey, boolean autoIncrement, String defaultValue)
1.4 +26 -4 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/IndexColumn.java
Index: IndexColumn.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/IndexColumn.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- IndexColumn.java 28 Feb 2004 03:35:48 -0000 1.3
+++ IndexColumn.java 19 Jul 2004 22:14:00 -0000 1.4
@@ -15,13 +15,25 @@
*/
package org.apache.commons.sql.model;
-public class IndexColumn
+public class IndexColumn implements Cloneable
{
- private String name;
- private String size;
+ protected String name;
+ protected String size;
public IndexColumn() {}
-
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#clone()
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ IndexColumn result = new IndexColumn();
+
+ result.name = name;
+ result.size = size;
+ return result;
+ }
+
public String getName()
{
return name;
@@ -30,5 +42,15 @@
public void setName(String name)
{
this.name = name;
+ }
+
+ public String getSize()
+ {
+ return size;
+ }
+
+ public void setSize(String size)
+ {
+ this.size = size;
}
}
1.8 +28 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Database.java
Index: Database.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Database.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Database.java 28 Feb 2004 03:35:48 -0000 1.7
+++ Database.java 19 Jul 2004 22:14:00 -0000 1.8
@@ -41,6 +41,34 @@
{
}
+ /**
+ * Adds all tables from the other database to this database.
+ * Note that the other database is not changed.
+ *
+ * @param otherDb The other database model
+ * @exception IllegalArgumentException If duplicated tables were found
+ */
+ public void mergeWith(Database otherDb) throws IllegalArgumentException
+ {
+ for (Iterator it = otherDb.tables.iterator(); it.hasNext();)
+ {
+ Table table = (Table)it.next();
+
+ if (findTable(table.getName()) != null)
+ {
+ throw new IllegalArgumentException("Table "+table.getName()+" already defined in this database");
+ }
+ try
+ {
+ addTable((Table)table.clone());
+ }
+ catch (CloneNotSupportedException ex)
+ {
+ // won't happen
+ }
+ }
+ }
+
public String getName()
{
return name;
1.5 +15 -2 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Reference.java
Index: Reference.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Reference.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Reference.java 28 Feb 2004 03:35:48 -0000 1.4
+++ Reference.java 19 Jul 2004 22:14:00 -0000 1.5
@@ -15,13 +15,26 @@
*/
package org.apache.commons.sql.model;
-public class Reference
+
+public class Reference implements Cloneable
{
private String local;
private String foreign;
public Reference() {}
-
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#clone()
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ Reference result = new Reference();
+
+ result.local = local;
+ result.foreign = foreign;
+ return result;
+ }
+
public String getLocal()
{
return local;
1.14 +23 -4 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Table.java
Index: Table.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Table.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- Table.java 18 Jul 2004 21:55:58 -0000 1.13
+++ Table.java 19 Jul 2004 22:14:00 -0000 1.14
@@ -29,7 +29,7 @@
import org.apache.commons.collections.iterators.FilterIterator;
import org.apache.commons.collections.Predicate;
-public class Table
+public class Table implements Cloneable
{
private static final Predicate UNIQUE_PREDICATE = new Predicate() {
public boolean evaluate(Object input) {
@@ -49,14 +49,33 @@
private String type = null;
- private List columns = new ArrayList();
+ private ArrayList columns = new ArrayList();
- private List foreignKeys = new ArrayList();
+ private ArrayList foreignKeys = new ArrayList();
- private List indexes = new ArrayList();
+ private ArrayList indexes = new ArrayList();
public Table()
{
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#clone()
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ Table result = new Table();
+
+ result.catalog = catalog;
+ result.name = name;
+ result.javaName = javaName;
+ result.schema = schema;
+ result.remarks = remarks;
+ result.type = type;
+ result.columns = (ArrayList)columns.clone();
+ result.foreignKeys = (ArrayList)foreignKeys.clone();
+ result.indexes = (ArrayList)indexes.clone();
+ return result;
}
public String getCatalog()
1.6 +14 -2 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/ForeignKey.java
Index: ForeignKey.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/ForeignKey.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ForeignKey.java 28 Feb 2004 03:35:48 -0000 1.5
+++ ForeignKey.java 19 Jul 2004 22:14:00 -0000 1.6
@@ -18,14 +18,26 @@
import java.util.ArrayList;
import java.util.List;
-public class ForeignKey
+public class ForeignKey implements Cloneable
{
private String foreignTable;
- private List references = new ArrayList();
+ private ArrayList references = new ArrayList();
public ForeignKey() {}
+ /* (non-Javadoc)
+ * @see java.lang.Object#clone()
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ ForeignKey result = new ForeignKey();
+
+ result.foreignTable = foreignTable;
+ result.references = (ArrayList)references.clone();
+ return result;
+ }
+
public String getForeignTable()
{
return foreignTable;
1.3 +27 -16 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/UniqueColumn.java
Index: UniqueColumn.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/UniqueColumn.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- UniqueColumn.java 28 Feb 2004 03:35:48 -0000 1.2
+++ UniqueColumn.java 19 Jul 2004 22:14:00 -0000 1.3
@@ -12,19 +12,30 @@
* 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.commons.sql.model;
-
-/**
- * Provides compatibility with Torque-style xml with separate <index> and
- * <unique> tags, but adds no functionality. All indexes are treated the
- * same by the Table.
- *
- * @author <a href="mailto:jmarshall@connectria.com">John Marshall</a>
- * @version $Revision$
- */
-public class UniqueColumn extends IndexColumn
-{
- public UniqueColumn() {}
-
-}
+ */
+package org.apache.commons.sql.model;
+
+/**
+ * Provides compatibility with Torque-style xml with separate <index> and
+ * <unique> tags, but adds no functionality. All indexes are treated the
+ * same by the Table.
+ *
+ * @author <a href="mailto:jmarshall@connectria.com">John Marshall</a>
+ * @version $Revision$
+ */
+public class UniqueColumn extends IndexColumn
+{
+ public UniqueColumn() {}
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#clone()
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ UniqueColumn result = new UniqueColumn();
+
+ result.name = name;
+ result.size = size;
+ return result;
+ }
+}
1.4 +16 -2 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Unique.java
Index: Unique.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Unique.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Unique.java 2 Mar 2004 13:18:31 -0000 1.3
+++ Unique.java 19 Jul 2004 22:14:00 -0000 1.4
@@ -15,6 +15,7 @@
*/
package org.apache.commons.sql.model;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -30,7 +31,20 @@
public Unique() {
setUnique( true );
}
-
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#clone()
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ Unique result = new Unique();
+
+ result.name = name;
+ result.indexColumns = (ArrayList)indexColumns.clone();
+ result.unique = unique;
+ return result;
+ }
+
public void setUnique(boolean unique) {
if ( unique == false ) {
throw new IllegalArgumentException( "Unique index cannot be made non-unique" );
1.6 +18 -7 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Index.java
Index: Index.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/model/Index.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Index.java 28 Feb 2004 03:35:48 -0000 1.5
+++ Index.java 19 Jul 2004 22:14:00 -0000 1.6
@@ -18,16 +18,27 @@
import java.util.ArrayList;
import java.util.List;
-public class Index
+public class Index implements Cloneable
{
- private String name;
-
- private List indexColumns = new ArrayList();
-
- private boolean unique = false;
+ protected String name;
+ protected ArrayList indexColumns = new ArrayList();
+ protected boolean unique = false;
public Index() {}
-
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#clone()
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ Index result = new Index();
+
+ result.name = name;
+ result.indexColumns = (ArrayList)indexColumns.clone();
+ result.unique = unique;
+ return result;
+ }
+
public String getName()
{
return name;
1.1 jakarta-commons-sandbox/sql/src/test-input/jdbc-type-mappings.csv
Index: jdbc-type-mappings.csv
===================================================================
Jdbc 3 Type;Axion;DB2;HsqlDb;Mckoi;MSSql;MySql;Oracle;Postgresql;SapDB;Sybase
BIGINT;BIGINT;BIGINT;BIGINT;BIGINT;BIGINT;BIGINT;NUMBER(20,0);BIGINT;FIXED(38,0);BIGINT
BINARY;BINARY;CHAR FOR BIT DATA;BINARY;BINARY;BINARY;BLOB;BLOB;BYTEA;LONG BYTE;BINARY
BIT;BIT;DECIMAL(1,0);BIT;TINYINT;BIT;BIT;NUMBER(1,0);BIT;FIXED(1,0);BIT
BLOB;;BLOB;-;BLOB;IMAGE;LONGBLOB;BLOB;BYTEA;LONG BYTE;IMAGE
BOOLEAN;;DECIMAL(1,0);BIT;BOOLEAN;BIT;BIT;NUMBER(1,0);BOOLEAN;BOOLEAN;BIT
CHAR;VARCHAR;CHAR;CHAR;CHAR;NCHAR;CHAR;CHAR;CHAR;CHAR(n) UNICODE;UNICHAR
CLOB;;CLOB;-;CLOB;NTEXT;LONGTEXT;CLOB;TEXT;LONG UNICODE;TEXT
DATE;DATE;DATE;DATE;DATE;DATETIME;DATE;DATE;DATE;DATE;DATE
DECIMAL;INTEGER;DECIMAL;DECIMAL;DECIMAL;DECIMAL;DECIMAL;NUMBER;DECIMAL;DECIMAL;DECIMAL
DOUBLE;DOUBLE;DOUBLE;DOUBLE;DOUBLE;FLOAT;DOUBLE;FLOAT;DOUBLE PRECISION;DOUBLE PRECISION;DOUBLE PRECISION
FLOAT;FLOAT;FLOAT;FLOAT;FLOAT;FLOAT;DOUBLE;FLOAT;DOUBLE PRECISION;FLOAT;DOUBLE PRECISION
INTEGER;INTEGER;INTEGER;INTEGER;INTEGER;INT;INTEGER;NUMBER(38);INTEGER;INTEGER;INTEGER
LONGVARBINARY;LONGVARBINARY;LONG VARCHAR FOR BIT DATA;LONGVARBINARY;LONGVARBINARY;IMAGE;MEDIUMBLOB;BLOB;BYTEA;LONG BYTE;IMAGE
LONGVARCHAR;VARCHAR;LONG VARCHAR;VARCHAR;LONGVARCHAR;TEXT;MEDIUMTEXT;CLOB;BYTEA;LONG UNICODE;TEXT
NUMERIC;NUMERIC;NUMERIC;NUMERIC;NUMERIC;NUMERIC;NUMERIC;NUMBER;NUMERIC;NUMERIC;NUMERIC
REAL;REAL;REAL;REAL;FLOAT;REAL;FLOAT;FLOAT;REAL;REAL;REAL
SMALLINT;SMALLINT;SMALLINT;SMALLINT;SMALLINT;SMALLINT;SMALLINT;NUMBER(5,0);SMALLINT;SMALLINT;SMALLINT
TIME;TIME;TIME;TIME;TIME;DATETIME;TIME;DATE;TIME;TIME;TIME
TIMESTAMP;TIMESTAMP;TIMESTAMP;TIMESTAMP;TIMESTAMP;DATETIME;TIMESTAMP;DATE;TIMESTAMP;TIMESTAMP;DATETIME
TINYINT;TINYINT;SMALLINT;TINYINT;TINYINT;TINYINT;TINYINT;NUMBER(3,0);SMALLINT;SMALLINT;TINYINT
VARBINARY;BINARY;VARCHAR FOR BIT DATA;VARBINARY;VARBINARY;VARBINARY;BLOB;BLOB;BYTEA;LONG BYTE;VARBINARY
VARCHAR;VARCHAR;VARCHAR;VARCHAR;VARCHAR;NVARCHAR;VARCHAR;VARCHAR2(n);VARCHAR;VARCHAR(n) UNICODE;UNIVARCHAR
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org