|
From: <one...@us...> - 2003-01-09 12:24:53
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl
In directory sc8-pr-cvs1:/tmp/cvs-serv16192/net/sf/hibernate/impl
Modified Files:
DatastoreImpl.java SessionImpl.java
Log Message:
redesigned id generator package
applied Mark Woon's patch for generated alias lengths
minor refactoring of Transaction package
Index: DatastoreImpl.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/DatastoreImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** DatastoreImpl.java 5 Jan 2003 02:11:21 -0000 1.3
--- DatastoreImpl.java 9 Jan 2003 12:24:51 -0000 1.4
***************
*** 26,29 ****
--- 26,30 ----
import net.sf.hibernate.tool.hbm2ddl.JdbcDatabaseInfo;
import net.sf.hibernate.tool.hbm2ddl.JdbcTableInfo;
+ import net.sf.hibernate.id.IdentifierGenerator;
import net.sf.hibernate.id.PersistentIdentifierGenerator;
import net.sf.hibernate.cfg.*;
***************
*** 38,42 ****
private HashMap collections = new HashMap();
private HashMap tables = new HashMap();
- private HashMap generators = new HashMap();
private HashMap namedQueries = new HashMap();
--- 39,42 ----
***************
*** 104,108 ****
private void store(Document doc) throws Exception {
try {
! new Root(doc, classes, collections, tables, generators, namedQueries);
}
catch (MappingException me) {
--- 104,108 ----
private void store(Document doc) throws Exception {
try {
! new Root(doc, classes, collections, tables, namedQueries);
}
catch (MappingException me) {
***************
*** 181,184 ****
--- 181,196 ----
}
+
+ private Iterator iterateGenerators(Dialect dialect) throws MappingException {
+ HashMap generators = new HashMap();
+ Iterator iter = classes.values().iterator();
+ while ( iter.hasNext() ) {
+ IdentifierGenerator ig = ( (PersistentClass) iter.next() ).getIdentifier().createIdentifierGenerator(dialect);
+ if ( ig instanceof PersistentIdentifierGenerator ) generators.put(
+ ( (PersistentIdentifierGenerator) ig ).generatorKey(), ig
+ );
+ }
+ return generators.values().iterator();
+ }
public String[] generateDropSchemaScript(Dialect dialect) throws HibernateException {
***************
*** 200,207 ****
}
Iterator iter = getTableMaps();
! while ( iter.hasNext() ) script.add( ( (Table) iter.next() ).sqlDropString(dialect) );
! iter = generators.values().iterator();
while ( iter.hasNext() ) {
String dropString = ( (PersistentIdentifierGenerator) iter.next() ).sqlDropString(dialect);
--- 212,223 ----
}
+
Iterator iter = getTableMaps();
! while ( iter.hasNext() ) {
! Table table = (Table) iter.next();
! script.add( table.sqlDropString(dialect) );
! }
! iter = iterateGenerators(dialect);
while ( iter.hasNext() ) {
String dropString = ( (PersistentIdentifierGenerator) iter.next() ).sqlDropString(dialect);
***************
*** 243,247 ****
}
! iter = generators.values().iterator();
while ( iter.hasNext() )
{
--- 259,263 ----
}
! iter = iterateGenerators(dialect);
while ( iter.hasNext() )
{
***************
*** 261,265 ****
while ( iter.hasNext() ) {
Table table = (Table) iter.next();
! JdbcTableInfo tableInfo = databaseInfo.getTableInfo(table.getName());
if (tableInfo == null) {
script.add( table.sqlCreateString(dialect, this) );
--- 277,281 ----
while ( iter.hasNext() ) {
Table table = (Table) iter.next();
! JdbcTableInfo tableInfo = databaseInfo.getTableInfo( table.getName() );
if (tableInfo == null) {
script.add( table.sqlCreateString(dialect, this) );
***************
*** 267,303 ****
else {
final String sql = table.sqlAlterString(dialect, this, tableInfo);
! if (sql != null) script.add(sql);
}
}
iter = getTableMaps();
! while (iter.hasNext()) {
! Table table = (Table)iter.next();
! JdbcTableInfo tableInfo = databaseInfo.getTableInfo(table.getName());
Iterator subIter;
! if (dialect.hasAlterTable()) {
subIter = table.foreignKeyIterator();
while (subIter.hasNext()) {
! ForeignKey fk = (ForeignKey)subIter.next();
! if (tableInfo == null || tableInfo.getForeignKeyInfo(fk.getName())==null)
! script.add(fk.sqlCreateString(dialect, this));
}
}
subIter = table.indexIterator();
! while (subIter.hasNext()) {
Index index = (Index)subIter.next();
! if (tableInfo == null || tableInfo.getIndexInfo(index.getName())==null)
! script.add(index.sqlCreateString(dialect, this));
}
}
! iter = generators.values().iterator();
! while (iter.hasNext()) {
! PersistentIdentifierGenerator generator = (PersistentIdentifierGenerator)iter.next();
! if (!databaseInfo.isSequence(generator.generatorKey())) {
String[] lines = generator.sqlCreateStrings(dialect);
! for (int i = 0; i < lines.length; i++) script.add(lines[i]);
}
}
--- 283,320 ----
else {
final String sql = table.sqlAlterString(dialect, this, tableInfo);
! if (sql!=null) script.add(sql);
}
}
iter = getTableMaps();
! while ( iter.hasNext() ) {
! Table table = (Table) iter.next();
! JdbcTableInfo tableInfo = databaseInfo.getTableInfo( table.getName() );
Iterator subIter;
! if ( dialect.hasAlterTable() ) {
subIter = table.foreignKeyIterator();
while (subIter.hasNext()) {
! ForeignKey fk = (ForeignKey) subIter.next();
! if ( tableInfo == null || tableInfo.getForeignKeyInfo( fk.getName() ) == null )
! script.add( fk.sqlCreateString(dialect, this) );
}
}
subIter = table.indexIterator();
! while ( subIter.hasNext() ) {
Index index = (Index)subIter.next();
! if ( tableInfo == null || tableInfo.getIndexInfo( index.getName() )==null )
! script.add( index.sqlCreateString(dialect, this) );
}
}
! iter = iterateGenerators(dialect);
! while ( iter.hasNext() ) {
! PersistentIdentifierGenerator generator = (PersistentIdentifierGenerator) iter.next();
! Object key = generator.generatorKey();
! if ( !databaseInfo.isSequence(key) && !databaseInfo.isTable(key) ) {
String[] lines = generator.sqlCreateStrings(dialect);
! for (int i = 0; i < lines.length; i++) script.add( lines[i] );
}
}
Index: SessionImpl.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/SessionImpl.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** SessionImpl.java 5 Jan 2003 02:11:21 -0000 1.6
--- SessionImpl.java 9 Jan 2003 12:24:51 -0000 1.7
***************
*** 124,128 ****
private transient Batcher batcher;
!
static final class Status implements Serializable {
private String name;
--- 124,128 ----
private transient Batcher batcher;
!
static final class Status implements Serializable {
private String name;
***************
*** 1604,1607 ****
--- 1604,1608 ----
return factory.getTransactionFactory().beginTransaction(this);
}
+
/**
|