Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister In directory sc8-pr-cvs1:/tmp/cvs-serv26035/sf/hibernate/persister Modified Files: AbstractEntityPersister.java ClassPersister.java EntityPersister.java NormalizedEntityPersister.java Log Message: renamed 'mutable' to 'update' added 'insert' attribute removed old dtds Index: AbstractEntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/AbstractEntityPersister.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** AbstractEntityPersister.java 27 Jan 2003 07:12:03 -0000 1.10 --- AbstractEntityPersister.java 28 Jan 2003 10:22:20 -0000 1.11 *************** *** 101,105 **** private transient final String[] propertyNames; private transient final Type[] propertyTypes; ! private transient final boolean[] propertyMutability; private transient final String versionPropertyName; --- 101,106 ---- private transient final String[] propertyNames; private transient final Type[] propertyTypes; ! private transient final boolean[] propertyUpdateability; ! private transient final boolean[] propertyInsertability; private transient final String versionPropertyName; *************** *** 162,165 **** --- 163,167 ---- if ( getIdentifierType().isComponentType() ) { cols = getIdentifierPropertyColumnNames(componentPath); + if (cols==null) throw new QueryException("composite id path not found (or dereferenced a <key-many-to-one>)"); } else { *************** *** 211,217 **** */ public void setPropertyValues(Object object, Object[] values) throws HibernateException { ! for (int j=0; j<hydrateSpan; j++) { ! getSetters()[j].set(object, values[j]); ! } } --- 213,217 ---- */ public void setPropertyValues(Object object, Object[] values) throws HibernateException { ! for (int j=0; j<hydrateSpan; j++) getSetters()[j].set(object, values[j]); } *************** *** 221,227 **** public Object[] getPropertyValues(Object object) throws HibernateException { Object[] result = new Object[hydrateSpan]; ! for (int j=0; j<hydrateSpan; j++) { ! result[j] = getGetters()[j].get(object); ! } return result; } --- 221,225 ---- public Object[] getPropertyValues(Object object) throws HibernateException { Object[] result = new Object[hydrateSpan]; ! for (int j=0; j<hydrateSpan; j++) result[j] = getGetters()[j].get(object); return result; } *************** *** 245,249 **** */ public int[] findDirty(Object[] x, Object[] y, Object owner, SessionImplementor session) throws HibernateException { ! int[] props = TypeFactory.findDirty( propertyTypes, x, y, propertyMutability, owner, session.getFactory() ); if ( props==null) { return null; --- 243,247 ---- */ public int[] findDirty(Object[] x, Object[] y, Object owner, SessionImplementor session) throws HibernateException { ! int[] props = TypeFactory.findDirty( propertyTypes, x, y, propertyUpdateability, owner, session.getFactory() ); if ( props==null) { return null; *************** *** 604,608 **** propertyTypes = new Type[hydrateSpan]; propertyNames = new String[hydrateSpan]; ! propertyMutability = new boolean[hydrateSpan]; getters = new ReflectHelper.Getter[hydrateSpan]; setters = new ReflectHelper.Setter[hydrateSpan]; --- 602,607 ---- propertyTypes = new Type[hydrateSpan]; propertyNames = new String[hydrateSpan]; ! propertyUpdateability = new boolean[hydrateSpan]; ! propertyInsertability = new boolean[hydrateSpan]; getters = new ReflectHelper.Getter[hydrateSpan]; setters = new ReflectHelper.Setter[hydrateSpan]; *************** *** 621,625 **** setters[i] = ReflectHelper.getSetter( mappedClass, propertyNames[i] ); propertyTypes[i] = prop.getType(); ! propertyMutability[i] = prop.isMutable(); cascadeStyles[i] = prop.getCascadeStyle(); --- 620,625 ---- setters[i] = ReflectHelper.getSetter( mappedClass, propertyNames[i] ); propertyTypes[i] = prop.getType(); ! propertyUpdateability[i] = prop.isUpdateable(); ! propertyInsertability[i] = prop.isInsertable(); cascadeStyles[i] = prop.getCascadeStyle(); *************** *** 696,705 **** } ! public boolean[] getPropertyMutability() { ! return propertyMutability; } protected boolean useDynamicUpdate() { return dynamicUpdate; } --- 696,709 ---- } ! public boolean[] getPropertyUpdateability() { ! return propertyUpdateability; } protected boolean useDynamicUpdate() { return dynamicUpdate; + } + + public boolean[] getPropertyInsertability() { + return propertyInsertability; } Index: ClassPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/ClassPersister.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ClassPersister.java 24 Jan 2003 16:15:59 -0000 1.5 --- ClassPersister.java 28 Jan 2003 10:22:20 -0000 1.6 *************** *** 235,240 **** public String[] getPropertyNames(); ! public boolean[] getPropertyMutability(); /** * Get the cascade styles of the propertes (optional operation) --- 235,242 ---- public String[] getPropertyNames(); ! public boolean[] getPropertyUpdateability(); + public boolean[] getPropertyInsertability(); + /** * Get the cascade styles of the propertes (optional operation) Index: EntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/EntityPersister.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** EntityPersister.java 27 Jan 2003 07:12:03 -0000 1.13 --- EntityPersister.java 28 Jan 2003 10:22:20 -0000 1.14 *************** *** 22,26 **** import java.sql.SQLException; import java.util.ArrayList; - import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; --- 22,25 ---- *************** *** 75,79 **** private transient final String discriminatorColumnName; - private transient final String[] columnNames; private transient final String[] subclassColumnClosure; private transient final Type[] subclassPropertyTypeClosure; --- 74,77 ---- *************** *** 214,221 **** } - protected String[] getColumnNames() { - return columnNames; - } - //Access cached SQL --- 212,215 ---- *************** *** 264,271 **** * Generate the SQL that inserts a row */ ! protected String generateInsertString(boolean identityInsert) { Insert insert = new Insert(dialect) ! .setTableName( getTableName() ) ! .addColumns( getColumnNames() ); if ( isPolymorphic() ) insert.addColumn( getDiscriminatorColumnName(), discriminatorSQLString ); if (!identityInsert) { --- 258,267 ---- * Generate the SQL that inserts a row */ ! protected String generateInsertString(boolean identityInsert, boolean[] includeProperty) { Insert insert = new Insert(dialect) ! .setTableName( getTableName() ); ! for (int i=0; i<hydrateSpan; i++) { ! if ( includeProperty[i] ) insert.addColumns( propertyColumnNames[i] ); ! } if ( isPolymorphic() ) insert.addColumn( getDiscriminatorColumnName(), discriminatorSQLString ); if (!identityInsert) { *************** *** 412,422 **** } - //TODO: precalculate this - private boolean[] allProperties() { - boolean[] result = new boolean[hydrateSpan]; - Arrays.fill(result, true); - return result; - } - /** * Persist an object --- 408,411 ---- *************** *** 437,441 **** // insert was issued (cos of foreign key constraints). Not necessarily the object's current state ! dehydrate(id, fields, allProperties(), statement, session); session.getBatcher().addToBatch(1); --- 426,430 ---- // insert was issued (cos of foreign key constraints). Not necessarily the object's current state ! dehydrate(id, fields, getPropertyInsertability(), statement, session); session.getBatcher().addToBatch(1); *************** *** 464,468 **** try { ! dehydrate(null, fields, allProperties(), statement, session); statement.executeUpdate(); } --- 453,457 ---- try { ! dehydrate(null, fields, getPropertyInsertability(), statement, session); statement.executeUpdate(); } *************** *** 567,571 **** } else { ! update(id, fields, getPropertyMutability(), oldVersion, object, sqlUpdate(), session); } } --- 556,560 ---- } else { ! update(id, fields, getPropertyUpdateability(), oldVersion, object, sqlUpdate(), session); } } *************** *** 685,690 **** } ! columnNames = (String[]) columns.toArray(STRING_ARRAY); ! hasColumns = columnNames.length!=0; columns.clear(); --- 674,678 ---- } ! hasColumns = columns.size()!=0; columns.clear(); *************** *** 726,732 **** deleteString = generateDeleteString(); ! insertString = generateInsertString(false); ! identityInsertString = isIdentifierAssignedByInsert() ? generateInsertString(true) : null; ! updateString = generateUpdateString( getPropertyMutability() ); String lockString = generateLockString(); --- 714,722 ---- deleteString = generateDeleteString(); ! insertString = generateInsertString( false, getPropertyInsertability() ); ! identityInsertString = isIdentifierAssignedByInsert() ? ! generateInsertString( true, getPropertyInsertability() ) : ! null; ! updateString = generateUpdateString( getPropertyUpdateability() ); String lockString = generateLockString(); Index: NormalizedEntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/NormalizedEntityPersister.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** NormalizedEntityPersister.java 27 Jan 2003 07:12:03 -0000 1.5 --- NormalizedEntityPersister.java 28 Jan 2003 10:22:20 -0000 1.6 *************** *** 264,268 **** * Generate the SQL that inserts a row */ ! protected String[] generateInsertStrings(boolean identityInsert) { String[] result = new String[tableNames.length]; --- 264,268 ---- * Generate the SQL that inserts a row */ ! protected String[] generateInsertStrings(boolean identityInsert, boolean[] includeProperty) { String[] result = new String[tableNames.length]; *************** *** 273,277 **** for (int i=0; i<getPropertyTypes().length; i++) { ! if ( propertyTables[i]==j ) { insert.addColumns( propertyColumnNames[i] ); } --- 273,277 ---- for (int i=0; i<getPropertyTypes().length; i++) { ! if ( includeProperty[i] && propertyTables[i]==j ) { insert.addColumns( propertyColumnNames[i] ); } *************** *** 300,304 **** --- 300,306 ---- .setTableName( tableNames[j] ) .setPrimaryKeyColumnNames( tableKeyColumns[j] ); + if (j==0) update.setVersionColumnName( getVersionColumnName() ); + boolean hasColumns = false; for (int i=0; i<propertyColumnNames.length; i++) { *************** *** 308,311 **** --- 310,314 ---- } } + result[j] = hasColumns ? update.toStatementString() : null; } *************** *** 453,457 **** // insert was issued (cos of foreign key constraints). Not necessarily the object's current state ! dehydrate(id, fields, allProperties(), statements, session); for ( int i=0; i<tableNames.length; i++ ) statements[i].executeUpdate(); --- 456,460 ---- // insert was issued (cos of foreign key constraints). Not necessarily the object's current state ! dehydrate(id, fields, getPropertyInsertability(), statements, session); for ( int i=0; i<tableNames.length; i++ ) statements[i].executeUpdate(); *************** *** 612,616 **** } else { ! update(id, fields, getPropertyMutability(), tableUpdateNeeded, oldVersion, object, sqlUpdate(), session); } } --- 615,619 ---- } else { ! update(id, fields, getPropertyUpdateability(), tableUpdateNeeded, oldVersion, object, sqlUpdate(), session); } } *************** *** 828,834 **** deleteStrings = generateDeleteStrings(); ! insertStrings = generateInsertStrings(false); ! identityInsertStrings = isIdentifierAssignedByInsert() ? generateInsertStrings(true) : null; ! updateStrings = generateUpdateStrings( getPropertyMutability() ); String lockString = generateLockString(); --- 831,837 ---- deleteStrings = generateDeleteStrings(); ! insertStrings = generateInsertStrings( false, getPropertyInsertability() ); ! identityInsertStrings = isIdentifierAssignedByInsert() ? generateInsertStrings( true, getPropertyInsertability() ) : null; ! updateStrings = generateUpdateStrings( getPropertyUpdateability() ); String lockString = generateLockString(); |