From: <one...@us...> - 2002-12-14 09:27:58
|
Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/impl In directory sc8-pr-cvs1:/tmp/cvs-serv888/impl Modified Files: DatastoreImpl.java QueryImpl.java ScrollableResultsImpl.java Log Message: Benoit Menendez patches to SchemaUpdater and blob support Index: DatastoreImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/impl/DatastoreImpl.java,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** DatastoreImpl.java 24 Nov 2002 11:48:11 -0000 1.22 --- DatastoreImpl.java 14 Dec 2002 09:27:55 -0000 1.23 *************** *** 25,28 **** --- 25,30 ---- import cirrus.hibernate.Datastore; import cirrus.hibernate.MappingException; + import cirrus.hibernate.tools.updater.JdbcDatabaseInfo; + import cirrus.hibernate.tools.updater.JdbcTableInfo; import cirrus.hibernate.id.PersistentIdentifierGenerator; import cirrus.hibernate.sql.Dialect; *************** *** 35,42 **** private HashMap classes = new HashMap(); private HashMap collections = new HashMap(); ! private ArrayList tables = new ArrayList(); ! private ArrayList primaryKeys = new ArrayList(); ! private ArrayList foreignKeys = new ArrayList(); ! private ArrayList indexes = new ArrayList(); private HashMap generators = new HashMap(); private HashMap namedQueries = new HashMap(); --- 37,41 ---- private HashMap classes = new HashMap(); private HashMap collections = new HashMap(); ! private HashMap tables = new HashMap(); private HashMap generators = new HashMap(); private HashMap namedQueries = new HashMap(); *************** *** 59,62 **** --- 58,65 ---- } + public Iterator getTableMaps() { + return tables.values().iterator(); + } + public PersistentClass getPersistentClass(Class persistentClass) { return (PersistentClass) classes.get(persistentClass); *************** *** 101,105 **** private void store(Document doc) throws Exception { try { ! new Root(doc, classes, collections, tables, foreignKeys, primaryKeys, indexes, generators, namedQueries); } catch (MappingException me) { --- 104,108 ---- private void store(Document doc) throws Exception { try { ! new Root(doc, classes, collections, tables, generators, namedQueries); } catch (MappingException me) { *************** *** 186,194 **** if ( dialect.dropConstraints() ) { ! Iterator iter = foreignKeys.iterator(); ! while ( iter.hasNext() ) script.add( ( (Constraint) iter.next() ).sqlDropString(dialect) ); } ! Iterator iter = tables.iterator(); while ( iter.hasNext() ) script.add( ( (Table) iter.next() ).sqlDropString(dialect) ); --- 189,204 ---- if ( dialect.dropConstraints() ) { ! Iterator iter = getTableMaps(); ! while ( iter.hasNext() ) { ! Table table = (Table)iter.next(); ! Iterator subIter = table.foreignKeyIterator(); ! while ( subIter.hasNext() ) { ! ForeignKey fk = (ForeignKey)subIter.next(); ! script.add(fk.sqlDropString(dialect)); ! } ! } } ! Iterator iter = getTableMaps(); while ( iter.hasNext() ) script.add( ( (Table) iter.next() ).sqlDropString(dialect) ); *************** *** 207,211 **** ArrayList script = new ArrayList(50); ! Iterator iter = tables.iterator(); while ( iter.hasNext() ) { Table table = (Table) iter.next(); --- 217,221 ---- ArrayList script = new ArrayList(50); ! Iterator iter = getTableMaps(); while ( iter.hasNext() ) { Table table = (Table) iter.next(); *************** *** 213,226 **** } ! iter = primaryKeys.iterator(); ! while ( iter.hasNext() ) script.add( ( (Constraint) iter.next() ).sqlCreateString(dialect, this) ); ! if( dialect.hasAlterTable() ) { ! iter = foreignKeys.iterator(); ! while ( iter.hasNext() ) script.add( ( (Constraint) iter.next() ).sqlCreateString(dialect, this) ); ! } ! iter = indexes.iterator(); ! while ( iter.hasNext() ) script.add( ( (Index) iter.next() ).sqlCreateString(dialect, this) ); iter = generators.values().iterator(); --- 223,245 ---- } ! iter = getTableMaps(); ! while (iter.hasNext()) { ! Table table = (Table)iter.next(); ! Iterator subIter; ! if (dialect.hasAlterTable()) { ! subIter = table.foreignKeyIterator(); ! while (subIter.hasNext()) { ! ForeignKey fk = (ForeignKey)subIter.next(); ! script.add(fk.sqlCreateString(dialect, this)); ! } ! } ! subIter = table.indexIterator(); ! while (subIter.hasNext()) { ! Index index = (Index)subIter.next(); ! script.add(index.sqlCreateString(dialect, this)); ! } ! } iter = generators.values().iterator(); *************** *** 234,285 **** } ! public String[] generateSchemaUpdateScript(Dialect dialect, java.util.Map tableColumnInfo) throws HibernateException { secondPassCompile(); ArrayList script = new ArrayList(50); ! Iterator iter = tables.iterator(); while ( iter.hasNext() ) { Table table = (Table) iter.next(); ! java.util.Map ci = (java.util.Map) tableColumnInfo.get( table.getName().toLowerCase() ); ! if (ci == null) { script.add( table.sqlCreateString(dialect, this) ); } else { ! final String sql = table.sqlAlterString(dialect, this, ci); if (sql != null) script.add(sql); } } ! iter = primaryKeys.iterator(); ! while ( iter.hasNext() ) { ! Constraint constraint = (Constraint) iter.next(); ! if ( !tableColumnInfo.containsKey( constraint.getName() ) ) ! script.add( constraint.sqlCreateString(dialect, this) ); ! } ! if( dialect.hasAlterTable() ) { ! iter = foreignKeys.iterator(); ! while ( iter.hasNext() ) { ! Constraint constraint = (Constraint) iter.next(); ! if ( !tableColumnInfo.containsKey( constraint.getName() ) ) ! script.add( constraint.sqlCreateString(dialect, this) ); } - } ! iter = indexes.iterator(); ! while ( iter.hasNext() ) { ! Index constraint = (Index) iter.next(); ! if (!tableColumnInfo.containsKey(constraint.getName())) ! script.add( constraint.sqlCreateString(dialect, this) ); } - /* iter = generators.values().iterator(); ! while ( iter.hasNext() ) ! { ! String[] lines = ( (PersistentIdentifierGenerator) iter.next() ).sqlCreateStrings(dialect); ! for ( int i=0; i<lines.length; i++ ) script.add( lines[i] ); } - */ return ArrayHelper.toStringArray(script); --- 253,305 ---- } ! public String[] generateSchemaUpdateScript(Dialect dialect, JdbcDatabaseInfo databaseInfo) throws HibernateException { secondPassCompile(); ArrayList script = new ArrayList(50); ! Iterator iter = getTableMaps(); while ( iter.hasNext() ) { Table table = (Table) iter.next(); ! JdbcTableInfo tableInfo = databaseInfo.getTableInfo(table.getName()); ! if (tableInfo == null) { script.add( table.sqlCreateString(dialect, this) ); } 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]); ! } } return ArrayHelper.toStringArray(script); *************** *** 295,307 **** //TODO: Somehow add the newly created foreign keys to the internal collection ! iter = foreignKeys.iterator(); while ( iter.hasNext() ) { ! ForeignKey fk = (ForeignKey) iter.next(); ! if ( fk.getReferencedTable()==null ) { ! PersistentClass referencedClass = (PersistentClass) classes.get( fk.getReferencedClass() ); ! if ( referencedClass==null ) throw new MappingException( ! "An association refers to an unmapped class: " + fk.getReferencedClass().getName() ! ); ! fk.setReferencedTable( referencedClass.getTable() ); } } --- 315,330 ---- //TODO: Somehow add the newly created foreign keys to the internal collection ! iter = getTableMaps(); while ( iter.hasNext() ) { ! Table table = (Table)iter.next(); ! Iterator subIter = table.foreignKeyIterator(); ! while (subIter.hasNext()) { ! ForeignKey fk = (ForeignKey)subIter.next(); ! if (fk.getReferencedTable() == null) { ! PersistentClass referencedClass = (PersistentClass)classes.get(fk.getReferencedClass()); ! if (referencedClass == null) ! throw new MappingException("An association refers to an unmapped class: " + fk.getReferencedClass().getName()); ! fk.setReferencedTable(referencedClass.getTable()); ! } } } Index: QueryImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/impl/QueryImpl.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** QueryImpl.java 21 Nov 2002 09:03:11 -0000 1.19 --- QueryImpl.java 14 Dec 2002 09:27:55 -0000 1.20 *************** *** 242,246 **** setParameter(name, val, Hibernate.BINARY); } ! /* * @see Query#setBoolean(String, boolean) --- 242,246 ---- setParameter(name, val, Hibernate.BINARY); } ! /* * @see Query#setBoolean(String, boolean) Index: ScrollableResultsImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/impl/ScrollableResultsImpl.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ScrollableResultsImpl.java 26 Nov 2002 03:35:42 -0000 1.7 --- ScrollableResultsImpl.java 14 Dec 2002 09:27:55 -0000 1.8 *************** *** 112,115 **** --- 112,122 ---- } + /** + * @see cirrus.hibernate.ScrollableResults#getBlob(int) + */ + public java.sql.Blob getBlob(int col) throws SQLException, HibernateException { + return (java.sql.Blob) get(col); + } + /** * @see cirrus.hibernate.ScrollableResults#getBoolean(int) |