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:[EMAIL PROTECTED]">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:[EMAIL PROTECTED]">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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to