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 &lt;index&gt; and
  + * &lt;unique&gt; 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