|
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 ----
}
!
!
|