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); } + /** |