From: <cs...@us...> - 2002-11-04 00:55:33
|
Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/map In directory usw-pr-cvs1:/tmp/cvs-serv31063/cirrus/hibernate/map Modified Files: Table.java Log Message: dynamic schema update Index: Table.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/map/Table.java,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** Table.java 1 Oct 2002 01:25:30 -0000 1.26 --- Table.java 4 Nov 2002 00:55:30 -0000 1.27 *************** *** 9,15 **** import cirrus.hibernate.id.Assigned; import cirrus.hibernate.id.IdentifierGenerator; ! import cirrus.hibernate.id.NativeGenerator; import cirrus.hibernate.sql.Dialect; import cirrus.hibernate.sql.HSQLDialect; import cirrus.hibernate.HibernateException; public class Table implements RelationalModel { --- 9,17 ---- import cirrus.hibernate.id.Assigned; import cirrus.hibernate.id.IdentifierGenerator; ! import cirrus.hibernate.id.NativeGenerator; ! import cirrus.hibernate.sql.Dialect; import cirrus.hibernate.sql.HSQLDialect; import cirrus.hibernate.HibernateException; + import cirrus.hibernate.tools.JdbcColumnInfo; public class Table implements RelationalModel { *************** *** 20,33 **** private PrimaryKey primaryKey; private int counter=0; ! public Table() {} ! public String getQualifiedName() { return (schema==null) ? name : schema + '.' + name; } ! public String getQualifiedName(String defaultQualifier) { return ( schema==null ) ? ( (defaultQualifier==null) ? name : defaultQualifier + '.' + name ) : getQualifiedName(); } ! public String getName() { return name; --- 22,36 ---- private PrimaryKey primaryKey; private int counter=0; ! ! public Table() {} ! public String getQualifiedName() { return (schema==null) ? name : schema + '.' + name; } ! public String getQualifiedName(String defaultQualifier) { return ( schema==null ) ? ( (defaultQualifier==null) ? name : defaultQualifier + '.' + name ) : getQualifiedName(); } ! public String getName() { return name; *************** *** 52,55 **** --- 55,97 ---- } + public String sqlAlterString(Dialect dialect,Mapping p,java.util.Map columns) throws HibernateException { + + // String pkname = null; + // // Try to find out the name of the primary key to create it as identity if the NativeGenerator is used + // boolean createIdentity; + // if (primaryKey != null) { + // createIdentity = dialect.supportsIdentityColumns() && ( identifierGenerator instanceof NativeGenerator ); + // pkname = ( (Column) primaryKey.getColumnIterator().next() ).getName(); + // } + // else + // createIdentity = false; + + Iterator iter=columnIterator(); + StringBuffer buf=new StringBuffer(50); + while (iter.hasNext()) { + Column col=(Column) iter.next(); + + String name=col.getName().toLowerCase(); + JdbcColumnInfo ci=(JdbcColumnInfo) columns.get(name); + + if (ci==null) { + // the column doesnt exist at all. + if (buf.length()!=0) + buf.append(','); + buf.append("add ").append(name).append(' ').append(col.getSqlType(dialect,p)); + if (col.isUnique()&&dialect.supportsUnique()) { + buf.append(" unique"); + } + } + + } + + if (buf.length()==0) + return null; + + return new StringBuffer("alter table ").append(getQualifiedName()).append(" ").append(buf).toString(); + + } + public String sqlCreateString(Dialect dialect, Mapping p) throws HibernateException { StringBuffer buf = new StringBuffer("create table ") *************** *** 66,70 **** else createIdentity = false; ! Iterator iter = columnIterator(); while ( iter.hasNext() ) { --- 108,112 ---- else createIdentity = false; ! Iterator iter = columnIterator(); while ( iter.hasNext() ) { *************** *** 74,78 **** .append(' ') .append( col.getSqlType(dialect, p) ); ! if ( createIdentity && col.getName().equals(pkname) ) { buf.append(' ') --- 116,120 ---- .append(' ') .append( col.getSqlType(dialect, p) ); ! if ( createIdentity && col.getName().equals(pkname) ) { buf.append(' ') *************** *** 87,91 **** } } ! if ( col.isUnique() && dialect.supportsUnique() ) { buf.append(" unique"); --- 129,133 ---- } } ! if ( col.isUnique() && dialect.supportsUnique() ) { buf.append(" unique"); *************** *** 104,108 **** } buf.append(")"); ! return buf.toString(); } --- 146,150 ---- } buf.append(")"); ! return buf.toString(); } *************** *** 110,114 **** return "drop table " + getQualifiedName() + dialect.getCascadeConstraintsString(); } ! public IdentifierGenerator getIdentifierGenerator() { return identifierGenerator; } --- 152,157 ---- return "drop table " + getQualifiedName() + dialect.getCascadeConstraintsString(); } ! ! public IdentifierGenerator getIdentifierGenerator() { return identifierGenerator; } *************** *** 124,128 **** this.primaryKey = primaryKey; } ! public int generateConstraintID() { return counter++; } --- 167,172 ---- this.primaryKey = primaryKey; } ! ! public int generateConstraintID() { return counter++; } *************** *** 138,140 **** } ! --- 182,185 ---- } ! ! |