Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql In directory sc8-pr-cvs1:/tmp/cvs-serv15497/sf/hibernate/sql Modified Files: ANSICaseFragment.java DecodeCaseFragment.java Select.java SelectFragment.java SimpleSelect.java Log Message: refactored alias generation into Alias class Index: ANSICaseFragment.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql/ANSICaseFragment.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ANSICaseFragment.java 1 Feb 2003 12:24:07 -0000 1.1 --- ANSICaseFragment.java 15 Mar 2003 04:38:17 -0000 1.2 *************** *** 1 **** ! //$Id$ package net.sf.hibernate.sql; import java.util.Iterator; import java.util.Map; import net.sf.hibernate.util.StringHelper; import org.apache.commons.collections.SequencedHashMap; /** * Represents an SQL <tt>case when .... then .... end as ...</tt> */ public class ANSICaseFragment extends CaseFragment { private String returnColumnName; private Map cases = new SequencedHashMap(); public CaseFragment setReturnColumnName(String returnColumnName) { this.returnColumnName = returnColumnName; return this; } public CaseFragment setReturnColumnName(String returnColumnName, String suffix) { return setReturnColumnName( StringHelper.suffix(returnColumnName, suffix) ); } public CaseFragment addWhenColumnNotNull(String alias, String columnName, String value) { cases.put( alias + StringHelper.DOT + columnName + " is not null", value ); return this; } public String toFragmentString() { StringBuffer buf = new StringBuffer( cases.size() * 15 + 10 ); buf.append("case"); Iterator iter = cases.entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = (Map.Entry) iter.next(); buf.append(" when ") .append( me.getKey() ) .append(" then ") .append( me.getValue() ); } return buf.append(" end as ") .append(returnColumnName) .toString(); } } \ No newline at end of file --- 1 ---- ! //$Id$ package net.sf.hibernate.sql; import java.util.Iterator; import java.util.Map; import net.sf.hibernate.util.StringHelper; import org.apache.commons.collections.SequencedHashMap; /** * Represents an SQL <tt>case when .... then .... end as ...</tt> */ public class ANSICaseFragment extends CaseFragment { private String returnColumnName; private Map cases = new SequencedHashMap(); public CaseFragment setReturnColumnName(String returnColumnName) { this.returnColumnName = returnColumnName; return this; } public CaseFragment setReturnColumnName(String returnColumnName, String suffix) { return setReturnColumnName( new Alias(suffix).toAliasString(returnColumnName) ); } public CaseFragment addWhenColumnNotNull(String alias, String columnName, String value) { cases.put( alias + StringHelper.DOT + columnName + " is not null", value ); return this; } public String toFragmentString() { StringBuffer buf = new StringBuffer( cases.size() * 15 + 10 ); buf.append("case"); Iterator iter = cases.entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = (Map.Entry) iter.next(); buf.append(" when ") .append( me.getKey() ) .append(" then ") .append( me.getValue() ); } return buf.append(" end as ") .append(returnColumnName) .toString(); } } \ No newline at end of file Index: DecodeCaseFragment.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql/DecodeCaseFragment.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** DecodeCaseFragment.java 1 Feb 2003 12:24:07 -0000 1.1 --- DecodeCaseFragment.java 15 Mar 2003 04:38:17 -0000 1.2 *************** *** 1 **** ! //$Id$ package net.sf.hibernate.sql; import java.util.Iterator; import java.util.Map; import net.sf.hibernate.util.StringHelper; import org.apache.commons.collections.SequencedHashMap; /** * Represents an SQL <tt>decode( pkvalue, key1, 1, key2, 2, ..., 0)</tt> */ public class DecodeCaseFragment extends CaseFragment { private String returnColumnName; private Map cases = new SequencedHashMap(); public CaseFragment setReturnColumnName(String returnColumnName) { this.returnColumnName = returnColumnName; return this; } public CaseFragment setReturnColumnName(String returnColumnName, String suffix) { return setReturnColumnName( StringHelper.suffix(returnColumnName, suffix) ); } public CaseFragment addWhenColumnNotNull(String alias, String columnName, String value) { cases.put( alias + StringHelper.DOT + columnName, value ); return this; } public String toFragmentString() { StringBuffer buf = new StringBuffer( cases.size() * 15 + 10 ); Iterator iter = cases.entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = (Map.Entry) iter.next(); if (me.getValue().equals("0")) { buf.insert(0, me.getKey()); } else { buf.append(", ") .append( me.getKey() ) .append(", ") .append( me.getValue() ); } } return buf.insert(0, "decode (").append(",0 ) as ") .append(returnColumnName) .toString(); } } \ No newline at end of file --- 1 ---- ! //$Id$ package net.sf.hibernate.sql; import java.util.Iterator; import java.util.Map; import net.sf.hibernate.util.StringHelper; import org.apache.commons.collections.SequencedHashMap; /** * Represents an SQL <tt>decode( pkvalue, key1, 1, key2, 2, ..., 0)</tt> */ public class DecodeCaseFragment extends CaseFragment { private String returnColumnName; private Map cases = new SequencedHashMap(); public CaseFragment setReturnColumnName(String returnColumnName) { this.returnColumnName = returnColumnName; return this; } public CaseFragment setReturnColumnName(String returnColumnName, String suffix) { return setReturnColumnName( new Alias(suffix).toAliasString(returnColumnName) ); } public CaseFragment addWhenColumnNotNull(String alias, String columnName, String value) { cases.put( alias + StringHelper.DOT + columnName, value ); return this; } public String toFragmentString() { StringBuffer buf = new StringBuffer( cases.size() * 15 + 10 ); Iterator iter = cases.entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = (Map.Entry) iter.next(); if (me.getValue().equals("0")) { buf.insert(0, me.getKey()); } else { buf.append(", ") .append( me.getKey() ) .append(", ") .append( me.getValue() ); } } return buf.insert(0, "decode (").append(",0 ) as ") .append(returnColumnName) .toString(); } } \ No newline at end of file Index: Select.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql/Select.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Select.java 20 Jan 2003 18:45:18 -0000 1.1 --- Select.java 15 Mar 2003 04:38:17 -0000 1.2 *************** *** 18,28 **** public String toStatementString() { StringBuffer buf = new StringBuffer( ! selectClause.length() + fromClause.length() + outerJoinsAfterFrom.length() + whereClause.length() + outerJoinsAfterWhere.length() + 20 ); buf.append("SELECT ").append(selectClause) ! .append(" FROM ").append(fromClause) ! .append(outerJoinsAfterFrom) ! .append(" WHERE ").append(whereClause) ! .append(outerJoinsAfterWhere); if (orderByClause!=null) buf.append(" ORDER BY ").append(orderByClause); return buf.toString(); --- 18,33 ---- public String toStatementString() { StringBuffer buf = new StringBuffer( ! selectClause.length() + ! fromClause.length() + ! outerJoinsAfterFrom.length() + ! whereClause.length() + ! outerJoinsAfterWhere.length() + ! 20 ); buf.append("SELECT ").append(selectClause) ! .append(" FROM ").append(fromClause) ! .append(outerJoinsAfterFrom) ! .append(" WHERE ").append(whereClause) ! .append(outerJoinsAfterWhere); if (orderByClause!=null) buf.append(" ORDER BY ").append(orderByClause); return buf.toString(); Index: SelectFragment.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql/SelectFragment.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SelectFragment.java 20 Jan 2003 18:45:18 -0000 1.1 --- SelectFragment.java 15 Mar 2003 04:38:17 -0000 1.2 *************** *** 66,70 **** buf.append(col) .append(" as ") ! .append( StringHelper.suffix( columnAlias, suffix) ); } return buf.toString(); --- 66,70 ---- buf.append(col) .append(" as ") ! .append( new Alias(suffix).toAliasString(columnAlias) ); } return buf.toString(); Index: SimpleSelect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql/SimpleSelect.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SimpleSelect.java 2 Feb 2003 06:41:05 -0000 1.2 --- SimpleSelect.java 15 Mar 2003 04:38:17 -0000 1.3 *************** *** 15,18 **** --- 15,20 ---- public class SimpleSelect { + //private static final Alias DEFAULT_ALIAS = new Alias(10, null); + private String tableName; private String orderBy; *************** *** 37,40 **** --- 39,43 ---- public SimpleSelect addColumn(String columnName) { columns.add(columnName); + //aliases.put( columnName, DEFAULT_ALIAS.toAliasString(columnName) ); return this; } |