From: <one...@us...> - 2003-02-23 07:22:15
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql In directory sc8-pr-cvs1:/tmp/cvs-serv25986/sql Added Files: ANSIJoinFragment.java JoinFragment.java OracleJoinFragment.java QueryJoinFragment.java Removed Files: ANSIOuterJoinFragment.java OracleOuterJoinFragment.java OuterJoinFragment.java QueryOuterJoinFragment.java Log Message: continued refactoring of hql package --- NEW FILE: ANSIJoinFragment.java --- //$Id: ANSIJoinFragment.java,v 1.1 2003/02/23 07:22:11 oneovthafew Exp $ package net.sf.hibernate.sql; import net.sf.hibernate.AssertionFailure; import net.sf.hibernate.util.StringHelper; public class ANSIJoinFragment extends JoinFragment { private StringBuffer buffer = new StringBuffer(); private StringBuffer conditions = new StringBuffer(); public void addJoin(String tableName, String alias, String[] fkColumns, String[] pkColumns, int joinType) { String joinString; switch (joinType) { case INNER_JOIN: joinString = " inner join "; break; case LEFT_OUTER_JOIN: joinString = " left outer join "; break; case RIGHT_OUTER_JOIN: joinString = " right outer join "; break; case FULL_JOIN: joinString = " full outer join "; break; default: throw new AssertionFailure("undefined join type"); } buffer.append(joinString) .append(tableName) .append(' ') .append(alias) .append(" on "); for ( int j=0; j<fkColumns.length; j++) { if (fkColumns[j].indexOf('.')<1) throw new AssertionFailure("missing alias"); buffer.append( fkColumns[j] ) .append('=') .append(alias) .append(StringHelper.DOT) .append( pkColumns[j] ); if ( j<fkColumns.length-1 ) buffer.append(" and "); } } public String toFromFragmentString() { return buffer.toString(); } public String toWhereFragmentString() { return conditions.toString(); } public void addJoins(String fromFragment, String whereFragment) { buffer.append(fromFragment); //where fragment must be empty! } public JoinFragment copy() { ANSIJoinFragment copy = new ANSIJoinFragment(); copy.buffer = new StringBuffer( buffer.toString() ); return copy; } public void addCondition(String alias, String[] columns, String condition) { for ( int i=0; i<columns.length; i++ ) { conditions.append(" and ") .append(alias) .append(StringHelper.DOT) .append( columns[i] ) .append(condition); } } public void addCrossJoin(String tableName, String alias) { buffer.append(StringHelper.COMMA_SPACE) .append(tableName) .append(' ') .append(alias); } public void addCondition( String alias, String[] fkColumns, String[] pkColumns) { throw new UnsupportedOperationException(); } public void addCondition(String condition) { throw new UnsupportedOperationException(); } } --- NEW FILE: JoinFragment.java --- //$Id: JoinFragment.java,v 1.1 2003/02/23 07:22:11 oneovthafew Exp $ package net.sf.hibernate.sql; public abstract class JoinFragment { public abstract void addJoin(String tableName, String alias, String[] fkColumns, String[] pkColumns, int joinType); public abstract void addCrossJoin(String tableName, String alias); public abstract void addJoins(String fromFragment, String whereFragment); public abstract String toFromFragmentString(); public abstract String toWhereFragmentString(); public abstract void addCondition(String alias, String[] columns, String condition); public abstract void addCondition(String alias, String[] fkColumns, String[] pkColumns); public abstract void addCondition(String condition); public abstract JoinFragment copy(); public static final int INNER_JOIN = 0; public static final int FULL_JOIN = -1; public static final int LEFT_OUTER_JOIN = 1; public static final int RIGHT_OUTER_JOIN = 2; public void addFragment(JoinFragment ojf) { addJoins( ojf.toFromFragmentString(), ojf.toWhereFragmentString() ); } } --- NEW FILE: OracleJoinFragment.java --- //$Id: OracleJoinFragment.java,v 1.1 2003/02/23 07:22:11 oneovthafew Exp $ package net.sf.hibernate.sql; import net.sf.hibernate.util.StringHelper; public class OracleJoinFragment extends JoinFragment { private StringBuffer afterFrom = new StringBuffer(); private StringBuffer afterWhere = new StringBuffer(); public void addJoin(String tableName, String alias, String[] fkColumns, String[] pkColumns, int joinType) { addCrossJoin(tableName, alias); for ( int j=0; j<fkColumns.length; j++) { afterWhere.append(" and ") .append( fkColumns[j] ); if (joinType==RIGHT_OUTER_JOIN || joinType==FULL_JOIN) afterWhere.append("(+)"); afterWhere.append('=') .append(alias) .append(StringHelper.DOT) .append( pkColumns[j] ); if (joinType==LEFT_OUTER_JOIN || joinType==FULL_JOIN) afterWhere.append("(+)"); } } public String toFromFragmentString() { return afterFrom.toString(); } public String toWhereFragmentString() { return afterWhere.toString(); } public void addJoins(String fromFragment, String whereFragment) { afterFrom.append(fromFragment); afterWhere.append(whereFragment); } public JoinFragment copy() { OracleJoinFragment copy = new OracleJoinFragment(); copy.afterFrom = new StringBuffer( afterFrom.toString() ); copy.afterWhere = new StringBuffer( afterWhere.toString() ); return copy; } public void addCondition(String alias, String[] columns, String condition) { for ( int i=0; i<columns.length; i++ ) { afterWhere.append(" and ") .append(alias) .append(StringHelper.DOT) .append( columns[i] ) .append(condition); } } public void addCrossJoin(String tableName, String alias) { afterFrom.append(StringHelper.COMMA_SPACE) .append(tableName) .append(' ') .append(alias); } public void addCondition( String alias, String[] fkColumns, String[] pkColumns) { throw new UnsupportedOperationException(); } public void addCondition(String condition) { afterWhere.append(condition); } } --- NEW FILE: QueryJoinFragment.java --- //$Id: QueryJoinFragment.java,v 1.1 2003/02/23 07:22:11 oneovthafew Exp $ package net.sf.hibernate.sql; import net.sf.hibernate.util.StringHelper; public class QueryJoinFragment extends JoinFragment { private StringBuffer afterFrom = new StringBuffer(); private StringBuffer afterWhere = new StringBuffer(); public void addJoin(String tableName, String alias, String[] fkColumns, String[] pkColumns, int joinType) { addCrossJoin(tableName, alias); addCondition(alias, fkColumns, pkColumns); } public String toFromFragmentString() { return afterFrom.toString(); } public String toWhereFragmentString() { return afterWhere.toString(); } public void addJoins(String fromFragment, String whereFragment) { afterFrom.append(fromFragment); afterWhere.append(whereFragment); } public JoinFragment copy() { QueryJoinFragment copy = new QueryJoinFragment(); copy.afterFrom = new StringBuffer( afterFrom.toString() ); copy.afterWhere = new StringBuffer( afterWhere.toString() ); return copy; } public void addCondition(String alias, String[] columns, String condition) { for ( int i=0; i<columns.length; i++ ) { afterWhere.append(" and ") .append(alias) .append(StringHelper.DOT) .append( columns[i] ) .append(condition); } } public void addCrossJoin(String tableName, String alias) { afterFrom.append(StringHelper.COMMA_SPACE) .append(tableName) .append(' ') .append(alias); } public void addCondition(String alias, String[] fkColumns, String[] pkColumns) { for ( int j=0; j<fkColumns.length; j++) { afterWhere.append(" and ") .append( fkColumns[j] ) .append('=') .append(alias) .append(StringHelper.DOT) .append( pkColumns[j] ); } } public void addCondition(String condition) { afterWhere.append(condition); } } --- ANSIOuterJoinFragment.java DELETED --- --- OracleOuterJoinFragment.java DELETED --- --- OuterJoinFragment.java DELETED --- --- QueryOuterJoinFragment.java DELETED --- |