From: <one...@us...> - 2002-11-25 02:21:12
|
Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader In directory sc8-pr-cvs1:/tmp/cvs-serv25122/cirrus/hibernate/loader Modified Files: AnsiOuterJoinGenerator.java OracleOuterJoinGenerator.java OuterJoinGenerator.java Log Message: use OuterJoinGenerator for normalized table mappings Index: AnsiOuterJoinGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader/AnsiOuterJoinGenerator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** AnsiOuterJoinGenerator.java 5 Nov 2002 03:44:01 -0000 1.4 --- AnsiOuterJoinGenerator.java 25 Nov 2002 02:21:09 -0000 1.5 *************** *** 15,40 **** } ! /** ! * Generate a <tt>LEFT OUTER JOIN</tt> clause to the table of the entity class ! */ ! protected final String appendOuterJoinStringAfterFrom(StringBuffer buf, OuterJoinLoader.OuterJoinableAssociation assoc) { ! StringBuffer on = new StringBuffer(20).append("ON "); ! String[] keyNames = assoc.subpersister.getIdentifierColumnNames(); //TODO: refactor onto Loadable .. this is repeated in two other places ! for ( int j=0; j<assoc.foreignKeyColumns.length; j++) { ! on.append( assoc.foreignKeyColumns[j] ) .append('=') ! .append(assoc.subalias) .append('.') ! .append( keyNames[j] ); ! if ( j<assoc.foreignKeyColumns.length-1 ) on.append(" and "); } - buf.append(" LEFT OUTER JOIN ") - .append( assoc.subpersister.fromClauseFragment( assoc.subalias, on.toString() ) ); return buf.toString(); } ! protected final String appendOuterJoinStringAfterWhere(StringBuffer buf, OuterJoinLoader.OuterJoinableAssociation assoc) { return EMPTY_STRING; } --- 15,38 ---- } ! public final String appendOuterJoinStringAfterFrom(StringBuffer buf, String tableName, String alias, String[] fkColumns, String[] pkColumns) { ! buf.append(" LEFT OUTER JOIN ") ! .append(tableName) ! .append(' ') ! .append(alias) ! .append(" ON "); //TODO: refactor onto Loadable .. this is repeated in two other places ! for ( int j=0; j<fkColumns.length; j++) { ! buf.append( fkColumns[j] ) .append('=') ! .append(alias) .append('.') ! .append( pkColumns[j] ); ! if ( j<fkColumns.length-1 ) buf.append(" and "); } return buf.toString(); } ! public final String appendOuterJoinStringAfterWhere(StringBuffer buf, String alias, String[] fkColumns, String[] pkColumns) { return EMPTY_STRING; } Index: OracleOuterJoinGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader/OracleOuterJoinGenerator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** OracleOuterJoinGenerator.java 4 Nov 2002 08:10:50 -0000 1.4 --- OracleOuterJoinGenerator.java 25 Nov 2002 02:21:09 -0000 1.5 *************** *** 13,41 **** } ! /** ! * Generate a <tt>LEFT OUTER JOIN</tt> clause to the table of the entity class ! */ ! protected final String appendOuterJoinStringAfterFrom(StringBuffer buf, OuterJoinLoader.OuterJoinableAssociation assoc) { buf.append(", ") ! .append( assoc.subpersister.getTableName() ) .append(' ') ! .append(assoc.subalias ); return buf.toString(); } ! protected final String appendOuterJoinStringAfterWhere(StringBuffer buf, OuterJoinLoader.OuterJoinableAssociation assoc) { ! String[] keyNames = assoc.subpersister.getIdentifierColumnNames(); ! for ( int j=0; j<assoc.foreignKeyColumns.length; j++) { buf.append(" AND ") ! .append( assoc.foreignKeyColumns[j] ) .append('=') ! .append(assoc.subalias) .append('.') ! .append( keyNames[j] ) .append("(+)"); } return buf.toString(); } } --- 13,38 ---- } ! public final String appendOuterJoinStringAfterFrom(StringBuffer buf, String tableName, String alias, String[] fkColumns, String[] pkColumns) { buf.append(", ") ! .append(tableName) .append(' ') ! .append(alias); return buf.toString(); } ! public final String appendOuterJoinStringAfterWhere(StringBuffer buf, String alias, String[] fkColumns, String[] pkColumns) { ! for ( int j=0; j<fkColumns.length; j++) { buf.append(" AND ") ! .append( fkColumns[j] ) .append('=') ! .append(alias) .append('.') ! .append( pkColumns[j] ) .append("(+)"); } return buf.toString(); } + } Index: OuterJoinGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader/OuterJoinGenerator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** OuterJoinGenerator.java 5 Nov 2002 03:44:01 -0000 1.3 --- OuterJoinGenerator.java 25 Nov 2002 02:21:09 -0000 1.4 *************** *** 19,23 **** StringBuffer buf = new StringBuffer(50); Iterator iter = associations.iterator(); ! while ( iter.hasNext() ) appendOuterJoinStringAfterFrom(buf, (OuterJoinLoader.OuterJoinableAssociation) iter.next()); return buf.toString(); } --- 19,33 ---- StringBuffer buf = new StringBuffer(50); Iterator iter = associations.iterator(); ! while ( iter.hasNext() ) { ! OuterJoinLoader.OuterJoinableAssociation oj = (OuterJoinLoader.OuterJoinableAssociation) iter.next(); ! appendOuterJoinStringAfterFrom( ! buf, ! oj.subpersister.getTableName(), ! oj.subalias, ! oj.foreignKeyColumns, ! oj.subpersister.getIdentifierColumnNames() ! ); ! buf.append( oj.subpersister.outerJoinsAfterFrom(oj.subalias) ); ! } return buf.toString(); } *************** *** 30,34 **** StringBuffer buf = new StringBuffer(50); Iterator iter = associations.iterator(); ! while ( iter.hasNext() ) appendOuterJoinStringAfterWhere(buf, (OuterJoinLoader.OuterJoinableAssociation) iter.next()); return buf.toString(); } --- 40,53 ---- StringBuffer buf = new StringBuffer(50); Iterator iter = associations.iterator(); ! while ( iter.hasNext() ) { ! OuterJoinLoader.OuterJoinableAssociation oj = (OuterJoinLoader.OuterJoinableAssociation) iter.next(); ! appendOuterJoinStringAfterWhere( ! buf, ! oj.subalias, ! oj.foreignKeyColumns, ! oj.subpersister.getIdentifierColumnNames() ! ); ! buf.append( oj.subpersister.outerJoinsAfterWhere(oj.subalias) ); ! } return buf.toString(); } *************** *** 38,42 **** * To be inserted after the FROM clause. */ ! protected abstract String appendOuterJoinStringAfterFrom(StringBuffer buf, OuterJoinLoader.OuterJoinableAssociation assoc); /** --- 57,61 ---- * To be inserted after the FROM clause. */ ! public abstract String appendOuterJoinStringAfterFrom(StringBuffer buf, String tableName, String alias, String[] fkColumns, String[] pkColumns); /** *************** *** 44,48 **** * To be inserted after the FROM clause. */ ! protected abstract String appendOuterJoinStringAfterWhere(StringBuffer buf, OuterJoinLoader.OuterJoinableAssociation assoc); } --- 63,67 ---- * To be inserted after the FROM clause. */ ! public abstract String appendOuterJoinStringAfterWhere(StringBuffer buf, String alias, String[] fkColumns, String[] pkColumns); } |