You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(22) |
Nov
(308) |
Dec
(131) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(369) |
Feb
(171) |
Mar
(236) |
Apr
(187) |
May
(218) |
Jun
(217) |
Jul
(127) |
Aug
(448) |
Sep
(270) |
Oct
(231) |
Nov
(422) |
Dec
(255) |
2004 |
Jan
(111) |
Feb
(73) |
Mar
(338) |
Apr
(351) |
May
(349) |
Jun
(495) |
Jul
(394) |
Aug
(1048) |
Sep
(499) |
Oct
(142) |
Nov
(269) |
Dec
(638) |
2005 |
Jan
(825) |
Feb
(1272) |
Mar
(593) |
Apr
(690) |
May
(950) |
Jun
(958) |
Jul
(767) |
Aug
(839) |
Sep
(525) |
Oct
(449) |
Nov
(585) |
Dec
(455) |
2006 |
Jan
(603) |
Feb
(656) |
Mar
(195) |
Apr
(114) |
May
(136) |
Jun
(100) |
Jul
(128) |
Aug
(68) |
Sep
(7) |
Oct
(1) |
Nov
(1) |
Dec
(8) |
2007 |
Jan
(4) |
Feb
(3) |
Mar
(8) |
Apr
(16) |
May
(5) |
Jun
(4) |
Jul
(6) |
Aug
(23) |
Sep
(15) |
Oct
(5) |
Nov
(7) |
Dec
(5) |
2008 |
Jan
(5) |
Feb
(1) |
Mar
(1) |
Apr
(5) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(2) |
2013 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <one...@us...> - 2003-01-20 12:56:39
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/util In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/util Modified Files: ArrayHelper.java NamingHelper.java PropertiesHelper.java StringHelper.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: ArrayHelper.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/util/ArrayHelper.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ArrayHelper.java 5 Jan 2003 02:11:24 -0000 1.3 --- ArrayHelper.java 20 Jan 2003 12:48:17 -0000 1.4 *************** *** 18,21 **** --- 18,27 ---- } + public static String[] fillArray(String str, int length) { + String[] result = new String[length]; + Arrays.fill(result, str); + return result; + } + public static String[] toStringArray(java.util.Collection coll) { return toStringArray( coll.toArray() ); *************** *** 69,72 **** --- 75,85 ---- } return list; + } + + public static String[] join(String[] x, String[] y) { + String[] result = new String[ x.length + y.length ]; + for ( int i=0; i<x.length; i++ ) result[i] = x[i]; + for ( int i=0; i<y.length; i++ ) result[i+x.length] = y[i]; + return result; } } Index: NamingHelper.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/util/NamingHelper.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** NamingHelper.java 5 Jan 2003 02:11:25 -0000 1.3 --- NamingHelper.java 20 Jan 2003 12:48:17 -0000 1.4 *************** *** 50,54 **** } catch (Exception e) { ! Name n = ctx.getNameParser("").parse(name); while ( n.size() > 1 ) { String ctxName = n.get(0); --- 50,54 ---- } catch (Exception e) { ! Name n = ctx.getNameParser(StringHelper.EMPTY_STRING).parse(name); while ( n.size() > 1 ) { String ctxName = n.get(0); Index: PropertiesHelper.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/util/PropertiesHelper.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** PropertiesHelper.java 9 Jan 2003 12:24:52 -0000 1.4 --- PropertiesHelper.java 20 Jan 2003 12:48:17 -0000 1.5 *************** *** 37,41 **** map.put( tokens.nextToken(), ! tokens.hasMoreElements() ? tokens.nextToken() : "" ); } --- 37,41 ---- map.put( tokens.nextToken(), ! tokens.hasMoreElements() ? tokens.nextToken() : StringHelper.EMPTY_STRING ); } Index: StringHelper.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/util/StringHelper.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** StringHelper.java 17 Jan 2003 08:51:39 -0000 1.5 --- StringHelper.java 20 Jan 2003 12:48:17 -0000 1.6 *************** *** 8,14 **** public final class StringHelper { public static String join(String seperator, String[] strings) { int length = strings.length; ! if (length==0) return ""; StringBuffer buf = new StringBuffer( length * strings[0].length() ) .append(strings[0]); --- 8,22 ---- public final class StringHelper { + public static final String EMPTY_STRING=""; + public static final char DOT='.'; + public static final char UNDERSCORE='_'; + public static final String COMMA_SPACE=", "; + public static final String COMMA = ","; + public static final String OPEN_PAREN = "("; + public static final String CLOSE_PAREN = ")"; + public static String join(String seperator, String[] strings) { int length = strings.length; ! if (length==0) return EMPTY_STRING; StringBuffer buf = new StringBuffer( length * strings[0].length() ) .append(strings[0]); *************** *** 79,83 **** int loc = qualifiedName.lastIndexOf("."); if ( loc<0 ) { ! return ""; } else { --- 87,91 ---- int loc = qualifiedName.lastIndexOf("."); if ( loc<0 ) { ! return EMPTY_STRING; } else { *************** *** 145,149 **** StringBuffer buf = new StringBuffer(len * 12); for ( int i=0; i<len-1; i++ ) { ! buf.append( array[i] ).append(", "); } return buf.append( array[len-1] ).toString(); --- 153,157 ---- StringBuffer buf = new StringBuffer(len * 12); for ( int i=0; i<len-1; i++ ) { ! buf.append( array[i] ).append(StringHelper.COMMA_SPACE); } return buf.append( array[len-1] ).toString(); |
From: <one...@us...> - 2003-01-20 12:48:49
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2java In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/tool/hbm2java Modified Files: BasicRenderer.java ClassMapping.java Field.java Generator.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: BasicRenderer.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2java/BasicRenderer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** BasicRenderer.java 16 Jan 2003 20:52:38 -0000 1.4 --- BasicRenderer.java 20 Jan 2003 12:48:16 -0000 1.5 *************** *** 10,13 **** --- 10,15 ---- import java.util.TreeSet; + import net.sf.hibernate.util.StringHelper; + import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; *************** *** 100,104 **** ( !classMapping.getProxy().equals( classMapping.getCanonicalName() ) ) ) { ! writer.print(", "); writer.print( classMapping.getProxy() ); } --- 102,106 ---- ( !classMapping.getProxy().equals( classMapping.getCanonicalName() ) ) ) { ! writer.print(StringHelper.COMMA_SPACE); writer.print( classMapping.getProxy() ); } *************** *** 108,112 **** for (Iterator iter = implementz.iterator(); iter.hasNext();) { String iface = (String) iter.next(); ! writer.print(", "); writer.print(iface); } --- 110,114 ---- for (Iterator iter = implementz.iterator(); iter.hasNext();) { String iface = (String) iter.next(); ! writer.print(StringHelper.COMMA_SPACE); writer.print(iface); } *************** *** 123,127 **** writer.println( " /** " + ! ( field.isNullable() && !field.isIdentifier() ? "nullable " : "" ) + ( field.isIdentifier() ? "identifier" : "persistent" ) + " field */"); --- 125,129 ---- writer.println( " /** " + ! ( field.isNullable() && !field.isIdentifier() ? "nullable " : StringHelper.EMPTY_STRING ) + ( field.isIdentifier() ? "identifier" : "persistent" ) + " field */"); *************** *** 141,145 **** writer.println(" /** full constructor */"); ! String fullCons = " public " + classMapping.getGeneratedName() + "("; --- 143,147 ---- writer.println(" /** full constructor */"); ! String fullCons = " public " + classMapping.getGeneratedName() + StringHelper.OPEN_PAREN; *************** *** 161,165 **** writer.print(field.getName()); if(fields.hasNext()) { ! writer.print(", "); } } --- 163,167 ---- writer.print(field.getName()); if(fields.hasNext()) { ! writer.print(StringHelper.COMMA_SPACE); } } *************** *** 189,193 **** writer.println(" /** minimal constructor */"); ! String minCons = " public " + classMapping.getGeneratedName() + "("; for (Iterator fields = allFieldsForMinimalConstructor.iterator(); fields.hasNext();) { Field field = (Field) fields.next(); --- 191,195 ---- writer.println(" /** minimal constructor */"); ! String minCons = " public " + classMapping.getGeneratedName() + StringHelper.OPEN_PAREN; for (Iterator fields = allFieldsForMinimalConstructor.iterator(); fields.hasNext();) { Field field = (Field) fields.next(); *************** *** 207,211 **** writer.print(field.getName()); if(fields.hasNext()) { ! writer.print(", "); } } --- 209,213 ---- writer.print(field.getName()); if(fields.hasNext()) { ! writer.print(StringHelper.COMMA_SPACE); } } *************** *** 240,244 **** Field field = (Field) fields.next(); if ( field.isIdentifier() ) { ! writer.println(" .append(this." + field.getName() + ", castOther." + field.getName() + ")"); } } --- 242,246 ---- Field field = (Field) fields.next(); if ( field.isIdentifier() ) { ! writer.println(" .append(this." + field.getName() + ", castOther." + field.getName() + StringHelper.CLOSE_PAREN); } } *************** *** 252,256 **** Field field = (Field) fields.next(); if ( field.isIdentifier() ) { ! writer.println(" .append(" + field.getName() + ")"); } } --- 254,258 ---- Field field = (Field) fields.next(); if ( field.isIdentifier() ) { ! writer.println(" .append(" + field.getName() + StringHelper.CLOSE_PAREN); } } *************** *** 285,296 **** writer.println(" return this." + field.getName() + ";"); writer.println(" }"); ! writer.println(""); // setter String setAccessScope = getFieldScope(field, "scope", "scope-set"); ! writer.println(" " + setAccessScope + " void set" + field.getAsSuffix() + "(" + getTrueTypeName(field, class2classmap) + " " + field.getName() + ") {"); writer.println(" this." + field.getName() + " = " + field.getName() + ";"); writer.println(" }"); ! writer.println(""); // add/remove'rs (commented out for now) --- 287,298 ---- writer.println(" return this." + field.getName() + ";"); writer.println(" }"); ! writer.println(); // setter String setAccessScope = getFieldScope(field, "scope", "scope-set"); ! writer.println(" " + setAccessScope + " void set" + field.getAsSuffix() + StringHelper.OPEN_PAREN + getTrueTypeName(field, class2classmap) + " " + field.getName() + ") {"); writer.println(" this." + field.getName() + " = " + field.getName() + ";"); writer.println(" }"); ! writer.println(); // add/remove'rs (commented out for now) *************** *** 319,327 **** String addAccessScope = getFieldScope(field, "scope", "scope-add"); ! writer.println(" " + setAccessScope + " void add" + field.getAsSuffix() + "(" + shortenType(trueforeign, classMapping.getImports()) + " a" + field.getName() + ") {"); writer.println(" this." + getterType + field.getAsSuffix() + "().add(a" + field.getName() + ");"); writer.println(" a" + field.getName() + ".setXXX(this);"); writer.println(" }"); ! writer.println(""); --- 321,329 ---- String addAccessScope = getFieldScope(field, "scope", "scope-add"); ! writer.println(" " + setAccessScope + " void add" + field.getAsSuffix() + StringHelper.OPEN + shortenType(trueforeign, classMapping.getImports()) + " a" + field.getName() + ") {"); writer.println(" this." + getterType + field.getAsSuffix() + "().add(a" + field.getName() + ");"); writer.println(" a" + field.getName() + ".setXXX(this);"); writer.println(" }"); ! writer.println(); *************** *** 388,392 **** private String shortenType(String type, TreeSet imports) { if( imports.contains(type) ) { ! return type.substring( type.lastIndexOf('.')+1 ); } else { --- 390,394 ---- private String shortenType(String type, TreeSet imports) { if( imports.contains(type) ) { ! return type.substring( type.lastIndexOf(StringHelper.DOT)+1 ); } else { Index: ClassMapping.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2java/ClassMapping.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ClassMapping.java 19 Jan 2003 11:47:08 -0000 1.6 --- ClassMapping.java 20 Jan 2003 12:48:16 -0000 1.7 *************** *** 15,18 **** --- 15,19 ---- import net.sf.hibernate.type.PrimitiveType; import net.sf.hibernate.type.Type; + import net.sf.hibernate.util.StringHelper; import org.apache.commons.collections.MultiMap; *************** *** 129,133 **** String cmpname = cmpid.getAttributeValue("name"); String cmpclass = cmpid.getAttributeValue("class"); ! if ( cmpclass==null || cmpclass.equals("") ) { //Embedded composite id //implementEquals(); --- 130,134 ---- String cmpname = cmpid.getAttributeValue("name"); String cmpclass = cmpid.getAttributeValue("class"); ! if ( cmpclass==null || cmpclass.equals(StringHelper.EMPTY_STRING) ) { //Embedded composite id //implementEquals(); *************** *** 156,160 **** MultiMap metaForProperty = MetaAttributeHelper.loadAndMergeMetaMap(property, inheritedMeta); String name = property.getAttributeValue("name"); ! if ( name == null || name.trim().equals("") ) { continue; //since an id doesn't necessarily need a name } --- 157,161 ---- MultiMap metaForProperty = MetaAttributeHelper.loadAndMergeMetaMap(property, inheritedMeta); String name = property.getAttributeValue("name"); ! if ( name == null || name.trim().equals(StringHelper.EMPTY_STRING) ) { continue; //since an id doesn't necessarily need a name } *************** *** 169,173 **** } ! if ( type == null || type.trim().equals("") ) { log.warn("property \"" + name + "\" in class " + getName() + " is missing a type attribute"); continue; --- 170,174 ---- } ! if ( type == null || type.trim().equals(StringHelper.EMPTY_STRING) ) { log.warn("property \"" + name + "\" in class " + getName() + " is missing a type attribute"); continue; *************** *** 268,272 **** String cmpname = cmpe.getAttributeValue("name"); String cmpclass = cmpe.getAttributeValue("class"); ! if ( cmpclass==null || cmpclass.equals("") ) { log.warn("component \"" + cmpname + "\" in class " + getName() + " does not specify a class"); continue; --- 269,273 ---- String cmpname = cmpe.getAttributeValue("name"); String cmpclass = cmpe.getAttributeValue("class"); ! if ( cmpclass==null || cmpclass.equals(StringHelper.EMPTY_STRING) ) { log.warn("component \"" + cmpname + "\" in class " + getName() + " does not specify a class"); continue; *************** *** 622,634 **** if(c==null) { ! return ""; ! } else { ! StringBuffer sb = new StringBuffer(); ! for (Iterator iter = c.iterator(); iter.hasNext();) { ! Object element = (Object) iter.next(); ! sb.append(element.toString()); ! } ! return sb.toString(); ! } } /** --- 623,636 ---- if(c==null) { ! return StringHelper.EMPTY_STRING; ! } ! else { ! StringBuffer sb = new StringBuffer(); ! for (Iterator iter = c.iterator(); iter.hasNext();) { ! Object element = (Object) iter.next(); ! sb.append(element.toString()); ! } ! return sb.toString(); ! } } /** Index: Field.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2java/Field.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Field.java 16 Jan 2003 20:52:38 -0000 1.4 --- Field.java 20 Jan 2003 12:48:16 -0000 1.5 *************** *** 6,9 **** --- 6,11 ---- import java.util.Set; + import net.sf.hibernate.util.StringHelper; + import org.apache.commons.collections.MultiMap; *************** *** 123,127 **** if(c==null) { ! return ""; } else { StringBuffer sb = new StringBuffer(); --- 125,129 ---- if(c==null) { ! return StringHelper.EMPTY_STRING; } else { StringBuffer sb = new StringBuffer(); Index: Generator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2java/Generator.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Generator.java 16 Jan 2003 20:52:38 -0000 1.5 --- Generator.java 20 Jan 2003 12:48:16 -0000 1.6 *************** *** 9,12 **** --- 9,14 ---- import java.util.Map; + import net.sf.hibernate.util.StringHelper; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; *************** *** 24,28 **** private String baseDirName = "generated"; private String packageName = null; ! private String suffix = ""; private String extension = "java"; private boolean lowerFirstLetter = false; --- 26,30 ---- private String baseDirName = "generated"; private String packageName = null; ! private String suffix = StringHelper.EMPTY_STRING; private String extension = "java"; private boolean lowerFirstLetter = false; *************** *** 149,155 **** if (this.packageName == null) { ! dir = new File(baseDir, packageName==null ? "" : packageName.replace('.', File.separatorChar)); } else { ! dir = new File(baseDir, this.packageName.replace('.', File.separatorChar)); } --- 151,157 ---- if (this.packageName == null) { ! dir = new File(baseDir, packageName==null ? StringHelper.EMPTY_STRING : packageName.replace(StringHelper.DOT, File.separatorChar)); } else { ! dir = new File(baseDir, this.packageName.replace(StringHelper.DOT, File.separatorChar)); } |
From: <one...@us...> - 2003-01-20 12:48:49
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2ddl In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/tool/hbm2ddl Modified Files: SchemaExport.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: SchemaExport.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2ddl/SchemaExport.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SchemaExport.java 17 Jan 2003 23:52:57 -0000 1.4 --- SchemaExport.java 20 Jan 2003 12:48:16 -0000 1.5 *************** *** 19,22 **** --- 19,23 ---- import net.sf.hibernate.dialect.Dialect; import net.sf.hibernate.util.JDBCExceptionReporter; + import net.sf.hibernate.util.StringHelper; /** *************** *** 206,216 **** while ( tokens.hasMoreTokens() ) { String tok = tokens.nextToken(); ! if ( ")".equals(tok) ) { depth--; if (depth==0) result.append("\n"); } result.append(tok); ! if ( ",".equals(tok) && depth==1 ) result.append("\n "); ! if ( "(".equals(tok) ) { depth++; if (depth==1) result.append("\n "); --- 207,217 ---- while ( tokens.hasMoreTokens() ) { String tok = tokens.nextToken(); ! if ( StringHelper.CLOSE_PAREN.equals(tok) ) { depth--; if (depth==0) result.append("\n"); } result.append(tok); ! if ( StringHelper.COMMA.equals(tok) && depth==1 ) result.append("\n "); ! if ( StringHelper.OPEN_PAREN.equals(tok) ) { depth++; if (depth==1) result.append("\n "); |
From: <one...@us...> - 2003-01-20 12:48:49
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/ddl2hbm In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/tool/ddl2hbm Modified Files: Gui.java MapGenerator.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: Gui.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/ddl2hbm/Gui.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Gui.java 5 Jan 2003 02:11:23 -0000 1.3 --- Gui.java 20 Jan 2003 12:48:15 -0000 1.4 *************** *** 9,12 **** --- 9,15 ---- import java.io.*; import javax.swing.*; + + import net.sf.hibernate.util.StringHelper; + import java.util.*; *************** *** 582,586 **** schemaName.setModel(dcbm); if (prevItem == null) schemaName.setSelectedItem(dbUser.getText()); ! JOptionPane.showMessageDialog(this, databasePanel, "Select Table Criteria", JOptionPane.QUESTION_MESSAGE); List tables = JDBCUtil.getTables( c, --- 585,589 ---- schemaName.setModel(dcbm); if (prevItem == null) schemaName.setSelectedItem(dbUser.getText()); ! JOptionPane.showMessageDialog(this, databasePanel, "SimpleSelect Table Criteria", JOptionPane.QUESTION_MESSAGE); List tables = JDBCUtil.getTables( c, *************** *** 828,836 **** p.put("tableName", tableName.getText()); ! p.put("singleMapType", "" + optionSingleMap.isSelected()); p.put("mapName", mappingFile.getText()); p.put("generatorName", generatorName.getSelectedItem()); if (this.generationParameters != null) { ! String gp=""; for (int i=0; i < generationParameters.length; i++) { gp += generationParameters[i] + "\t"; --- 831,839 ---- p.put("tableName", tableName.getText()); ! p.put("singleMapType", StringHelper.EMPTY_STRING + optionSingleMap.isSelected()); p.put("mapName", mappingFile.getText()); p.put("generatorName", generatorName.getSelectedItem()); if (this.generationParameters != null) { ! String gp=StringHelper.EMPTY_STRING; for (int i=0; i < generationParameters.length; i++) { gp += generationParameters[i] + "\t"; *************** *** 840,844 **** p.put("keyFieldName", idFieldName.getText()); p.put("keyFieldType", keyFieldType.getSelectedItem()); ! p.put("useHibernateTypes", "" + optionHibernateTypes.isSelected()); p.put("packageName", packageName.getText()); p.put("baseClass", baseClass.getText()); --- 843,847 ---- p.put("keyFieldName", idFieldName.getText()); p.put("keyFieldType", keyFieldType.getSelectedItem()); ! p.put("useHibernateTypes", StringHelper.EMPTY_STRING + optionHibernateTypes.isSelected()); p.put("packageName", packageName.getText()); p.put("baseClass", baseClass.getText()); Index: MapGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/ddl2hbm/MapGenerator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MapGenerator.java 16 Jan 2003 20:52:38 -0000 1.4 --- MapGenerator.java 20 Jan 2003 12:48:15 -0000 1.5 *************** *** 12,15 **** --- 12,17 ---- import java.io.*; import net.sf.hibernate.tool.hbm2java.*; + import net.sf.hibernate.util.StringHelper; + import javax.xml.transform.*; import javax.xml.transform.dom.*; *************** *** 102,106 **** protected void writeMapping(Document mapping) throws IOException { ! java.lang.String pkgName = packageName.replace('.', java.io.File.separatorChar) + File.separatorChar; File packageDir = new File(outputDirectory, pkgName); if (!packageDir.exists()) packageDir.mkdirs(); --- 104,108 ---- protected void writeMapping(Document mapping) throws IOException { ! java.lang.String pkgName = packageName.replace(StringHelper.DOT, java.io.File.separatorChar) + File.separatorChar; File packageDir = new File(outputDirectory, pkgName); if (!packageDir.exists()) packageDir.mkdirs(); *************** *** 246,250 **** identifierElement.setAttribute("type", type); if (pkColumn.sqlColumnLength > 0) { ! identifierElement.setAttribute("length", "" + pkColumn.sqlColumnLength); } } --- 248,252 ---- identifierElement.setAttribute("type", type); if (pkColumn.sqlColumnLength > 0) { ! identifierElement.setAttribute("length", StringHelper.EMPTY_STRING + pkColumn.sqlColumnLength); } } *************** *** 277,281 **** property.setAttribute("type", type); if (pkColumn.sqlColumnLength > 0) { ! property.setAttribute("length", "" + pkColumn.sqlColumnLength); } } --- 279,283 ---- property.setAttribute("type", type); if (pkColumn.sqlColumnLength > 0) { ! property.setAttribute("length", StringHelper.EMPTY_STRING + pkColumn.sqlColumnLength); } } *************** *** 302,309 **** propertyElement.setAttribute("type", type); if (column.sqlColumnLength > 0) { ! propertyElement.setAttribute("length", "" + column.sqlColumnLength); } } ! if (column.sqlNotNull) propertyElement.setAttribute("not-null", "" + column.sqlNotNull); logger.debug("column info: " + getXml(propertyElement)); classElement.appendChild(propertyElement); --- 304,311 ---- propertyElement.setAttribute("type", type); if (column.sqlColumnLength > 0) { ! propertyElement.setAttribute("length", StringHelper.EMPTY_STRING + column.sqlColumnLength); } } ! if (column.sqlNotNull) propertyElement.setAttribute("not-null", StringHelper.EMPTY_STRING + column.sqlNotNull); logger.debug("column info: " + getXml(propertyElement)); classElement.appendChild(propertyElement); *************** *** 336,340 **** String memberName = name.toLowerCase(); int i; ! while ((i = memberName.indexOf('_')) != -1) { java.lang.String tmp1 = memberName.substring(0, i); if (i+1 < memberName.length()) { --- 338,342 ---- String memberName = name.toLowerCase(); int i; ! while ( (i = memberName.indexOf(StringHelper.UNDERSCORE) ) != -1 ) { java.lang.String tmp1 = memberName.substring(0, i); if (i+1 < memberName.length()) { |
From: <one...@us...> - 2003-01-20 12:48:48
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/class2hbm In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/tool/class2hbm Modified Files: MapGenerator.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: MapGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/class2hbm/MapGenerator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** MapGenerator.java 5 Jan 2003 02:11:23 -0000 1.3 --- MapGenerator.java 20 Jan 2003 12:48:15 -0000 1.4 *************** *** 124,128 **** //See protected abstractClasses for details else if(args[i].startsWith("--abstract=")) { ! map.abstractClasses.put(args[i].substring(11), ""); } } --- 124,128 ---- //See protected abstractClasses for details else if(args[i].startsWith("--abstract=")) { ! map.abstractClasses.put(args[i].substring(11), StringHelper.EMPTY_STRING); } } *************** *** 285,289 **** } else { ! System.out.println("addClass(" + name + ")" ); // debug addClass( name, true ); System.out.print("? "); --- 285,289 ---- } else { ! System.out.println("addClass(" + name + ")"); // debug addClass( name, true ); System.out.print("? "); |
From: <one...@us...> - 2003-01-20 12:48:48
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/test Modified Files: FooBarTest.java MultiTableTest.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: FooBarTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/FooBarTest.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** FooBarTest.java 19 Jan 2003 11:47:08 -0000 1.11 --- FooBarTest.java 20 Jan 2003 12:48:14 -0000 1.12 *************** *** 972,976 **** s.iterate("select baz.code, min(baz.count) from baz in class Baz group by baz.code"); ! s.iterate("Select baz from baz in class Baz where baz.stringDateMap['foo'] is not null or baz.stringDateMap['bar'] = ?", new Date(), Hibernate.DATE); s.find("from foo in class Foo where foo.integer not between 1 and 5 and foo.string not in ('cde', 'abc') and foo.string is not null and foo.integer<=3"); --- 972,976 ---- s.iterate("select baz.code, min(baz.count) from baz in class Baz group by baz.code"); ! s.iterate("selecT baz from baz in class Baz where baz.stringDateMap['foo'] is not null or baz.stringDateMap['bar'] = ?", new Date(), Hibernate.DATE); s.find("from foo in class Foo where foo.integer not between 1 and 5 and foo.string not in ('cde', 'abc') and foo.string is not null and foo.integer<=3"); Index: MultiTableTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/MultiTableTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** MultiTableTest.java 5 Jan 2003 02:11:23 -0000 1.3 --- MultiTableTest.java 20 Jan 2003 12:48:14 -0000 1.4 *************** *** 9,16 **** import java.util.Set; - import net.sf.hibernate.*; - import junit.framework.Test; import junit.framework.TestSuite; public class MultiTableTest extends TestCase { --- 9,18 ---- import java.util.Set; import junit.framework.Test; import junit.framework.TestSuite; + import net.sf.hibernate.LockMode; + import net.sf.hibernate.Session; + import net.sf.hibernate.Transaction; + import net.sf.hibernate.dialect.SybaseDialect; public class MultiTableTest extends TestCase { *************** *** 20,24 **** --- 22,42 ---- } + public void testQueries() throws Exception { + Session s = sessions.openSession(); + s.find("select s.count from s in class Simple"); + s.find("from s in class LessSimple where s.another.name='name'"); + s.find("from s in class LessSimple where s.yetanother.name='name'"); + s.find("from s in class LessSimple where s.yetanother.name='name' and s.yetanother.foo is null"); + s.find("from s in class Simple where s.count=1"); + s.find("select s.count from s in class Simple, ls in class LessSimple where ls.another=s"); + s.iterate("from s in class LessSimple"); + s.iterate("from s in class Simple"); + s.close(); + } + public void testConstraints() throws Exception { + + if ( dialect instanceof SybaseDialect ) return; + Session s = sessions.openSession(); Transaction t = s.beginTransaction(); *************** *** 36,39 **** --- 54,60 ---- public void testMultiTable() throws Exception { + + if ( dialect instanceof SybaseDialect ) return; + Session s = sessions.openSession(); Transaction t = s.beginTransaction(); *************** *** 152,156 **** --- 173,298 ---- } + public void testMultiTableGeneratedId() throws Exception { + + Session s = sessions.openSession(); + Transaction t = s.beginTransaction(); + Multi multi = new Multi(); + multi.setExtraProp("extra"); + //multi.setCount(666); + multi.setName("name"); + Simple simp = new Simple(); + simp.setDate( new Date() ); + simp.setName("simp"); + //simp.setCount(132); + Serializable multiId = s.save( multi ); + Serializable simpId = s.save( simp ); + SubMulti sm = new SubMulti(); + sm.setAmount(66.5f); + Serializable smId = s.save( sm ); + t.commit(); + s.close(); + + s = sessions.openSession(); + t = s.beginTransaction(); + multi.setExtraProp( multi.getExtraProp() + "2" ); + //multi.setCount( multi.getCount() + 1 ); + multi.setName("new name"); + s.update( multi, multiId ); + simp.setName("new name"); + s.update( simp, simpId ); + sm.setAmount(456.7f); + s.update( sm, smId ); + t.commit(); + s.close(); + + s = sessions.openSession(); + t = s.beginTransaction(); + multi = (Multi) s.load( Multi.class, multiId ); + assertTrue( multi.getExtraProp().equals("extra2") ); + multi.setExtraProp( multi.getExtraProp() + "3" ); + //multi.setCount( multi.getCount() + 1 ); + assertTrue( multi.getName().equals("new name") ); + multi.setName("newer name"); + sm = (SubMulti) s.load( SubMulti.class, smId ); + assertTrue( sm.getAmount()==456.7f ); + sm.setAmount(23423f); + t.commit(); + s.close(); + + s = sessions.openSession(); + t = s.beginTransaction(); + multi = (Multi) s.load( Simple.class, multiId ); + simp = (Simple) s.load( Simple.class, simpId ); + assertTrue( ! (simp instanceof Multi) ); + assertTrue( multi instanceof Multi ); + assertTrue( multi.getExtraProp().equals("extra23") ); + //multi.setCount( multi.getCount() + 1 ); + assertTrue( multi.getName().equals("newer name") ); + t.commit(); + s.close(); + + s = sessions.openSession(); + t = s.beginTransaction(); + Iterator iter = s.iterate("select\n\ns from s in class Simple where s.count>0"); + boolean foundSimp = false; + boolean foundMulti = false; + boolean foundSubMulti = false; + while ( iter.hasNext() ) { + Object o = iter.next(); + if ( ( o instanceof Simple ) && !( o instanceof Multi) ) foundSimp = true; + if ( o instanceof Multi && !(o instanceof SubMulti) ) foundMulti = true; + if ( o instanceof SubMulti ) foundSubMulti = true; + } + assertTrue( foundSimp&&foundMulti&&foundSubMulti ); + s.find("from m in class Multi where m.count>0 and m.extraProp is not null"); + s.find("from m in class Simple where m.count>0 and m.name is not null"); + s.find("from m in class LessSimple where m.other is not null"); + s.find("from m in class Multi where m.other.id = 1"); + s.find("from m in class SubMulti where m.amount > 0.0"); + + assertTrue( + s.find("from m in class Multi").size()==2 + ); + /*assertTrue( + s.find("from m in class Multi where m.class = Multi").size()==1 + );*/ + assertTrue( + s.find("from s in class Simple").size()==3 + ); + assertTrue( + s.find("from ls in class LessSimple").size()==0 + ); + assertTrue( + s.find("from sm in class SubMulti").size()==1 + ); + + s.find("from ls in class LessSimple, s in ls.bag.elements where s.id is not null"); + s.find("from sm in class SubMulti where exists sm.children.elements"); + + t.commit(); + s.close(); + + s = sessions.openSession(); + t = s.beginTransaction(); + multi = (Multi) s.load( Simple.class, multiId, LockMode.UPGRADE ); + simp = (Simple) s.load( Simple.class, simpId ); + s.lock(simp, LockMode.UPGRADE_NOWAIT); + t.commit(); + s.close(); + + s = sessions.openSession(); + t = s.beginTransaction(); + s.update( multi, multiId ); + s.delete(multi); + assertTrue( s.delete("from s in class Simple")==2); + t.commit(); + s.close(); + + } + public void testMultiTableCollections() throws Exception { + + if ( dialect instanceof SybaseDialect ) return; + Session s = sessions.openSession(); Transaction t = s.beginTransaction(); |
From: <one...@us...> - 2003-01-20 12:48:47
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/persister Modified Files: AbstractEntityPersister.java EntityPersister.java Loadable.java Queryable.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: AbstractEntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/AbstractEntityPersister.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** AbstractEntityPersister.java 9 Jan 2003 12:24:51 -0000 1.4 --- AbstractEntityPersister.java 20 Jan 2003 12:48:14 -0000 1.5 *************** *** 37,40 **** --- 37,41 ---- import net.sf.hibernate.hql.PathExpressionParser; import net.sf.hibernate.dialect.Dialect; + import net.sf.hibernate.sql.SelectFragment; import net.sf.hibernate.type.AbstractComponentType; import net.sf.hibernate.type.IdentifierType; *************** *** 123,138 **** } ! public String selectIdentifierString(String name, String suffix) { ! String[] cols = getIdentifierColumnNames(); ! StringBuffer buf = new StringBuffer(15); ! for (int i=0; i<cols.length; i++) { ! buf.append(name) ! .append('.') ! .append( cols[i] ) ! .append(" as ") ! .append( StringHelper.suffix(cols[i], suffix) ); ! if (i!=cols.length-1) buf.append(", "); ! } ! return buf.toString(); } --- 124,133 ---- } ! public String identifierSelectClauseFragment(String name, String suffix) { ! return new SelectFragment() ! .setSuffix(suffix) ! .addColumns( name, getIdentifierColumnNames() ) ! .toFragmentString() ! .substring(2); //strip leading ", " } *************** *** 156,161 **** } else if ( ! path.startsWith(PathExpressionParser.ENTITY_ID + '.') || ! ( idprop!=null && path.startsWith(idprop + '.') ) ) { --- 151,156 ---- } else if ( ! path.startsWith(PathExpressionParser.ENTITY_ID + StringHelper.DOT) || ! ( idprop!=null && path.startsWith(idprop + StringHelper.DOT) ) ) { *************** *** 175,179 **** } ! return StringHelper.prefix(cols, name + '.'); } --- 170,174 ---- } ! return StringHelper.prefix(cols, name + StringHelper.DOT); } *************** *** 195,200 **** } else if ( ! path.startsWith(PathExpressionParser.ENTITY_ID + '.') || ! ( idprop!=null && path.startsWith(idprop + '.') ) ) { return getIdentifierPropertyType( path.substring( PathExpressionParser.ENTITY_ID.length()+1 ) ); --- 190,195 ---- } else if ( ! path.startsWith(PathExpressionParser.ENTITY_ID + StringHelper.DOT) || ! ( idprop!=null && path.startsWith(idprop + StringHelper.DOT) ) ) { return getIdentifierPropertyType( path.substring( PathExpressionParser.ENTITY_ID.length()+1 ) ); *************** *** 255,259 **** if ( log.isTraceEnabled() ) { for ( int i=0; i<props.length; i++ ) { ! log.trace( className + '.'+ propertyNames[ props[i] ] + " is dirty" ); } } --- 250,254 ---- if ( log.isTraceEnabled() ) { for ( int i=0; i<props.length; i++ ) { ! log.trace( className + StringHelper.DOT+ propertyNames[ props[i] ] + " is dirty" ); } } Index: EntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/EntityPersister.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** EntityPersister.java 19 Jan 2003 11:47:07 -0000 1.6 --- EntityPersister.java 20 Jan 2003 12:48:14 -0000 1.7 *************** *** 37,40 **** --- 37,46 ---- import net.sf.hibernate.hql.PathExpressionParser; import net.sf.hibernate.id.IdentifierGeneratorFactory; + import net.sf.hibernate.sql.Delete; + import net.sf.hibernate.sql.InFragment; + import net.sf.hibernate.sql.Insert; + import net.sf.hibernate.sql.SimpleSelect; + import net.sf.hibernate.sql.SelectFragment; + import net.sf.hibernate.sql.Update; import net.sf.hibernate.type.AbstractComponentType; import net.sf.hibernate.type.DiscriminatorType; *************** *** 102,106 **** Type idType = factory.getIdentifierType( etype.getPersistentClass() ); ! String idpath = path + '.' + PathExpressionParser.ENTITY_ID; mods.put(idpath, idType); columnNamesByPropertyPath.put(idpath, columns); --- 108,112 ---- Type idType = factory.getIdentifierType( etype.getPersistentClass() ); ! String idpath = path + StringHelper.DOT + PathExpressionParser.ENTITY_ID; mods.put(idpath, idType); columnNamesByPropertyPath.put(idpath, columns); *************** *** 108,114 **** AbstractComponentType actype = (AbstractComponentType) idType; String[] props = actype.getPropertyNames(); ! if (props.length!=columns.length) throw new MappingException("broken mapping for: " + getClassName() + '.' + path); for ( int i=0; i<props.length; i++ ) { ! String subidpath = idpath + '.' + props[i]; columnNamesByPropertyPath.put( subidpath, new String[] { columns[i] } ); mods.put( subidpath, actype.getSubtypes()[i] ); --- 114,120 ---- AbstractComponentType actype = (AbstractComponentType) idType; String[] props = actype.getPropertyNames(); ! if (props.length!=columns.length) throw new MappingException("broken mapping for: " + getClassName() + StringHelper.DOT + path); for ( int i=0; i<props.length; i++ ) { ! String subidpath = idpath + StringHelper.DOT + props[i]; columnNamesByPropertyPath.put( subidpath, new String[] { columns[i] } ); mods.put( subidpath, actype.getSubtypes()[i] ); *************** *** 247,261 **** */ protected String generateDeleteString() { ! StringBuffer buf = new StringBuffer("delete from ") ! .append( getTableName() ) ! .append(" where ") ! .append( StringHelper.join( " = ? and ", getIdentifierColumnNames() ) ) ! .append(" = ?"); ! if ( isVersioned() ) { ! buf.append(" and ") ! .append( getVersionColumnName() ) ! .append(" = ?") ; ! } ! return buf.toString(); } --- 253,261 ---- */ protected String generateDeleteString() { ! return new Delete() ! .setTableName( getTableName() ) ! .setPrimaryKeyColumnNames( getIdentifierColumnNames() ) ! .setVersionColumnName( getVersionColumnName() ) ! .toStatementString(); } *************** *** 264,308 **** */ protected String generateInsertString(boolean identityInsert) { ! ! String identityColumnInsertString = dialect.getIdentityInsertString(); ! ! String[] columnNames = getColumnNames(); ! boolean hasPropertyColumns = columnNames.length > 0; ! boolean insertIdentifierColumns = !identityInsert || identityColumnInsertString!=null; ! String commaAfterProperties = hasPropertyColumns && ( insertIdentifierColumns || isPolymorphic() ) ? ", " : ""; ! String commaAfterIdentifiers = insertIdentifierColumns && isPolymorphic() ? ", " : ""; ! ! StringBuffer buf = new StringBuffer("insert into ") ! .append( getTableName() ) ! .append(' '); ! ! if ( !hasPropertyColumns && !insertIdentifierColumns && !isPolymorphic() ) { ! buf.append( dialect.getNoColumnsInsertString() ); } else { ! buf.append(" ( ") ! .append( net.sf.hibernate.util.StringHelper.join( ", ", columnNames ) ) ! .append(commaAfterProperties) ! .append( insertIdentifierColumns ? StringHelper.join( ", ", getIdentifierColumnNames() ) : "" ) ! .append(commaAfterIdentifiers) ! .append( isPolymorphic() ? getDiscriminatorColumnName() : "" ) //to handle discriminator column ! .append(" ) values ( ") ! .append( hasPropertyColumns ? StringHelper.repeat( "?, ", columnNames.length-1 ) : "" ) ! .append( hasPropertyColumns ? "?" : "" ) ! .append(commaAfterProperties); ! ! if ( !identityInsert ) { ! buf.append( StringHelper.repeat( "?, ", getIdentifierColumnNames().length-1 ) ) ! .append("?"); ! } ! else if (identityColumnInsertString!=null) { ! buf.append(identityColumnInsertString); ! } ! buf.append(commaAfterIdentifiers); ! ! if ( isPolymorphic() ) buf.append(discriminatorSQLString); //to handle discriminator column ! buf.append(" )"); } ! return buf.toString(); } --- 264,278 ---- */ protected String generateInsertString(boolean identityInsert) { ! Insert insert = new Insert(dialect) ! .setTableName( getTableName() ) ! .addColumns( getColumnNames() ); ! if ( isPolymorphic() ) insert.addColumn( getDiscriminatorColumnName(), discriminatorSQLString ); ! if (!identityInsert) { ! insert.addColumns( getIdentifierColumnNames() ); } else { ! insert.addIdentityColumn( getIdentifierColumnNames()[0] ); } ! return insert.toStatementString(); } *************** *** 325,341 **** */ protected String generateSelectString() { ! final String[] subclassColumnClosure = getSubclassColumnClosure(); ! return new StringBuffer(100) ! .append("select ") ! .append( StringHelper.join( ", ", getIdentifierColumnNames() ) ) ! .append( hasSubclasses() ? ", " + getDiscriminatorColumnName() : "" ) ! .append( subclassColumnClosure.length==0 ? "" : ", ") ! .append( StringHelper.join( ", ", subclassColumnClosure ) ) ! .append(" from ") ! .append( getTableName() ) ! .append(" where ") ! .append( StringHelper.join( " = ? and ", getIdentifierColumnNames() ) ) ! .append(" = ?") ! .toString(); } --- 295,306 ---- */ protected String generateSelectString() { ! SimpleSelect select = new SimpleSelect() ! .setTableName( getTableName() ) ! .addColumns( getIdentifierColumnNames() ) ! .addColumns( getSubclassColumnClosure() ); ! if ( hasSubclasses() ) { ! select.addColumn( getDiscriminatorColumnName() ); ! } ! return select.addCondition( getIdentifierColumnNames(), "=?" ).toStatementString(); } *************** *** 344,367 **** */ protected String generateUpdateString() { ! String[] columnNames = getColumnNames(); ! StringBuffer setters = new StringBuffer(20); ! for (int i=0; i<columnNames.length; i++) { ! setters.append( columnNames[i] ).append(" = ?"); ! if (i!=columnNames.length-1) setters.append(", "); ! } ! StringBuffer buf = new StringBuffer(100) ! .append("update ") ! .append( getTableName() ) ! .append(" set ") ! .append( setters.toString() ) ! .append(" where ") ! .append( StringHelper.join( " = ? and ", getIdentifierColumnNames() ) ) //TODO:refactor out copied code ! .append(" = ?"); ! if ( isVersioned() ) { ! buf.append(" and ") ! .append( getVersionColumnName() ) ! .append(" = ?"); ! } ! return buf.toString(); } --- 309,318 ---- */ protected String generateUpdateString() { ! return new Update() ! .setTableName( getTableName() ) ! .addColumns( getColumnNames() ) ! .setPrimaryKeyColumnNames( getIdentifierColumnNames() ) ! .setVersionColumnName( getVersionColumnName() ) ! .toStatementString(); } *************** *** 370,387 **** */ protected String generateLockString() { ! StringBuffer buf = new StringBuffer(100) ! .append("select ") ! .append( getIdentifierColumnNames()[0] ) ! .append(" from ") ! .append( getTableName() ) ! .append(" where ") ! .append( StringHelper.join( " = ? and ", getIdentifierColumnNames() ) ) //TODO:refactor out copied code ! .append(" = ?"); if ( isVersioned() ) { ! buf.append(" and ") ! .append( getVersionColumnName() ) ! .append(" = ?"); } ! return buf.toString(); } --- 321,334 ---- */ protected String generateLockString() { ! SimpleSelect select = new SimpleSelect() ! .setTableName( getTableName() ) ! .addColumn( getIdentifierColumnNames()[0] ) ! .addCondition( getIdentifierColumnNames(), "=?" ); if ( isVersioned() ) { ! select.addWhereToken("and") ! .addCondition( getVersionColumnName(), "=?" ); } ! return select.toStatementString(); ! } *************** *** 702,711 **** propertyColumnNames[i] = colNames; ! initPropertyPaths(prop, ""); i++; } if ( model.hasIdentifierProperty() && model.getIdentifierProperty().isComposite() ) { ! initPropertyPaths( model.getIdentifierProperty(), "" ); } --- 649,658 ---- propertyColumnNames[i] = colNames; ! initPropertyPaths(prop, StringHelper.EMPTY_STRING); i++; } if ( model.hasIdentifierProperty() && model.getIdentifierProperty().isComposite() ) { ! initPropertyPaths( model.getIdentifierProperty(), StringHelper.EMPTY_STRING ); } *************** *** 810,819 **** Type type = prop.getType(); typesByPropertyPath.put(path, type); ! /*if ( type.isEntityType() && ( (EntityType) type ).isOneToOne() ) { ! columnNamesByPropertyPath.put( path, getIdentifierColumnNames() ); ! } ! else {*/ columnNamesByPropertyPath.put(path, names); - //} } --- 757,762 ---- Type type = prop.getType(); typesByPropertyPath.put(path, type); ! columnNamesByPropertyPath.put(path, names); } *************** *** 833,866 **** } ! public String fromClauseFragment(String name, boolean innerJoin) { return getTableName() + ' ' + name; } ! ! public String outerJoinsAfterFrom(String name, boolean innerJoin) { ! return ""; ! } ! ! public String outerJoinsAfterWhere(String name, boolean innerJoin) { ! return ""; ! } ! ! public String getQueryWhereClause(String name) throws MappingException { if ( isInherited() ) { ! StringBuffer buf = new StringBuffer(40); ! buf.append(name) ! .append('.') ! .append( getDiscriminatorColumnName() ) ! .append(" in ("); Class[] subclasses = getSubclassClosure(); for ( int i=0; i<subclasses.length; i++ ) { ! buf.append( ! ( (Queryable) factory.getPersister( subclasses[i] ) ) ! .getDiscriminatorSQLString() ); - if (i<subclasses.length-1) buf.append(", "); } ! buf.append(") "); ! return buf.toString(); } else { --- 776,795 ---- } ! public String fromClauseFragment(String name, boolean innerJoin, boolean includeSubclasses) { return getTableName() + ' ' + name; } ! ! public String getQueryWhereClause(String name, boolean includeSubclasses) throws MappingException { if ( isInherited() ) { ! InFragment frag = new InFragment() ! .setColumn( name, getDiscriminatorColumnName() ); Class[] subclasses = getSubclassClosure(); for ( int i=0; i<subclasses.length; i++ ) { ! frag.addValue( ! ( (Queryable) factory.getPersister( subclasses[i] ) ).getDiscriminatorSQLString() ); } ! return frag.toFragmentString(); } else { *************** *** 884,919 **** } ! return StringHelper.prefix(cols, name + '.'); } public String[] toColumns(String name, int i) { ! return StringHelper.prefix( subclassPropertyColumnNameClosure[i], name + '.' ); } public String propertySelectClauseFragment(String name, String suffix) { ! StringBuffer buf = new StringBuffer(30); ! ! if ( hasSubclasses() ) { ! String discr = getDiscriminatorColumnName(); ! buf.append(", ") ! .append(name) ! .append('.') ! .append(discr) ! .append(" as ") ! .append( StringHelper.suffix(discr, suffix) ); ! } ! ! String[] cols = getSubclassColumnClosure(); ! ! for ( int i=0; i<cols.length; i++ ) { ! buf.append(", ") ! .append(name) ! .append('.') ! .append( cols[i] ) ! .append(" as ") ! .append( StringHelper.suffix(cols[i], suffix) ); ! } ! return buf.toString(); } --- 813,830 ---- } ! return StringHelper.prefix(cols, name + StringHelper.DOT); } public String[] toColumns(String name, int i) { ! return StringHelper.prefix( subclassPropertyColumnNameClosure[i], name + StringHelper.DOT ); } public String propertySelectClauseFragment(String name, String suffix) { ! SelectFragment frag = new SelectFragment() ! .setSuffix(suffix); ! if ( hasSubclasses() ) frag.addColumn( name, getDiscriminatorColumnName() ); ! return frag.addColumns( name, getSubclassColumnClosure() ) ! .toFragmentString(); } *************** *** 922,925 **** --- 833,844 ---- } + public String fromJoinFragment(String alias, boolean innerJoin) { + return StringHelper.EMPTY_STRING; + } + + public String whereJoinFragment(String alias, boolean innerJoin) { + return StringHelper.EMPTY_STRING; + } + } Index: Loadable.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/Loadable.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Loadable.java 5 Jan 2003 02:11:22 -0000 1.3 --- Loadable.java 20 Jan 2003 12:48:14 -0000 1.4 *************** *** 90,93 **** --- 90,98 ---- /** * Given a query alias and an identifying suffix, render the + * intentifier select fragment + */ + public String identifierSelectClauseFragment(String name, String suffix); + /** + * Given a query alias and an identifying suffix, render the * property select fragment * (optional operation) *************** *** 98,112 **** * (optional operation) */ ! public String fromClauseFragment(String name, boolean innerJoin); ! /** ! * Get any outer join SQL fragments that appear in the <tt>FROM</tt> clause ! * (optional operation) ! */ ! public String outerJoinsAfterFrom(String name, boolean innerJoin); ! /** ! * Get any outer join SQL fragments that appear in the <tt>WHERE</tt> clause ! * (optional operation) ! */ ! public String outerJoinsAfterWhere(String name, boolean innerJoin); /** * Get the table alias for the particular subclass state --- 103,108 ---- * (optional operation) */ ! public String fromClauseFragment(String name, boolean innerJoin, boolean includeSubclasses); ! /** * Get the table alias for the particular subclass state *************** *** 114,117 **** --- 110,116 ---- */ public String getConcreteClassAlias(String alias); + + public String whereJoinFragment(String alias, boolean innerJoin); + public String fromJoinFragment(String alias, boolean innerJoin); } Index: Queryable.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/Queryable.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Queryable.java 5 Jan 2003 02:11:22 -0000 1.3 --- Queryable.java 20 Jan 2003 12:48:14 -0000 1.4 *************** *** 44,54 **** * Get the where clause fragment, given a query alias */ ! public String getQueryWhereClause(String name) throws MappingException; - /** - * Given a query alias and an identifying suffix, render the - * intentifier select fragment - */ - public String selectIdentifierString(String name, String suffix); /** * Given a query alias and a property path, return the qualified --- 44,49 ---- * Get the where clause fragment, given a query alias */ ! public String getQueryWhereClause(String name, boolean includeSubclasses) throws MappingException; /** * Given a query alias and a property path, return the qualified |
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/mapping Modified Files: Index.java PrimaryKey.java Root.java Subclass.java Table.java UniqueKey.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: Index.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Index.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Index.java 5 Jan 2003 02:11:22 -0000 1.3 --- Index.java 20 Jan 2003 12:48:13 -0000 1.4 *************** *** 24,34 **** while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(", "); } ! buf.append(")"); return buf.toString(); } public String sqlDropString(Dialect dialect) { ! return "drop index " + table.getQualifiedName() + '.' + name; } public Table getTable() { --- 24,34 ---- while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(StringHelper.COMMA_SPACE); } ! buf.append(StringHelper.CLOSE_PAREN); return buf.toString(); } public String sqlDropString(Dialect dialect) { ! return "drop index " + table.getQualifiedName() + StringHelper.DOT + name; } public Table getTable() { Index: PrimaryKey.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/PrimaryKey.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PrimaryKey.java 5 Jan 2003 02:11:22 -0000 1.3 --- PrimaryKey.java 20 Jan 2003 12:48:13 -0000 1.4 *************** *** 5,8 **** --- 5,9 ---- import net.sf.hibernate.dialect.Dialect; + import net.sf.hibernate.util.StringHelper; public class PrimaryKey extends Constraint { *************** *** 13,19 **** while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(", "); } ! return buf.append(")").toString(); } --- 14,20 ---- while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(StringHelper.COMMA_SPACE); } ! return buf.append(StringHelper.CLOSE_PAREN).toString(); } *************** *** 25,31 **** while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(", "); } ! return buf.append(")").toString(); } } --- 26,32 ---- while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(StringHelper.COMMA_SPACE); } ! return buf.append(StringHelper.CLOSE_PAREN).toString(); } } Index: Root.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Root.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Root.java 9 Jan 2003 12:24:51 -0000 1.5 --- Root.java 20 Jan 2003 12:48:13 -0000 1.6 *************** *** 18,25 **** import net.sf.hibernate.cache.ReadWriteCache; import net.sf.hibernate.type.Type; public class Root { ! static final String ROOT_ROLE_NAME = ""; static final char ROLE_SEPERATOR = '/'; --- 18,26 ---- import net.sf.hibernate.cache.ReadWriteCache; import net.sf.hibernate.type.Type; + import net.sf.hibernate.util.StringHelper; public class Root { ! static final String ROOT_ROLE_NAME = StringHelper.EMPTY_STRING; static final char ROLE_SEPERATOR = '/'; Index: Subclass.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Subclass.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Subclass.java 19 Jan 2003 11:47:07 -0000 1.5 --- Subclass.java 20 Jan 2003 12:48:13 -0000 1.6 *************** *** 8,14 **** import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.persister.EntityPersister; - import net.sf.hibernate.persister.MultiTableEntityPersister; import net.sf.hibernate.util.JoinedIterator; import net.sf.hibernate.util.StringHelper; import org.w3c.dom.NamedNodeMap; --- 8,15 ---- import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.persister.EntityPersister; import net.sf.hibernate.util.JoinedIterator; import net.sf.hibernate.util.StringHelper; + import net.sf.hibernate.persister.EntityPersister; + import net.sf.hibernate.persister.NormalizedEntityPersister; import org.w3c.dom.NamedNodeMap; *************** *** 105,109 **** if ( getPersister()==null ) { ! getRootClass().setPersister(MultiTableEntityPersister.class); } --- 106,110 ---- if ( getPersister()==null ) { ! getRootClass().setPersister(NormalizedEntityPersister.class); } Index: Table.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Table.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Table.java 9 Jan 2003 12:24:51 -0000 1.4 --- Table.java 20 Jan 2003 12:48:13 -0000 1.5 *************** *** 14,17 **** --- 14,18 ---- import net.sf.hibernate.tool.hbm2ddl.JdbcColumnInfo; import net.sf.hibernate.tool.hbm2ddl.JdbcTableInfo; + import net.sf.hibernate.util.StringHelper; import org.apache.commons.collections.SequencedHashMap; *************** *** 34,42 **** public String getQualifiedName() { ! return (schema==null) ? name : schema + '.' + name; } public String getQualifiedName(String defaultQualifier) { ! return ( schema==null ) ? ( (defaultQualifier==null) ? name : defaultQualifier + '.' + name ) : getQualifiedName(); } --- 35,43 ---- public String getQualifiedName() { ! return (schema==null) ? name : schema + StringHelper.DOT + name; } public String getQualifiedName(String defaultQualifier) { ! return ( schema==null ) ? ( (defaultQualifier==null) ? name : defaultQualifier + StringHelper.DOT + name ) : getQualifiedName(); } *************** *** 86,90 **** // the column doesnt exist at all. if (buf.length()!=0) ! buf.append(", "); buf.append(col.getName()).append(' ').append(col.getSqlType(dialect,p)); if (col.isUnique()&&dialect.supportsUnique()) { --- 87,91 ---- // the column doesnt exist at all. if (buf.length()!=0) ! buf.append(StringHelper.COMMA_SPACE); buf.append(col.getName()).append(' ').append(col.getSqlType(dialect,p)); if (col.isUnique()&&dialect.supportsUnique()) { *************** *** 139,143 **** buf.append(" unique"); } ! if ( iter.hasNext() ) buf.append(", "); } --- 140,144 ---- buf.append(" unique"); } ! if ( iter.hasNext() ) buf.append(StringHelper.COMMA_SPACE); } *************** *** 158,162 **** } } ! buf.append(")"); return buf.toString(); --- 159,163 ---- } } ! buf.append(StringHelper.CLOSE_PAREN); return buf.toString(); Index: UniqueKey.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/UniqueKey.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** UniqueKey.java 5 Jan 2003 02:11:22 -0000 1.3 --- UniqueKey.java 20 Jan 2003 12:48:13 -0000 1.4 *************** *** 14,20 **** while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(", "); } ! return buf.append(")").toString(); } --- 14,20 ---- while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(StringHelper.COMMA_SPACE); } ! return buf.append(StringHelper.CLOSE_PAREN).toString(); } *************** *** 26,32 **** while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(", "); } ! return StringHelper.replace( buf.append(")").toString(), "primary key", "unique" ); //TODO: improve this hack! } } --- 26,32 ---- while ( iter.hasNext() ) { buf.append( ( (Column) iter.next() ).getName() ); ! if ( iter.hasNext() ) buf.append(StringHelper.COMMA_SPACE); } ! return StringHelper.replace( buf.append(StringHelper.CLOSE_PAREN).toString(), "primary key", "unique" ); //TODO: improve this hack! } } |
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/loader In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/loader Modified Files: CollectionLoader.java EntityLoader.java Loader.java OneToManyLoader.java OuterJoinLoader.java SimpleEntityLoader.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: CollectionLoader.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/loader/CollectionLoader.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CollectionLoader.java 15 Jan 2003 12:49:01 -0000 1.5 --- CollectionLoader.java 20 Jan 2003 12:48:12 -0000 1.6 *************** *** 13,17 **** --- 13,21 ---- import net.sf.hibernate.engine.SessionImplementor; import net.sf.hibernate.persister.Loadable; + import net.sf.hibernate.sql.ConditionFragment; + import net.sf.hibernate.sql.OuterJoinFragment; + import net.sf.hibernate.sql.Select; import net.sf.hibernate.type.Type; + import net.sf.hibernate.util.StringHelper; /** *************** *** 38,60 **** int joins=associations.size(); suffixes = new String[joins]; ! for ( int i=0; i<joins; i++ ) suffixes[i] = (joins==1) ? "" : Integer.toString(i); ! sql = sqlSelect( ! // SELECT CLAUSE ! selectCollectionString(persister, alias) + ! ( joins==0 ? "" : ", " + selectString(associations) ), ! // FROM CLAUSE ! persister.getQualifiedTableName() + ' ' + alias, ! // OUTER JOINS (Insertion Point 1) ! outerJoinGenerator.outerJoinStringAfterFrom(associations), ! // WHERE CLAUSE ! whereString( persister.getKeyColumnNames(), alias ), ! // OUTER JOINS (Insertion Point 2) ! outerJoinGenerator.outerJoinStringAfterWhere(associations), ! // ORDER BY CLAUSE ! ( persister.hasOrdering() ) ? ! persister.getSQLOrderByString(alias) : ! null ! ); classPersisters = new Loadable[joins]; --- 42,64 ---- int joins=associations.size(); suffixes = new String[joins]; ! for ( int i=0; i<joins; i++ ) suffixes[i] = (joins==1) ? StringHelper.EMPTY_STRING : Integer.toString(i); ! OuterJoinFragment ojf = outerJoins(associations); ! Select select = new Select() ! .setSelectClause( ! persister.selectClauseFragment(alias) + ( joins==0 ? StringHelper.EMPTY_STRING : ", " + selectString(associations) ) ! ) ! .setFromClause( persister.getQualifiedTableName(), alias ) ! .setWhereClause( ! new ConditionFragment().setTableAlias(alias) ! .setCondition( persister.getKeyColumnNames(), "?" ) ! .toFragmentString() ! ) ! .setOuterJoins( ! ojf.toFromFragmentString(), ! ojf.toWhereFragmentString() ! ); ! if ( persister.hasOrdering() ) select.setOrderByClause( persister.getSQLOrderByString(alias) ); ! sql = select.toStatementString(); classPersisters = new Loadable[joins]; Index: EntityLoader.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/loader/EntityLoader.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** EntityLoader.java 18 Jan 2003 09:03:54 -0000 1.6 --- EntityLoader.java 20 Jan 2003 12:48:12 -0000 1.7 *************** *** 12,16 **** --- 12,20 ---- import net.sf.hibernate.persister.ClassPersister; import net.sf.hibernate.persister.Loadable; + import net.sf.hibernate.sql.ConditionFragment; + import net.sf.hibernate.sql.OuterJoinFragment; + import net.sf.hibernate.sql.Select; import net.sf.hibernate.type.Type; + import net.sf.hibernate.util.StringHelper; /** *************** *** 35,54 **** int joins=associations.size(); suffixes = new String[joins+1]; ! for ( int i=0; i<=joins; i++ ) suffixes[i] = (joins==0) ? "" : Integer.toString(i); ! sql = sqlSelect( ! //SELECT CLAUSE ! ( joins==0 ? "" : selectString(associations) + ", " ) + ! selectString( persister, alias, suffixes[joins] ), ! // FROM CLAUSE ! persister.fromClauseFragment(alias, true), ! // OUTER JOINS (Insertion Point 1) ! outerJoinGenerator.outerJoinStringAfterFrom(associations), ! // WHERE CLAUSE ! whereString( persister.getIdentifierColumnNames(), alias ), ! // OUTER JOINS (Insertion Point 2) ! outerJoinGenerator.outerJoinStringAfterWhere(associations) + ! persister.outerJoinsAfterWhere(alias, true) ! ); classPersisters = new Loadable[joins+1]; --- 39,61 ---- int joins=associations.size(); suffixes = new String[joins+1]; ! for ( int i=0; i<=joins; i++ ) suffixes[i] = (joins==0) ? StringHelper.EMPTY_STRING : Integer.toString(i); ! OuterJoinFragment ojf = outerJoins(associations); ! sql = new Select() ! .setSelectClause( ! ( joins==0 ? StringHelper.EMPTY_STRING : selectString(associations) + ", " ) + ! selectString( persister, alias, suffixes[joins] ) ! ) ! .setFromClause( persister.fromClauseFragment(alias, true, true) ) ! .setWhereClause( ! new ConditionFragment().setTableAlias(alias) ! .setCondition( persister.getIdentifierColumnNames(), "?" ) ! .toFragmentString() ! ) ! .setOuterJoins( ! ojf.toFromFragmentString(), ! ojf.toWhereFragmentString() ! ) ! .toStatementString(); classPersisters = new Loadable[joins+1]; Index: Loader.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/loader/Loader.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Loader.java 18 Jan 2003 09:03:54 -0000 1.6 --- Loader.java 20 Jan 2003 12:48:12 -0000 1.7 *************** *** 485,511 **** } - /** - * Construct an SQL <tt>SELECT</tt> statement from the given clauses - */ - protected static final String sqlSelect(String selectClause, String fromClause, String outerJoinsAfterFrom, String whereClause, String outerJoinsAfterWhere) { - return sqlSelect(selectClause, fromClause, outerJoinsAfterFrom, whereClause, outerJoinsAfterWhere, null); - } - - /** - * Construct an SQL <tt>SELECT</tt> statement from the given clauses - */ - protected static final String sqlSelect(String selectClause, String fromClause, String outerJoinsAfterFrom, String whereClause, String outerJoinsAfterWhere, String orderByClause) { - 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(); - } - } --- 485,488 ---- Index: OneToManyLoader.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/loader/OneToManyLoader.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** OneToManyLoader.java 15 Jan 2003 12:49:01 -0000 1.5 --- OneToManyLoader.java 20 Jan 2003 12:48:13 -0000 1.6 *************** *** 13,18 **** --- 13,22 ---- import net.sf.hibernate.engine.SessionImplementor; import net.sf.hibernate.persister.Loadable; + import net.sf.hibernate.sql.ConditionFragment; + import net.sf.hibernate.sql.OuterJoinFragment; + import net.sf.hibernate.sql.Select; import net.sf.hibernate.type.EntityType; import net.sf.hibernate.type.Type; + import net.sf.hibernate.util.StringHelper; /** *************** *** 46,71 **** int joins=associations.size(); suffixes = new String[joins+1]; ! for ( int i=0; i<=joins; i++ ) suffixes[i] = (joins==0) ? "" : Integer.toString(i); ! sql = sqlSelect( ! // SELECT CLAUSE ! selectCollectionString(collPersister, collAlias) + ! ( joins==0 ? "" : ", " + selectString(associations) ) ! + ", " + ! selectString( persister, alias, suffixes[joins] ), ! // FROM CLAUSE ! persister.fromClauseFragment(alias, true), ! // OUTER JOINS (Insertion Point 1) ! outerJoinGenerator.outerJoinStringAfterFrom(associations), ! // WHERE CLAUSE ! whereString( collPersister.getKeyColumnNames(), collAlias ), ! // OUTER JOINS (Insertion Point 2) ! outerJoinGenerator.outerJoinStringAfterWhere(associations) + ! persister.outerJoinsAfterWhere(alias, true), ! // ORDER BY CLAUSE ! collPersister.hasOrdering() ? ! collPersister.getSQLOrderByString(collAlias) : ! null ! ); classPersisters = new Loadable[joins+1]; --- 50,75 ---- int joins=associations.size(); suffixes = new String[joins+1]; ! for ( int i=0; i<=joins; i++ ) suffixes[i] = (joins==0) ? StringHelper.EMPTY_STRING : Integer.toString(i); ! OuterJoinFragment ojf = outerJoins(associations); ! Select select = new Select() ! .setSelectClause( ! collPersister.selectClauseFragment(collAlias) + ! ( joins==0 ? StringHelper.EMPTY_STRING : ", " + selectString(associations) ) + ! ", " + ! selectString( persister, alias, suffixes[joins] ) ! ) ! .setFromClause( persister.fromClauseFragment(alias, true, true) ) ! .setWhereClause( ! new ConditionFragment().setTableAlias(collAlias) ! .setCondition( collPersister.getKeyColumnNames(), "?" ) ! .toFragmentString() ! ) ! .setOuterJoins( ! ojf.toFromFragmentString(), ! ojf.toWhereFragmentString() ! ); ! if ( collPersister.hasOrdering() ) select.setOrderByClause( collPersister.getSQLOrderByString(collAlias) ); ! sql = select.toStatementString(); classPersisters = new Loadable[joins+1]; Index: OuterJoinLoader.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/loader/OuterJoinLoader.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** OuterJoinLoader.java 18 Jan 2003 09:57:36 -0000 1.8 --- OuterJoinLoader.java 20 Jan 2003 12:48:13 -0000 1.9 *************** *** 4,7 **** --- 4,8 ---- import java.util.ArrayList; import java.util.HashSet; + import java.util.Iterator; import java.util.List; import java.util.Set; *************** *** 13,17 **** import net.sf.hibernate.persister.ClassPersister; import net.sf.hibernate.persister.Loadable; ! import net.sf.hibernate.persister.MultiTableEntityPersister; import net.sf.hibernate.type.AbstractComponentType; import net.sf.hibernate.type.EntityType; --- 14,19 ---- import net.sf.hibernate.persister.ClassPersister; import net.sf.hibernate.persister.Loadable; ! import net.sf.hibernate.persister.NormalizedEntityPersister; ! import net.sf.hibernate.sql.OuterJoinFragment; import net.sf.hibernate.type.AbstractComponentType; import net.sf.hibernate.type.EntityType; *************** *** 39,50 **** protected String sql; protected String[] suffixes; ! protected final OuterJoinGenerator outerJoinGenerator; public OuterJoinLoader(Dialect dialect) { ! outerJoinGenerator = dialect.getOuterJoinGenerator(); } public static final class OuterJoinableAssociation { - //Object persister; // a class or collection persister! public Loadable subpersister; public String[] foreignKeyColumns; // belong to persister --- 41,51 ---- protected String sql; protected String[] suffixes; ! private Dialect dialect; public OuterJoinLoader(Dialect dialect) { ! this.dialect=dialect; } public static final class OuterJoinableAssociation { public Loadable subpersister; public String[] foreignKeyColumns; // belong to persister *************** *** 75,79 **** if ( autoEager( persister.enableJoinedFetch(), etype, session ) ) { // fetch many-to-many by outerjoin depending value of outer-join in mapping ! String[] columns = StringHelper.prefix( persister.getElementColumnNames(), alias + '.' ); walkTree(etype, columns, persister, associations, new HashSet(), session); } --- 76,80 ---- if ( autoEager( persister.enableJoinedFetch(), etype, session ) ) { // fetch many-to-many by outerjoin depending value of outer-join in mapping ! String[] columns = StringHelper.prefix( persister.getElementColumnNames(), alias + StringHelper.DOT ); walkTree(etype, columns, persister, associations, new HashSet(), session); } *************** *** 108,112 **** columns = StringHelper.prefix( ( (Loadable) persister ).getIdentifierColumnNames(), //The cast is safe because collections can't contain a 1-to-1 ! alias + '.' ); } --- 109,113 ---- columns = StringHelper.prefix( ( (Loadable) persister ).getIdentifierColumnNames(), //The cast is safe because collections can't contain a 1-to-1 ! alias + StringHelper.DOT ); } *************** *** 131,135 **** if ( !session.enableJoinedFetch() || ! persister instanceof MultiTableEntityPersister //TODO: remove this + enable outerjoin fetching ) return; --- 132,136 ---- if ( !session.enableJoinedFetch() || ! persister instanceof NormalizedEntityPersister //TODO: remove this + enable outerjoin fetching ) return; *************** *** 142,146 **** EntityType etype = (EntityType) types[i]; if ( autoEager( act.enableJoinedFetch(i), etype, session ) ) { ! String[] columns = StringHelper.prefix( range, alias + '.' ); walkTree(etype, columns, persister, associations, classPersisters, session); } --- 143,147 ---- EntityType etype = (EntityType) types[i]; if ( autoEager( act.enableJoinedFetch(i), etype, session ) ) { ! String[] columns = StringHelper.prefix( range, alias + StringHelper.DOT ); walkTree(etype, columns, persister, associations, classPersisters, session); } *************** *** 168,172 **** //TODO: remove this: ! //if ( subpersister instanceof MultiTableEntityPersister ) return; if ( !classPersisters.contains(subpersister) ) { // to avoid navigating back up bidirectional associations (and circularities) --- 169,173 ---- //TODO: remove this: ! //if ( subpersister instanceof NormalizedEntityPersister ) return; if ( !classPersisters.contains(subpersister) ) { // to avoid navigating back up bidirectional associations (and circularities) *************** *** 197,205 **** */ public final String selectString(List associations) { ! StringBuffer buf = new StringBuffer(100); for ( int i=0; i<associations.size(); i++ ) { OuterJoinableAssociation join = (OuterJoinableAssociation) associations.get(i); appendSelectString( buf, join.subpersister, join.subalias, getSuffixes()[i] ); ! if ( i<associations.size()-1 ) buf.append(", "); } return buf.toString(); --- 198,206 ---- */ public final String selectString(List associations) { ! StringBuffer buf = new StringBuffer( associations.size() * 100 ); for ( int i=0; i<associations.size(); i++ ) { OuterJoinableAssociation join = (OuterJoinableAssociation) associations.get(i); appendSelectString( buf, join.subpersister, join.subalias, getSuffixes()[i] ); ! if ( i<associations.size()-1 ) buf.append(StringHelper.COMMA_SPACE); } return buf.toString(); *************** *** 219,274 **** */ private static final void appendSelectString(StringBuffer buf, Loadable persister, String alias, String suffix) { ! ! //TODO: refactor this bit onto AbstractEntityPersister (its repeated in Query stuff) ! String[] keyCols = persister.getIdentifierColumnNames(); ! for ( int j=0; j<keyCols.length; j++) { ! buf.append(alias) ! .append('.') ! .append( keyCols[j] ) ! .append(" AS ") ! .append( StringHelper.suffix( keyCols[j], suffix ) ); ! if ( j != keyCols.length-1 ) buf.append(", "); ! } ! buf.append( persister.propertySelectClauseFragment(alias, suffix) ); ! ! } ! ! /** ! * Generate a list of column conditions of the form <tt>x.foo = ?, x.bar = ?</tt> ! */ ! protected static final String whereString(String[] columns, String alias) { ! StringBuffer buf = new StringBuffer(20); ! for ( int i=0; i<columns.length; i++ ) { ! buf.append(alias) ! .append('.') ! .append( columns[i] ) ! .append( " = ?"); ! if (i<columns.length-1) buf.append(" and "); ! } ! return buf.toString(); ! } ! ! /** ! * Generate a list of collection index and element columns ! */ ! protected static final String selectCollectionString(CollectionPersister persister, String alias) { ! StringBuffer buf = new StringBuffer(20); ! String[] selectCols = persister.getElementColumnNames(); ! for ( int i=0; i<selectCols.length; i++ ) { ! buf.append(alias) ! .append('.') ! .append( selectCols[i] ); ! if (i!=selectCols.length-1) buf.append(", "); ! } ! if ( persister.hasIndex() ) { ! String[] indexCols = persister.getIndexColumnNames(); ! for ( int i=0; i<indexCols.length; i++ ) { ! buf.append(", ") ! .append(alias) ! .append('.') ! .append( indexCols[i] ); ! } ! } ! return buf.toString(); } --- 220,225 ---- */ private static final void appendSelectString(StringBuffer buf, Loadable persister, String alias, String suffix) { ! buf.append( persister.identifierSelectClauseFragment(alias, suffix) ) ! .append( persister.propertySelectClauseFragment(alias, suffix) ); } *************** *** 283,287 **** return StringHelper.suffix( tableName.length() <=5 ? tableName : tableName.substring(0, 5), ! Integer.toString(n) + '_' ); } --- 234,238 ---- return StringHelper.suffix( tableName.length() <=5 ? tableName : tableName.substring(0, 5), ! Integer.toString(n) + StringHelper.UNDERSCORE ); } *************** *** 291,305 **** } - public String outerJoinsAfterFrom(List associations) { - return outerJoinGenerator.outerJoinStringAfterFrom(associations); - } - - public String outerJoinsAfterWhere(List associations) { - return outerJoinGenerator.outerJoinStringAfterWhere(associations); - } - public void setSuffixed(String[] suffixes) { this.suffixes = suffixes; ! } } --- 242,274 ---- } public void setSuffixed(String[] suffixes) { this.suffixes = suffixes; ! } ! ! /** ! * Generate a sequence of <tt>LEFT OUTER JOIN</tt> clauses for the given associations. ! */ ! public final OuterJoinFragment outerJoins(List associations) { ! OuterJoinFragment outerjoin = dialect.createOuterJoinFragment(); ! Iterator iter = associations.iterator(); ! while ( iter.hasNext() ) { ! OuterJoinLoader.OuterJoinableAssociation oj = (OuterJoinLoader.OuterJoinableAssociation) iter.next(); ! outerjoin.addJoin( ! oj.subpersister.getTableName(), ! oj.subalias, ! oj.foreignKeyColumns, ! oj.subpersister.getIdentifierColumnNames(), ! false ! ); ! outerjoin.addJoins( ! oj.subpersister.fromJoinFragment(oj.subalias, false), ! oj.subpersister.whereJoinFragment(oj.subalias, false) ! ); ! ! //TODO: add the persister's outerjoins ! } ! return outerjoin; ! } ! } Index: SimpleEntityLoader.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/loader/SimpleEntityLoader.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SimpleEntityLoader.java 18 Jan 2003 09:03:54 -0000 1.6 --- SimpleEntityLoader.java 20 Jan 2003 12:48:13 -0000 1.7 *************** *** 12,15 **** --- 12,16 ---- import net.sf.hibernate.persister.Loadable; import net.sf.hibernate.type.Type; + import net.sf.hibernate.util.StringHelper; /** *************** *** 22,26 **** private final String sql; private final LockMode lockMode; ! private static final String[] NO_SUFFIX = new String[] { "" }; public SimpleEntityLoader(Loadable persister, String sql, LockMode lockMode) { --- 23,27 ---- private final String sql; private final LockMode lockMode; ! private static final String[] NO_SUFFIX = new String[] { StringHelper.EMPTY_STRING }; public SimpleEntityLoader(Loadable persister, String sql, LockMode lockMode) { |
From: <one...@us...> - 2003-01-20 12:48:45
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/jmx In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/jmx Modified Files: HibernateService.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: HibernateService.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/jmx/HibernateService.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** HibernateService.java 5 Jan 2003 02:11:21 -0000 1.3 --- HibernateService.java 20 Jan 2003 12:48:12 -0000 1.4 *************** *** 15,18 **** --- 15,19 ---- import net.sf.hibernate.cfg.Datastore; import net.sf.hibernate.util.PropertiesHelper; + import net.sf.hibernate.util.StringHelper; *************** *** 117,121 **** private String[] parseResourceList(String resourceList) { ! return PropertiesHelper.toStringArray(resourceList, ", "); } --- 118,122 ---- private String[] parseResourceList(String resourceList) { ! return PropertiesHelper.toStringArray(resourceList, StringHelper.COMMA_SPACE); } |
From: <one...@us...> - 2003-01-20 12:48:45
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/impl Modified Files: DatastoreImpl.java QueryImpl.java SessionFactoryImpl.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: DatastoreImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/DatastoreImpl.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DatastoreImpl.java 14 Jan 2003 13:42:11 -0000 1.5 --- DatastoreImpl.java 20 Jan 2003 12:48:11 -0000 1.6 *************** *** 19,22 **** --- 19,23 ---- import net.sf.hibernate.util.ArrayHelper; + import net.sf.hibernate.util.StringHelper; import net.sf.hibernate.util.XMLHelper; import net.sf.hibernate.Environment; *************** *** 143,147 **** public Datastore storeClass(Class persistentClass) throws MappingException { ! String fileName = persistentClass.getName().replace('.','/') + ".hbm.xml"; log.info("Mapping resource: " + fileName); InputStream rsrc = persistentClass.getClassLoader().getResourceAsStream(fileName); --- 144,148 ---- public Datastore storeClass(Class persistentClass) throws MappingException { ! String fileName = persistentClass.getName().replace(StringHelper.DOT,'/') + ".hbm.xml"; log.info("Mapping resource: " + fileName); InputStream rsrc = persistentClass.getClassLoader().getResourceAsStream(fileName); Index: QueryImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/QueryImpl.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** QueryImpl.java 17 Jan 2003 10:27:41 -0000 1.6 --- QueryImpl.java 20 Jan 2003 12:48:11 -0000 1.7 *************** *** 290,297 **** int i=0; while ( iter.hasNext() ) { ! String alias = name + i++ + '_'; setParameter(alias, iter.next(), type); list.append( ':' + alias ); ! if ( iter.hasNext() ) list.append(", "); } queryString = StringHelper.replaceOnce( queryString, ':' + name, list.toString() ); --- 290,297 ---- int i=0; while ( iter.hasNext() ) { ! String alias = name + i++ + StringHelper.UNDERSCORE; setParameter(alias, iter.next(), type); list.append( ':' + alias ); ! if ( iter.hasNext() ) list.append(StringHelper.COMMA_SPACE); } queryString = StringHelper.replaceOnce( queryString, ':' + name, list.toString() ); Index: SessionFactoryImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/SessionFactoryImpl.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SessionFactoryImpl.java 14 Jan 2003 13:42:13 -0000 1.5 --- SessionFactoryImpl.java 20 Jan 2003 12:48:11 -0000 1.6 *************** *** 58,62 **** import net.sf.hibernate.persister.ClassPersister; import net.sf.hibernate.persister.EntityPersister; ! import net.sf.hibernate.persister.MultiTableEntityPersister; import net.sf.hibernate.persister.Queryable; import net.sf.hibernate.ps.PreparedStatementCache; --- 58,62 ---- import net.sf.hibernate.persister.ClassPersister; import net.sf.hibernate.persister.EntityPersister; ! import net.sf.hibernate.persister.NormalizedEntityPersister; import net.sf.hibernate.persister.Queryable; import net.sf.hibernate.ps.PreparedStatementCache; *************** *** 197,202 **** cp = new EntityPersister(model, this); } ! else if (persisterClass==MultiTableEntityPersister.class) { ! cp = new MultiTableEntityPersister(model, this); } else { --- 197,202 ---- cp = new EntityPersister(model, this); } ! else if (persisterClass==NormalizedEntityPersister.class) { ! cp = new NormalizedEntityPersister(model, this); } else { *************** *** 483,487 **** if ( log.isDebugEnabled() ) log.debug( ! (scrollable ? "scrollable ":"" ) + "prepared statement get: " + sql ); if (showSql) System.out.println("Hibernate: " + sql); --- 483,487 ---- if ( log.isDebugEnabled() ) log.debug( ! (scrollable ? "scrollable ":StringHelper.EMPTY_STRING ) + "prepared statement get: " + sql ); if (showSql) System.out.println("Hibernate: " + sql); |
From: <one...@us...> - 2003-01-20 12:48:44
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/id Modified Files: UUIDHexGenerator.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: UUIDHexGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id/UUIDHexGenerator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** UUIDHexGenerator.java 9 Jan 2003 12:24:50 -0000 1.4 --- UUIDHexGenerator.java 20 Jan 2003 12:48:11 -0000 1.5 *************** *** 10,13 **** --- 10,14 ---- import net.sf.hibernate.type.Type; import net.sf.hibernate.util.PropertiesHelper; + import net.sf.hibernate.util.StringHelper; /** *************** *** 68,72 **** public void configure(Type type, Properties params, Dialect d) { ! sep = PropertiesHelper.getString("seperator", params, ""); } --- 69,73 ---- public void configure(Type type, Properties params, Dialect d) { ! sep = PropertiesHelper.getString("seperator", params, StringHelper.EMPTY_STRING); } |
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/hql Modified Files: FromParser.java PathExpressionParser.java PreprocessingParser.java QueryTranslator.java SelectParser.java WhereParser.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: FromParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/FromParser.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FromParser.java 5 Jan 2003 02:11:21 -0000 1.3 --- FromParser.java 20 Jan 2003 12:48:10 -0000 1.4 *************** *** 3,6 **** --- 3,7 ---- import net.sf.hibernate.QueryException; + import net.sf.hibernate.util.StringHelper; /** *************** *** 32,36 **** } else if (expectingComma) { ! if ( token.equals(",") ) { expectingComma = false; fromClass = false; --- 33,37 ---- } else if (expectingComma) { ! if ( token.equals(StringHelper.COMMA) ) { expectingComma = false; fromClass = false; Index: PathExpressionParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/PathExpressionParser.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** PathExpressionParser.java 12 Jan 2003 15:04:51 -0000 1.5 --- PathExpressionParser.java 20 Jan 2003 12:48:10 -0000 1.6 *************** *** 53,57 **** .append('=') .append(name) ! .append('.') .append( rhsCols[i] ); } --- 53,57 ---- .append('=') .append(name) ! .append(StringHelper.DOT) .append( rhsCols[i] ); } *************** *** 69,73 **** .append('=') .append(currentName) ! .append('.') .append( q.getPersister(clazz).getIdentifierColumnNames()[i] ); } --- 69,73 ---- .append('=') .append(currentName) ! .append(StringHelper.DOT) .append( q.getPersister(clazz).getIdentifierColumnNames()[i] ); } *************** *** 90,94 **** .append('=') .append(collectionName) ! .append('.') .append( p.getKeyColumnNames()[i] ); } --- 90,94 ---- .append('=') .append(collectionName) ! .append(StringHelper.DOT) .append( p.getKeyColumnNames()[i] ); } *************** *** 144,148 **** } else { ! componentPath+= '.' + token; } } --- 144,148 ---- } else { ! componentPath+= StringHelper.DOT + token; } } *************** *** 172,176 **** currentName = name; currentProperty = token; ! q.addPathAliasAndJoin( path.substring( 0, path.lastIndexOf('.') ), name, join.toString() ); } --- 172,176 ---- currentName = name; currentProperty = token; ! q.addPathAliasAndJoin( path.substring( 0, path.lastIndexOf(StringHelper.DOT) ), name, join.toString() ); } *************** *** 207,216 **** private String getPropertyPath() { if (currentProperty==null) { ! return "id"; } else { return currentProperty + ! ( skippedId ? '.' + ENTITY_ID : "" ) + ! ( (componentPath==null) ? "" : '.' + componentPath ); } } --- 207,216 ---- private String getPropertyPath() { if (currentProperty==null) { ! return ENTITY_ID; } else { return currentProperty + ! ( skippedId ? StringHelper.DOT + ENTITY_ID : StringHelper.EMPTY_STRING ) + ! ( (componentPath==null) ? StringHelper.EMPTY_STRING : StringHelper.DOT + componentPath ); } } *************** *** 256,260 **** if (!continuation) { reset(); ! path = ""; } } --- 256,260 ---- if (!continuation) { reset(); ! path = StringHelper.EMPTY_STRING; } } *************** *** 287,291 **** join.append(" and ") .append(collectionName) ! .append('.') .append( indexCols[0] ) .append("="); --- 287,291 ---- join.append(" and ") .append(collectionName) ! .append(StringHelper.DOT) .append( indexCols[0] ) .append("="); *************** *** 295,299 **** CollectionElement elem = new CollectionElement(); ! elem.elementColumns = StringHelper.prefix( eltCols, collectionName + '.' ); elem.type = memberPersister.getElementType(); elem.isOneToMany = memberPersister.isOneToMany(); --- 295,299 ---- CollectionElement elem = new CollectionElement(); ! elem.elementColumns = StringHelper.prefix( eltCols, collectionName + StringHelper.DOT ); elem.type = memberPersister.getElementType(); elem.isOneToMany = memberPersister.isOneToMany(); *************** *** 393,397 **** .append('=') .append(elementName) ! .append('.') .append( keyColumnNames[i] ); } --- 393,397 ---- .append('=') .append(elementName) ! .append(StringHelper.DOT) .append( keyColumnNames[i] ); } *************** *** 413,417 **** if ( token.equals(COLLECTION_ELEMENTS) ) { String[] cols = memberPersister.getElementColumnNames(); ! collectionElementColumns = StringHelper.prefix( cols, name + '.'); collectionElementType = memberPersister.getElementType(); } --- 413,417 ---- if ( token.equals(COLLECTION_ELEMENTS) ) { String[] cols = memberPersister.getElementColumnNames(); ! collectionElementColumns = StringHelper.prefix( cols, name + StringHelper.DOT); collectionElementType = memberPersister.getElementType(); } *************** *** 419,423 **** if ( !memberPersister.hasIndex() ) throw new QueryException("unindexed collection before .indices"); String[] cols = memberPersister.getIndexColumnNames(); ! collectionElementColumns = StringHelper.prefix(cols, name + '.'); collectionElementType = memberPersister.getIndexType(); } --- 419,423 ---- if ( !memberPersister.hasIndex() ) throw new QueryException("unindexed collection before .indices"); String[] cols = memberPersister.getIndexColumnNames(); ! collectionElementColumns = StringHelper.prefix(cols, name + StringHelper.DOT); collectionElementType = memberPersister.getIndexType(); } *************** *** 430,434 **** String[] cols = memberPersister.getIndexColumnNames(); if ( cols.length!=1 ) throw new QueryException("composite collection index in maxIndex"); ! collectionElementColumns = new String[] { "max(" + cols[0] + ")" }; collectionElementType = memberPersister.getIndexType(); } --- 430,434 ---- String[] cols = memberPersister.getIndexColumnNames(); if ( cols.length!=1 ) throw new QueryException("composite collection index in maxIndex"); ! collectionElementColumns = new String[] { "max(" + cols[0] + StringHelper.CLOSE_PAREN }; collectionElementType = memberPersister.getIndexType(); } *************** *** 437,441 **** String[] cols = memberPersister.getIndexColumnNames(); if ( cols.length!=1 ) throw new QueryException("composite collection index in minIndex"); ! collectionElementColumns = new String[] { "min(" + cols[0] + ")" }; collectionElementType = memberPersister.getIndexType(); } --- 437,441 ---- String[] cols = memberPersister.getIndexColumnNames(); if ( cols.length!=1 ) throw new QueryException("composite collection index in minIndex"); ! collectionElementColumns = new String[] { "min(" + cols[0] + StringHelper.CLOSE_PAREN }; collectionElementType = memberPersister.getIndexType(); } *************** *** 443,447 **** String[] cols = memberPersister.getElementColumnNames(); if ( cols.length!=1 ) throw new QueryException("composite collection element in maxElement"); ! collectionElementColumns = new String[] { "max(" + cols[0] + ")" }; collectionElementType = memberPersister.getElementType(); } --- 443,447 ---- String[] cols = memberPersister.getElementColumnNames(); if ( cols.length!=1 ) throw new QueryException("composite collection element in maxElement"); ! collectionElementColumns = new String[] { "max(" + cols[0] + StringHelper.CLOSE_PAREN }; collectionElementType = memberPersister.getElementType(); } *************** *** 449,457 **** String[] cols = memberPersister.getElementColumnNames(); if ( cols.length!=1 ) throw new QueryException("composite collection element in minElement"); ! collectionElementColumns = new String[] { "min(" + cols[0] + ")" }; collectionElementType = memberPersister.getElementType(); } else { ! throw new QueryException("expecting 'elements' or 'indices' after " + currentProperty + '.'); } } --- 449,457 ---- String[] cols = memberPersister.getElementColumnNames(); if ( cols.length!=1 ) throw new QueryException("composite collection element in minElement"); ! collectionElementColumns = new String[] { "min(" + cols[0] + StringHelper.CLOSE_PAREN }; collectionElementType = memberPersister.getElementType(); } else { ! throw new QueryException("expecting 'elements' or 'indices' after " + currentProperty + StringHelper.DOT); } } Index: PreprocessingParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/PreprocessingParser.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** PreprocessingParser.java 12 Jan 2003 14:22:09 -0000 1.6 --- PreprocessingParser.java 20 Jan 2003 12:48:10 -0000 1.7 *************** *** 8,11 **** --- 8,12 ---- import net.sf.hibernate.QueryException; + import net.sf.hibernate.util.StringHelper; /** *************** *** 84,96 **** //handle HQL2 collection syntax if ( currentCollectionProp!=null ) { ! if ( "(".equals(token) ) { return; } ! else if ( ")".equals(token) ) { currentCollectionProp=null; return; } else { ! token+='.'+currentCollectionProp; } } --- 85,97 ---- //handle HQL2 collection syntax if ( currentCollectionProp!=null ) { ! if ( StringHelper.OPEN_PAREN.equals(token) ) { return; } ! else if ( StringHelper.CLOSE_PAREN.equals(token) ) { currentCollectionProp=null; return; } else { ! token+=StringHelper.DOT+currentCollectionProp; } } Index: QueryTranslator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/QueryTranslator.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** QueryTranslator.java 18 Jan 2003 09:57:36 -0000 1.7 --- QueryTranslator.java 20 Jan 2003 12:48:10 -0000 1.8 *************** *** 30,36 **** import net.sf.hibernate.loader.Loader; import net.sf.hibernate.loader.OuterJoinLoader; ! import net.sf.hibernate.loader.OuterJoinLoader.OuterJoinableAssociation; import net.sf.hibernate.persister.Loadable; import net.sf.hibernate.persister.Queryable; import net.sf.hibernate.type.EntityType; import net.sf.hibernate.type.Type; --- 30,38 ---- import net.sf.hibernate.loader.Loader; import net.sf.hibernate.loader.OuterJoinLoader; ! //import net.sf.hibernate.loader.OuterJoinLoader; ! //import net.sf.hibernate.loader.OuterJoinLoader.OuterJoinableAssociation; import net.sf.hibernate.persister.Loadable; import net.sf.hibernate.persister.Queryable; + import net.sf.hibernate.sql.OuterJoinFragment; import net.sf.hibernate.type.EntityType; import net.sf.hibernate.type.Type; *************** *** 74,79 **** dontSpace.add("!<"); dontSpace.add("!>"); ! dontSpace.add("("); //for MySQL ! dontSpace.add(")"); } private final HashMap typeMap = new HashMap(); --- 76,81 ---- dontSpace.add("!<"); dontSpace.add("!>"); ! dontSpace.add(StringHelper.OPEN_PAREN); //for MySQL ! dontSpace.add(StringHelper.CLOSE_PAREN); } private final HashMap typeMap = new HashMap(); *************** *** 253,261 **** String createNameFor(Class type) { String typeName = type.getName(); ! return prefix( StringHelper.unqualify(typeName) ) + nextCount() + '_'; } String createNameForCollection(String role) { ! return prefix( StringHelper.unqualify(role, "/") ) + nextCount() + '_'; } --- 255,263 ---- String createNameFor(Class type) { String typeName = type.getName(); ! return prefix( StringHelper.unqualify(typeName) ) + nextCount() + StringHelper.UNDERSCORE; } String createNameForCollection(String role) { ! return prefix( StringHelper.unqualify(role, "/") ) + nextCount() + StringHelper.UNDERSCORE; } *************** *** 298,302 **** for ( int i=0; i<imports.length; i++ ) { try { ! return (Queryable) factory.getPersister(imports[i] + '.' + className); } catch (Exception ex) {} --- 300,304 ---- for ( int i=0; i<imports.length; i++ ) { try { ! return (Queryable) factory.getPersister(imports[i] + StringHelper.DOT + className); } catch (Exception ex) {} *************** *** 419,423 **** public static String scalarName(int x, int y) { ! return new StringBuffer().append('x').append(x).append('_').append(y).append('_').toString(); } --- 421,431 ---- public static String scalarName(int x, int y) { ! return new StringBuffer() ! .append('x') ! .append(x) ! .append(StringHelper.UNDERSCORE) ! .append(y) ! .append(StringHelper.UNDERSCORE) ! .toString(); } *************** *** 433,441 **** String outerJoinedProperties=null; ! String outerJoinsAfterFrom=null; ! String outerJoinsAfterWhere=null; String selectProperties; String selectIdentifiers; ! if ( !isShallowQuery() && returnTypes.size()==1 && typeMap.size()==1 && collections.size()==0 ) { OuterJoinLoader ojl = new OuterJoinLoader( factory.getDialect() ); String name = (String) returnTypes.get(0); --- 441,448 ---- String outerJoinedProperties=null; ! OuterJoinFragment outerjoin=null; String selectProperties; String selectIdentifiers; ! if ( !isShallowQuery() && returnTypes.size()==1 && typeMap.size()==1 ) { OuterJoinLoader ojl = new OuterJoinLoader( factory.getDialect() ); String name = (String) returnTypes.get(0); *************** *** 446,462 **** String[] ojsuffixes = new String[joins]; ojl.setSuffixed(ojsuffixes); ! for ( int i=0; i<joins; i++ ) ojsuffixes[i] = Integer.toString(i) + '_'; ! selectProperties = persister.propertySelectClauseFragment(name, ""); ! selectIdentifiers = persister.selectIdentifierString(name, ""); outerJoinedProperties = ojl.selectString(associations); ! outerJoinsAfterFrom = ojl.outerJoinsAfterFrom(associations); ! outerJoinsAfterWhere = ojl.outerJoinsAfterWhere(associations); persisters = new Queryable[joins+1]; suffixes = new String[joins+1]; persisters[joins] = persister; ! suffixes[joins] = ""; for ( int i=0; i<joins; i++ ) { ! suffixes[i] = Integer.toString(i) + '_'; ! persisters[i] = (Queryable) ( (OuterJoinableAssociation) associations.get(i) ).subpersister; //TODO: dont like the typecast to Queryable } } --- 453,468 ---- String[] ojsuffixes = new String[joins]; ojl.setSuffixed(ojsuffixes); ! for ( int i=0; i<joins; i++ ) ojsuffixes[i] = Integer.toString(i) + StringHelper.UNDERSCORE; ! selectProperties = persister.propertySelectClauseFragment(name, StringHelper.EMPTY_STRING); ! selectIdentifiers = persister.identifierSelectClauseFragment(name, StringHelper.EMPTY_STRING); outerJoinedProperties = ojl.selectString(associations); ! outerjoin = ojl.outerJoins(associations); persisters = new Queryable[joins+1]; suffixes = new String[joins+1]; persisters[joins] = persister; ! suffixes[joins] = StringHelper.EMPTY_STRING; for ( int i=0; i<joins; i++ ) { ! suffixes[i] = Integer.toString(i) + StringHelper.UNDERSCORE; ! persisters[i] = (Queryable) ( (OuterJoinLoader.OuterJoinableAssociation) associations.get(i) ).subpersister; //TODO: dont like the typecast to Queryable } } *************** *** 468,472 **** if ( !isName(name) ) throw new QueryException("unknown type: " + name); persisters[i] = getPersisterForName(name); ! suffixes[i] = (size==1) ? "" : Integer.toString(i) + '_'; } selectProperties = renderPropertiesSelect(); --- 474,478 ---- if ( !isName(name) ) throw new QueryException("unknown type: " + name); persisters[i] = getPersisterForName(name); ! suffixes[i] = (size==1) ? StringHelper.EMPTY_STRING : Integer.toString(i) + StringHelper.UNDERSCORE; } selectProperties = renderPropertiesSelect(); *************** *** 481,488 **** if ( outerJoinedProperties!=null && outerJoinedProperties.length() > 0 ) selectPropertiesString += ", " + outerJoinedProperties; //TODO: for some dialiects it would be appropriate to add the renderOrderByPropertiesSelect() to other select strings ! fromWhereString = renderFromClause(); ! if (outerJoinsAfterFrom!=null) fromWhereString += outerJoinsAfterFrom; ! if (outerJoinsAfterWhere!=null) fromWhereString += outerJoinsAfterWhere; ! fromWhereString += renderWhereClause(); if ( scalarTypes.size()!=size ) { --- 487,491 ---- if ( outerJoinedProperties!=null && outerJoinedProperties.length() > 0 ) selectPropertiesString += ", " + outerJoinedProperties; //TODO: for some dialiects it would be appropriate to add the renderOrderByPropertiesSelect() to other select strings ! fromWhereString = renderFromClause(outerjoin) + renderWhereClause(outerjoin); if ( scalarTypes.size()!=size ) { *************** *** 523,529 **** for ( int k=0; k<size; k++ ) { String name = (String) returnTypes.get(k); ! String suffix = size==1 ? "" : Integer.toString(k) + '_'; ! buf.append( persisters[k].selectIdentifierString(name, suffix) ); ! if ( k!=size-1 ) buf.append(", "); } --- 526,532 ---- for ( int k=0; k<size; k++ ) { String name = (String) returnTypes.get(k); ! String suffix = size==1 ? StringHelper.EMPTY_STRING : Integer.toString(k) + StringHelper.UNDERSCORE; ! buf.append( persisters[k].identifierSelectClauseFragment(name, suffix) ); ! if ( k!=size-1 ) buf.append(StringHelper.COMMA_SPACE); } *************** *** 540,544 **** if ( token.lastIndexOf(".") > 0 ) { //ie. it is of form "foo.bar", not of form "asc" or "desc" ! buf.append(", ").append(token); } } --- 543,547 ---- if ( token.lastIndexOf(".") > 0 ) { //ie. it is of form "foo.bar", not of form "asc" or "desc" ! buf.append(StringHelper.COMMA_SPACE).append(token); } } *************** *** 551,555 **** int size = returnTypes.size(); for ( int k=0; k<size; k++ ) { ! String suffix = (size==1) ? "" : Integer.toString(k) + '_'; String name = (String) returnTypes.get(k) ; buf.append( persisters[k].propertySelectClauseFragment(name, suffix) ); --- 554,558 ---- int size = returnTypes.size(); for ( int k=0; k<size; k++ ) { ! String suffix = (size==1) ? StringHelper.EMPTY_STRING : Integer.toString(k) + StringHelper.UNDERSCORE; String name = (String) returnTypes.get(k) ; buf.append( persisters[k].propertySelectClauseFragment(name, suffix) ); *************** *** 578,584 **** String[] names = persisters[k].getIdentifierColumnNames(); for (int i=0; i<names.length; i++) { ! buf.append( returnTypes.get(k) ).append('.').append( names[i] ); if (!isSubselect) buf.append(" as ").append( scalarName(k, i) ); ! if (i!=names.length-1 || k!=size-1 ) buf.append(", "); } --- 581,587 ---- String[] names = persisters[k].getIdentifierColumnNames(); for (int i=0; i<names.length; i++) { ! buf.append( returnTypes.get(k) ).append(StringHelper.DOT).append( names[i] ); if (!isSubselect) buf.append(" as ").append( scalarName(k, i) ); ! if (i!=names.length-1 || k!=size-1 ) buf.append(StringHelper.COMMA_SPACE); } *************** *** 596,600 **** String token = (String) next; String lc = token.toLowerCase(); ! if ( lc.equals(", ") ) { if (nolast) { nolast=false; --- 599,603 ---- String token = (String) next; String lc = token.toLowerCase(); ! if ( lc.equals(StringHelper.COMMA_SPACE) ) { if (nolast) { nolast=false; *************** *** 615,619 **** buf.append(tokens[i]); if (!isSubselect) buf.append(" as ").append( scalarName(c, i) ); ! if (i!=tokens.length-1) buf.append(", "); } c++; --- 618,622 ---- buf.append(tokens[i]); if (!isSubselect) buf.append(" as ").append( scalarName(c, i) ); ! if (i!=tokens.length-1) buf.append(StringHelper.COMMA_SPACE); } c++; *************** *** 627,631 **** } ! private String renderFromClause() throws QueryException, MappingException { //FROM StringBuffer buf = new StringBuffer(120) --- 630,634 ---- } ! private String renderFromClause(OuterJoinFragment outerjoin) throws QueryException, MappingException { //FROM StringBuffer buf = new StringBuffer(120) *************** *** 637,644 **** Queryable p = getPersisterForName(name); buf.append(' ') ! .append( p.fromClauseFragment(name, true) ); if ( iter.hasNext() || collections.size()!=0 ) buf.append(','); } iter = collections.entrySet().iterator(); while ( iter.hasNext() ) { --- 640,649 ---- Queryable p = getPersisterForName(name); buf.append(' ') ! .append( p.fromClauseFragment( name, true, returnTypes.contains(name) && !isShallowQuery() ) ); if ( iter.hasNext() || collections.size()!=0 ) buf.append(','); } + if (outerjoin!=null) buf.append( outerjoin.toFromFragmentString() ); + iter = collections.entrySet().iterator(); while ( iter.hasNext() ) { *************** *** 655,659 **** } ! private String renderWhereClause() throws QueryException, MappingException { Iterator iter = typeMap.keySet().iterator(); --- 660,664 ---- } ! private String renderWhereClause(OuterJoinFragment outerjoin) throws QueryException, MappingException { Iterator iter = typeMap.keySet().iterator(); *************** *** 667,671 **** //render the " and foo.class in ( 'Foo', 'Bar' ) " bit ! String where = p.getQueryWhereClause(name); if ( where!=null ) { if (!first) inClassWheres.append(" AND "); --- 672,676 ---- //render the " and foo.class in ( 'Foo', 'Bar' ) " bit ! String where = p.getQueryWhereClause( name, returnTypes.contains(name) && !isShallowQuery() ); if ( where!=null ) { if (!first) inClassWheres.append(" AND "); *************** *** 735,738 **** --- 740,747 ---- } + /** + * Is this query called by scroll() or iterate()? + * @return true if it is, false if it is called by find() or list() + */ public boolean isShallowQuery() { return shallowQuery; *************** *** 775,779 **** if ( persister.isOneToMany() ) { join.append(elementName) ! .append('.') .append( keyColumnNames[0] ) .append(" = ?"); --- 784,788 ---- if ( persister.isOneToMany() ) { join.append(elementName) ! .append(StringHelper.DOT) .append( keyColumnNames[0] ) .append(" = ?"); *************** *** 783,787 **** addCollection(collectionName, collectionRole); join.append(collectionName) ! .append('.') .append( keyColumnNames[0] ) .append(" = ?"); --- 792,796 ---- addCollection(collectionName, collectionRole); join.append(collectionName) ! .append(StringHelper.DOT) .append( keyColumnNames[0] ) .append(" = ?"); *************** *** 792,800 **** join.append(" and ") .append(collectionName) ! .append('.') .append( eltColumnNames[i] ) .append('=') .append(elementName) ! .append('.') .append( idColumnNames[i] ); } --- 801,809 ---- join.append(" and ") .append(collectionName) ! .append(StringHelper.DOT) .append( eltColumnNames[i] ) .append('=') .append(elementName) ! .append(StringHelper.DOT) .append( idColumnNames[i] ); } *************** *** 870,874 **** public static String[] concreteQueries(String query, SessionFactoryImplementor factory) { ! StringTokenizer tokens = new StringTokenizer(query, ", "); ArrayList placeholders = new ArrayList(); ArrayList replacements = new ArrayList(); --- 879,883 ---- public static String[] concreteQueries(String query, SessionFactoryImplementor factory) { ! StringTokenizer tokens = new StringTokenizer(query, StringHelper.COMMA_SPACE); ArrayList placeholders = new ArrayList(); ArrayList replacements = new ArrayList(); *************** *** 905,909 **** for (int i=0; i<imports.length; i++) { try { ! return ReflectHelper.classForName( imports[i] + '.' + name ); } catch (Exception ex) {} --- 914,918 ---- for (int i=0; i<imports.length; i++) { try { ! return ReflectHelper.classForName( imports[i] + StringHelper.DOT + name ); } catch (Exception ex) {} Index: SelectParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/SelectParser.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SelectParser.java 5 Jan 2003 02:11:21 -0000 1.3 --- SelectParser.java 20 Jan 2003 12:48:11 -0000 1.4 *************** *** 7,10 **** --- 7,11 ---- import net.sf.hibernate.Hibernate; import net.sf.hibernate.QueryException; + import net.sf.hibernate.util.StringHelper; /** *************** *** 52,61 **** } ! if ( token.equals(",") ) { if (ready) throw new QueryException("alias or expression expected in SELECT"); ! q.appendScalarSelectToken(", "); ready=true; } ! else if ( "(".equals(token) ) { if (aggregate) { q.appendScalarSelectToken(token); --- 53,62 ---- } ! if ( token.equals(StringHelper.COMMA) ) { if (ready) throw new QueryException("alias or expression expected in SELECT"); ! q.appendScalarSelectToken(StringHelper.COMMA_SPACE); ready=true; } ! else if ( StringHelper.OPEN_PAREN.equals(token) ) { if (aggregate) { q.appendScalarSelectToken(token); *************** *** 66,70 **** ready = true; } ! else if ( ")".equals(token) ) { if (aggregate && ready) { q.appendScalarSelectToken(token); --- 67,71 ---- ready = true; } ! else if ( StringHelper.CLOSE_PAREN.equals(token) ) { if (aggregate && ready) { q.appendScalarSelectToken(token); Index: WhereParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/WhereParser.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** WhereParser.java 5 Jan 2003 02:11:21 -0000 1.3 --- WhereParser.java 20 Jan 2003 12:48:11 -0000 1.4 *************** *** 47,56 **** expressionTerminators.add("and"); expressionTerminators.add("or"); ! expressionTerminators.add(")"); //expressionTerminators.add(","); // deliberately excluded expressionOpeners.add("and"); expressionOpeners.add("or"); ! expressionOpeners.add("("); //expressionOpeners.add(","); // deliberately excluded --- 47,56 ---- expressionTerminators.add("and"); expressionTerminators.add("or"); ! expressionTerminators.add(StringHelper.CLOSE_PAREN); //expressionTerminators.add(","); // deliberately excluded expressionOpeners.add("and"); expressionOpeners.add("or"); ! expressionOpeners.add(StringHelper.OPEN_PAREN); //expressionOpeners.add(","); // deliberately excluded *************** *** 230,234 **** subselect = new StringBuffer(20); } ! if ( inSubselect && token.equals(")") ) { bracketsSinceSelect--; --- 230,234 ---- subselect = new StringBuffer(20); } ! if ( inSubselect && token.equals(StringHelper.CLOSE_PAREN) ) { bracketsSinceSelect--; *************** *** 247,251 **** } if (inSubselect) { ! if ( token.equals("(") ) bracketsSinceSelect++; subselect.append(token).append(' '); return; --- 247,251 ---- } if (inSubselect) { ! if ( token.equals(StringHelper.OPEN_PAREN) ) bracketsSinceSelect++; subselect.append(token).append(' '); return; *************** *** 297,301 **** public void start(QueryTranslator q) throws QueryException { ! token("(", q); } --- 297,301 ---- public void start(QueryTranslator q) throws QueryException { ! token(StringHelper.OPEN_PAREN, q); } *************** *** 309,313 **** addToCurrentJoin( element.indexValue.toString() ); } ! token(")", q); } --- 309,313 ---- addToCurrentJoin( element.indexValue.toString() ); } ! token(StringHelper.CLOSE_PAREN, q); } *************** *** 327,331 **** /*int count = ( (Integer) unaryCounts.removeLast() ).intValue(); for ( int i=0; i<count; i++ ) { //to allow not not, not not not, etc... ! appendToken(q, ")"); }*/ --- 327,331 ---- /*int count = ( (Integer) unaryCounts.removeLast() ).intValue(); for ( int i=0; i<count; i++ ) { //to allow not not, not not not, etc... ! appendToken(q, StringHelper.CLOSE); }*/ *************** *** 339,343 **** if ( ( (Boolean) nots.removeLast() ).booleanValue() ) negated = !negated; ! if ( !")".equals(lcToken) ) appendToken(q, ")"); } --- 339,343 ---- if ( ( (Boolean) nots.removeLast() ).booleanValue() ) negated = !negated; ! if ( !StringHelper.CLOSE_PAREN.equals(lcToken) ) appendToken(q, StringHelper.CLOSE_PAREN); } *************** *** 347,351 **** booleanTests.addLast(Boolean.FALSE); joins.addLast( new StringBuffer() ); ! if ( !"(".equals(lcToken) ) appendToken(q, "("); } --- 347,351 ---- booleanTests.addLast(Boolean.FALSE); joins.addLast( new StringBuffer() ); ! if ( !StringHelper.OPEN_PAREN.equals(lcToken) ) appendToken(q, StringHelper.OPEN_PAREN); } *************** *** 354,358 **** Integer count = new Integer( ( (Integer) unaryCounts.removeLast() ).intValue() + 1 ); unaryCounts.addLast(count); ! appendToken(q, "("); }*/ --- 354,358 ---- Integer count = new Integer( ( (Integer) unaryCounts.removeLast() ).intValue() + 1 ); unaryCounts.addLast(count); ! appendToken(q, StringHelper.OPEN); }*/ *************** *** 365,372 **** pathExpressionParser.end(q); if ( pathExpressionParser.isCollectionValued() ) { ! openExpression(q, ""); appendToken( q, pathExpressionParser.getCollectionSubquery(collectionJoin) ); q.addIdentifierSpace( pathExpressionParser.getCollectionTable() ); ! closeExpression(q, ""); collectionJoin = null; } --- 365,372 ---- pathExpressionParser.end(q); if ( pathExpressionParser.isCollectionValued() ) { ! openExpression(q, StringHelper.EMPTY_STRING); appendToken( q, pathExpressionParser.getCollectionSubquery(collectionJoin) ); q.addIdentifierSpace( pathExpressionParser.getCollectionTable() ); ! closeExpression(q, StringHelper.EMPTY_STRING); collectionJoin = null; } *************** *** 398,402 **** Object constant; if ( ! token.indexOf('.')>-1 && ( constant=ReflectHelper.getConstantValue(token) )!=null ) { --- 398,402 ---- Object constant; if ( ! token.indexOf(StringHelper.DOT)>-1 && ( constant=ReflectHelper.getConstantValue(token) )!=null ) { |
From: <one...@us...> - 2003-01-20 12:48:43
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/dialect Modified Files: Dialect.java MySQLDialect.java OracleDialect.java SAPDBDialect.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: Dialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/Dialect.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Dialect.java 9 Jan 2003 12:24:50 -0000 1.4 --- Dialect.java 20 Jan 2003 12:48:09 -0000 1.5 *************** *** 7,10 **** --- 7,12 ---- import org.apache.commons.logging.LogFactory; + import net.sf.hibernate.sql.ANSIOuterJoinFragment; + import net.sf.hibernate.sql.OuterJoinFragment; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; *************** *** 12,17 **** import net.sf.hibernate.HibernateException; import net.sf.hibernate.MappingException; - import net.sf.hibernate.loader.OuterJoinGenerator; - import net.sf.hibernate.loader.AnsiOuterJoinGenerator; /** --- 14,17 ---- *************** *** 41,45 **** private final TypeNames typeNames = new TypeNames("$l"); private final Properties properties = new Properties(); - private final OuterJoinGenerator outerJoinGenerator = new AnsiOuterJoinGenerator(); /** --- 41,44 ---- *************** *** 164,168 **** .append(constraintName) .append(" foreign key (") ! .append( StringHelper.join(", ", foreignKey) ) .append(") references ") .append(referencedTable) --- 163,167 ---- .append(constraintName) .append(" foreign key (") ! .append( StringHelper.join(StringHelper.COMMA_SPACE, foreignKey) ) .append(") references ") .append(referencedTable) *************** *** 183,187 **** */ public String getNullColumnString() { ! return ""; } --- 182,186 ---- */ public String getNullColumnString() { ! return StringHelper.EMPTY_STRING; } *************** *** 315,319 **** */ public String getCascadeConstraintsString() { ! return ""; } --- 314,318 ---- */ public String getCascadeConstraintsString() { ! return StringHelper.EMPTY_STRING; } *************** *** 322,327 **** * @return OuterJoinGenerator */ ! public OuterJoinGenerator getOuterJoinGenerator() { ! return outerJoinGenerator; } --- 321,326 ---- * @return OuterJoinGenerator */ ! public OuterJoinFragment createOuterJoinFragment() { ! return new ANSIOuterJoinFragment(); } Index: MySQLDialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/MySQLDialect.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** MySQLDialect.java 5 Jan 2003 02:11:20 -0000 1.3 --- MySQLDialect.java 20 Jan 2003 12:48:09 -0000 1.4 *************** *** 66,70 **** public String getAddForeignKeyConstraintString(String constraintName, String[] foreignKey, String referencedTable, String[] primaryKey) { ! String cols = StringHelper.join(", ", foreignKey); return new StringBuffer(30) .append(" add index (") --- 66,70 ---- public String getAddForeignKeyConstraintString(String constraintName, String[] foreignKey, String referencedTable, String[] primaryKey) { ! String cols = StringHelper.join(StringHelper.COMMA_SPACE, foreignKey); return new StringBuffer(30) .append(" add index (") *************** *** 77,81 **** .append(referencedTable) .append(" (") ! .append( StringHelper.join(", ", primaryKey) ) .append(')') .toString(); --- 77,81 ---- .append(referencedTable) .append(" (") ! .append( StringHelper.join(StringHelper.COMMA_SPACE, primaryKey) ) .append(')') .toString(); Index: OracleDialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/OracleDialect.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** OracleDialect.java 9 Jan 2003 12:24:50 -0000 1.4 --- OracleDialect.java 20 Jan 2003 12:48:09 -0000 1.5 *************** *** 5,10 **** import net.sf.hibernate.Environment; ! import net.sf.hibernate.loader.OuterJoinGenerator; ! import net.sf.hibernate.loader.OracleOuterJoinGenerator; /** --- 5,10 ---- import net.sf.hibernate.Environment; ! import net.sf.hibernate.sql.OracleOuterJoinFragment; ! import net.sf.hibernate.sql.OuterJoinFragment; /** *************** *** 14,19 **** public class OracleDialect extends Dialect { - private final OuterJoinGenerator outerJoinGenerator; - public OracleDialect() { super(); --- 14,17 ---- *************** *** 35,40 **** register( Types.CLOB, "CLOB" ); - outerJoinGenerator = new OracleOuterJoinGenerator(); - getDefaultProperties().setProperty(Environment.USE_STREAMS_FOR_BINARY, "true"); getDefaultProperties().setProperty(Environment.STATEMENT_BATCH_SIZE, DEFAULT_BATCH_SIZE); --- 33,36 ---- *************** *** 60,65 **** } ! public OuterJoinGenerator getOuterJoinGenerator() { ! return outerJoinGenerator; } --- 56,61 ---- } ! public OuterJoinFragment createOuterJoinFragment() { ! return new OracleOuterJoinFragment(); } Index: SAPDBDialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/SAPDBDialect.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SAPDBDialect.java 9 Jan 2003 12:24:50 -0000 1.4 --- SAPDBDialect.java 20 Jan 2003 12:48:09 -0000 1.5 *************** *** 6,12 **** import net.sf.hibernate.Environment; import net.sf.hibernate.util.StringHelper; - import net.sf.hibernate.loader.OracleOuterJoinGenerator; - import net.sf.hibernate.loader.OuterJoinGenerator; /** --- 6,12 ---- import net.sf.hibernate.Environment; + import net.sf.hibernate.sql.OracleOuterJoinFragment; + import net.sf.hibernate.sql.OuterJoinFragment; import net.sf.hibernate.util.StringHelper; /** *************** *** 15,20 **** public class SAPDBDialect extends Dialect { - private final OuterJoinGenerator outerJoinGenerator; - public SAPDBDialect() { super(); --- 15,18 ---- *************** *** 36,41 **** register( Types.BLOB, "LONG BYTE" ); - outerJoinGenerator = new OracleOuterJoinGenerator(); - getDefaultProperties().setProperty(Environment.OUTER_JOIN, "true"); getDefaultProperties().setProperty(Environment.STATEMENT_BATCH_SIZE, DEFAULT_BATCH_SIZE); --- 34,37 ---- *************** *** 64,68 **** .append(constraintName) .append(" (") ! .append( StringHelper.join(", ", foreignKey) ) .append(") references ") .append(referencedTable) --- 60,64 ---- .append(constraintName) .append(" (") ! .append( StringHelper.join(StringHelper.COMMA_SPACE, foreignKey) ) .append(") references ") .append(referencedTable) *************** *** 90,101 **** } ! public String getQuerySequencesString() ! { return "select SEQUENCE_NAME from DOMAIN.SEQUENCES"; } ! public OuterJoinGenerator getOuterJoinGenerator() { ! return outerJoinGenerator; } public boolean supportsSequences() { --- 86,97 ---- } ! public String getQuerySequencesString() { return "select SEQUENCE_NAME from DOMAIN.SEQUENCES"; } ! public OuterJoinFragment createOuterJoinFragment() { ! return new OracleOuterJoinFragment(); } + public boolean supportsSequences() { |
From: <one...@us...> - 2003-01-20 12:48:42
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/collection In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate/collection Modified Files: CollectionPersister.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: CollectionPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/collection/CollectionPersister.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CollectionPersister.java 14 Jan 2003 13:42:07 -0000 1.4 --- CollectionPersister.java 20 Jan 2003 12:48:09 -0000 1.5 *************** *** 28,34 **** --- 28,40 ---- import net.sf.hibernate.mapping.Table; import net.sf.hibernate.metadata.CollectionMetadata; + import net.sf.hibernate.sql.Delete; + import net.sf.hibernate.sql.Insert; + import net.sf.hibernate.sql.SelectFragment; + import net.sf.hibernate.sql.SimpleSelect; + import net.sf.hibernate.sql.Update; import net.sf.hibernate.type.EntityType; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.Type; + import net.sf.hibernate.util.ArrayHelper; import net.sf.hibernate.util.JDBCExceptionReporter; import net.sf.hibernate.util.StringHelper; *************** *** 242,247 **** StringBuffer result = new StringBuffer(); while ( tokens.hasMoreTokens() ) { ! result.append(alias).append('.').append( tokens.nextToken().trim() ); ! if ( tokens.hasMoreTokens() ) result.append(", "); } return result.toString(); --- 248,253 ---- StringBuffer result = new StringBuffer(); while ( tokens.hasMoreTokens() ) { ! result.append(alias).append(StringHelper.DOT).append( tokens.nextToken().trim() ); ! if ( tokens.hasMoreTokens() ) result.append(StringHelper.COMMA_SPACE); } return result.toString(); *************** *** 264,271 **** } - /*public String getSQLSelectRowString() { - return sqlSelectRowString; - }*/ - private String getSQLInsertRowString() { return sqlInsertRowString; --- 270,273 ---- *************** *** 333,387 **** } private String sqlSelectString() { ! boolean appendIndex = true; ! StringBuffer buf = new StringBuffer("select "); ! for ( int i=0; i<elementColumnNames.length; i++ ) { ! buf.append( elementColumnNames[i] ); ! if ( i<elementColumnNames.length-1 ) { ! buf.append(", "); ! } ! //Jon Lipsky's patch to allow a Map from id's to objects ! if ( hasIndex && indexColumnNames.length==1 && ( elementColumnNames[i].equals( indexColumnNames[0] ) ) ) { ! appendIndex = false; ! } ! } ! if ( hasIndex && appendIndex ) { ! for (int i=0; i<indexColumnNames.length; i++) { ! buf.append(", ").append( indexColumnNames[i] ); ! } ! } ! buf.append( " from " ) ! .append(qualifiedTableName) ! .append( " where " ) ! .append( StringHelper.join( " = ? and ", keyColumnNames ) ) ! .append( " = ?"); ! if (hasOrder) buf.append(" order by ").append(sqlOrderByString); ! return buf.toString(); } private String sqlDeleteString() { if (isOneToMany) { ! StringBuffer buf = new StringBuffer("update ") ! .append(qualifiedTableName) ! .append( " set " ) ! .append( StringHelper.join( " = null, ", keyColumnNames ) ) ! .append( " = null" ); ! if ( hasIndex ) { ! buf.append(", ") ! .append( StringHelper.join( " = null, ", indexColumnNames ) ) ! .append( " = null" ); ! } ! buf.append( " where " ) ! .append( StringHelper.join( " = ? and ", keyColumnNames ) ) ! .append( " = ?" ); ! return buf.toString(); } else { ! return new StringBuffer("delete from ") ! .append(qualifiedTableName) ! .append(" where ") ! .append( StringHelper.join( " = ? and ", keyColumnNames ) ) ! .append(" = ?") ! .toString(); } } --- 335,375 ---- } + /** + * Generate a list of collection index and element columns + */ + public String selectClauseFragment(String alias) { + SelectFragment frag = new SelectFragment() + .setSuffix(StringHelper.EMPTY_STRING) + .addColumns(alias, elementColumnNames); + if (hasIndex) frag.addColumns(alias, indexColumnNames); + return frag.toFragmentString() + .substring(2); //strip leading ',' + } + private String sqlSelectString() { ! //TODO: Jon Lipsky's patch to allow a Map from id's to objects ! SimpleSelect select = new SimpleSelect() ! .setTableName(qualifiedTableName) ! .addColumns(elementColumnNames); ! if (hasIndex) select.addColumns(indexColumnNames); ! select.addCondition( keyColumnNames, "=?" ); ! if (hasOrder) select.setOrderBy(sqlOrderByString); ! return select.toStatementString(); } private String sqlDeleteString() { if (isOneToMany) { ! Update update = new Update() ! .setTableName(qualifiedTableName) ! .addColumns(keyColumnNames, "null"); ! if (hasIndex) update.addColumns(indexColumnNames, "null"); ! return update.setPrimaryKeyColumnNames(keyColumnNames) ! .toStatementString(); } else { ! return new Delete() ! .setTableName(qualifiedTableName) ! .setPrimaryKeyColumnNames(keyColumnNames) ! .toStatementString(); } } *************** *** 389,431 **** private String sqlInsertRowString() { if (isOneToMany) { ! StringBuffer buf = new StringBuffer("update ") ! .append(qualifiedTableName) ! .append( " set " ) ! .append( StringHelper.join( " = ?, ", keyColumnNames ) ) ! .append( " = ?"); ! if (hasIndex) { ! buf.append( ", " ) ! .append( StringHelper.join( " = ?, ", indexColumnNames ) ) ! .append( " = ?"); ! } ! buf.append( " where " ) ! .append( StringHelper.join( " = ? and ", elementColumnNames ) ) ! .append( " = ?" ); ! return buf.toString(); } else { ! StringBuffer buf = new StringBuffer("insert into ") ! .append(qualifiedTableName) ! .append(" ( ") ! .append( StringHelper.join( ", ", keyColumnNames ) ); ! if (hasIndex) { ! buf.append(", ").append( StringHelper.join(", ", indexColumnNames) ); ! } ! for ( int i=0; i<elementColumnNames.length; i++) { ! buf.append( ", " ).append( elementColumnNames[i] ); ! } ! buf.append(" ) values ( ?"); ! buf.append( StringHelper.repeat( ! ", ?", ! elementColumnNames.length + keyColumnNames.length - 1 + ( hasIndex ? indexColumnNames.length:0 ) ) ! ); ! return buf.append(" )").toString(); } } ! ! /*private String sqlSelectRowString() { ! return ""; //TODO ! }*/ ! private String sqlUpdateRowString() { if (isOneToMany) { --- 377,397 ---- private String sqlInsertRowString() { if (isOneToMany) { ! Update update = new Update() ! .setTableName(qualifiedTableName) ! .addColumns(keyColumnNames); ! if (hasIndex) update.addColumns(indexColumnNames); ! return update.setPrimaryKeyColumnNames(elementColumnNames) ! .toStatementString(); } else { ! Insert insert = new Insert(null) ! .setTableName(qualifiedTableName) ! .addColumns(keyColumnNames); ! if (hasIndex) insert.addColumns(indexColumnNames); ! return insert.addColumns(elementColumnNames) ! .toStatementString(); } } ! private String sqlUpdateRowString() { if (isOneToMany) { *************** *** 433,455 **** } else { ! return new StringBuffer("update ") ! .append(qualifiedTableName) ! .append(" set ") ! .append( StringHelper.join( " = ?, ", elementColumnNames ) ) ! .append(" = ? where ") ! .append( StringHelper.join( " = ? and ", keyColumnNames ) ) ! .append( " = ? and " ) ! .append( StringHelper.join( " = ? and ", rowSelectColumnNames ) ) ! .append(" = ?") ! .toString(); } } private String sqlDeleteRowString() { ! return new StringBuffer( sqlDeleteString() ) ! .append(" and ") ! .append( StringHelper.join( " = ? and ", rowSelectColumnNames ) ) ! .append(" = ?") ! .toString(); } --- 399,426 ---- } else { ! return new Update() ! .setTableName(qualifiedTableName) ! .addColumns(elementColumnNames) ! .setPrimaryKeyColumnNames( ArrayHelper.join(keyColumnNames, rowSelectColumnNames) ) ! .toStatementString(); } } private String sqlDeleteRowString() { ! String[] pkColumns = ArrayHelper.join(keyColumnNames, rowSelectColumnNames); ! if (isOneToMany) { ! Update update = new Update() ! .setTableName(qualifiedTableName) ! .addColumns(keyColumnNames, "null"); ! if (hasIndex) update.addColumns(indexColumnNames, "null"); ! return update.setPrimaryKeyColumnNames(pkColumns) ! .toStatementString(); ! } ! else { ! return new Delete() ! .setTableName(qualifiedTableName) ! .setPrimaryKeyColumnNames(pkColumns) ! .toStatementString(); ! } } |
From: <one...@us...> - 2003-01-20 12:48:42
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate In directory sc8-pr-cvs1:/tmp/cvs-serv2323/sf/hibernate Modified Files: PropertyAccessException.java Log Message: major refactoring to create SQL Generation layer more efficient queries against normalized mappings Index: PropertyAccessException.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/PropertyAccessException.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PropertyAccessException.java 5 Jan 2003 02:11:19 -0000 1.3 --- PropertyAccessException.java 20 Jan 2003 12:48:08 -0000 1.4 *************** *** 2,5 **** --- 2,7 ---- package net.sf.hibernate; + import net.sf.hibernate.util.StringHelper; + /** * A problem occurred accessing a property of an instance of a *************** *** 32,36 **** ( wasSetter ? " setter of " : " getter of ") + persistentClass.getName() + ! '.' + propertyName; } --- 34,38 ---- ( wasSetter ? " setter of " : " getter of ") + persistentClass.getName() + ! StringHelper.DOT + propertyName; } |
From: <one...@us...> - 2003-01-19 13:09:40
|
Update of /cvsroot/hibernate/Hibernate2/lib In directory sc8-pr-cvs1:/tmp/cvs-serv1469 Added Files: commons-beanutils.jar Log Message: added beanutils --- NEW FILE: commons-beanutils.jar --- (This appears to be a binary file; contents omitted.) |
From: <one...@us...> - 2003-01-19 11:48:43
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type In directory sc8-pr-cvs1:/tmp/cvs-serv29573/sf/hibernate/type Added Files: DynaBeanType.java Log Message: added DynaBean support --- NEW FILE: DynaBeanType.java --- //$Id: DynaBeanType.java,v 1.1 2003/01/19 11:48:39 oneovthafew Exp $ package net.sf.hibernate.type; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.commons.beanutils.DynaClass; import org.apache.commons.beanutils.DynaBean; import net.sf.hibernate.HibernateException; import net.sf.hibernate.MappingException; import net.sf.hibernate.engine.Mapping; import net.sf.hibernate.engine.SessionFactoryImplementor; import net.sf.hibernate.engine.SessionImplementor; import net.sf.hibernate.engine.Cascades; import net.sf.hibernate.util.ArrayHelper; public class DynaBeanType extends AbstractType implements AbstractComponentType { private DynaClass clazz; private String[] propertyNames; private Type[] propertyTypes; private int propertySpan; private final Cascades.CascadeStyle[] cascade; private final int[] joinedFetch; public DynaBeanType( DynaClass clazz, String[] propertyNames, Type[] propertyTypes, int[] joinedFetch, Cascades.CascadeStyle[] cascade ) { this.clazz = clazz; this.propertyNames = propertyNames; this.propertyTypes = propertyTypes; this.joinedFetch = joinedFetch; this.cascade = cascade; propertySpan = propertyTypes.length; } /** * @see net.sf.hibernate.type.AbstractComponentType#cascade(int) */ public Cascades.CascadeStyle cascade(int i) { return cascade[i]; } /** * @see net.sf.hibernate.type.AbstractComponentType#enableJoinedFetch(int) */ public int enableJoinedFetch(int i) { return joinedFetch[i]; } /** * @see net.sf.hibernate.type.AbstractComponentType#getPropertyNames() */ public String[] getPropertyNames() { return propertyNames; } /** * @see net.sf.hibernate.type.AbstractComponentType#getPropertyValue(java.lang.Object, int) */ public Object getPropertyValue(Object component, int i) throws HibernateException { return ( (DynaBean) component).get( propertyNames[i] ); } /** * @see net.sf.hibernate.type.AbstractComponentType#getPropertyValues(java.lang.Object) */ public Object[] getPropertyValues(Object component) throws HibernateException { DynaBean bean = (DynaBean) component; Object[] result = new Object[propertySpan]; for (int i=0; i<propertySpan; i++) { result[i] = bean.get( propertyNames[i] ); } return result; } /** * @see net.sf.hibernate.type.AbstractComponentType#getSubtypes() */ public Type[] getSubtypes() { return propertyTypes; } /** * @see net.sf.hibernate.type.AbstractComponentType#instantiate(java.lang.Object) */ public Object instantiate(Object parent) throws HibernateException { try { return clazz.newInstance(); } catch (Exception e) { throw new net.sf.hibernate.InstantiationException("Could no instantiate DynaBean: " + clazz.getName(), DynaBean.class, e); } } /** * @see net.sf.hibernate.type.AbstractComponentType#setPropertyValues(java.lang.Object, java.lang.Object) */ public void setPropertyValues(Object component, Object[] values) throws HibernateException { DynaBean bean = (DynaBean) component; for (int i=0; i<propertySpan; i++) { bean.set( propertyNames[i], values[i] ); } } /** * @see net.sf.hibernate.type.Type#deepCopy(java.lang.Object) */ public Object deepCopy(Object component) throws HibernateException { if (component==null) return null; Object[] values = getPropertyValues(component); for ( int i=0; i<propertySpan; i++ ) { values[i] = propertyTypes[i].deepCopy( values[i] ); } Object result = instantiate(null); //TODO: note that this doesn't copy reference to parent. Is that okay?? setPropertyValues(result, values); return result; } /** * @see net.sf.hibernate.type.Type#equals(java.lang.Object, java.lang.Object) */ public boolean equals(Object x, Object y) throws HibernateException { if (x==y) return true; if (x==null || y==null) return false; DynaBean xbean = (DynaBean) x; DynaBean ybean = (DynaBean) y; for ( int i=0; i<propertySpan; i++ ) { if ( !propertyTypes[i].equals( xbean.get( propertyNames[i] ), ybean.get( propertyNames[i] ) ) ) return false; } return true; } /** * @see net.sf.hibernate.type.Type#getColumnSpan(net.sf.hibernate.engine.Mapping) */ public int getColumnSpan(Mapping mapping) throws MappingException { int span = 0; for ( int i=0; i<propertySpan; i++ ) { span += propertyTypes[i].getColumnSpan(mapping); } return span; } /** * @see net.sf.hibernate.type.Type#getName() */ public String getName() { return clazz.getName(); } /** * @see net.sf.hibernate.type.Type#hasNiceEquals() */ public boolean hasNiceEquals() { return false; } /** * @see net.sf.hibernate.type.Type#isMutable() */ public boolean isMutable() { return true; } private Object[] nullSafeGetValues(Object value) throws HibernateException { if ( value==null ) { return new Object[propertySpan]; } else { return getPropertyValues(value); } } /** * @see net.sf.hibernate.type.Type#nullSafeGet(java.sql.ResultSet, java.lang.String, net.sf.hibernate.engine.SessionImplementor, java.lang.Object) */ public Object nullSafeGet( ResultSet rs, String name, SessionImplementor session, Object owner) throws HibernateException, SQLException { return nullSafeGet(rs, new String[] {name}, session, owner); } /** * @see net.sf.hibernate.type.Type#nullSafeGet(java.sql.ResultSet, java.lang.String, net.sf.hibernate.engine.SessionImplementor, java.lang.Object) */ public Object nullSafeGet( ResultSet rs, String[] names, SessionImplementor session, Object owner) throws HibernateException, SQLException { int begin=0; boolean notNull=false; Object[] values = new Object[propertySpan]; for ( int i=0; i<propertySpan; i++ ) { int length = propertyTypes[i].getColumnSpan( session.getFactory() ); String[] range = ArrayHelper.slice(names, begin, length); //cache this Object val = propertyTypes[i].nullSafeGet(rs, range, session, owner); if (val!=null) notNull=true; values[i] = val; begin+=length; } if (notNull) { DynaBean result = (DynaBean) instantiate(owner); for ( int i=0; i<propertySpan; i++ ) { result.set( propertyNames[i], values[i] ); } return result; } else { return null; } } /** * @see net.sf.hibernate.type.Type#nullSafeSet(java.sql.PreparedStatement, java.lang.Object, int, net.sf.hibernate.engine.SessionImplementor) */ public void nullSafeSet( PreparedStatement st, Object value, int begin, SessionImplementor session) throws HibernateException, SQLException { Object[] subvalues = nullSafeGetValues(value); for ( int i=0; i<propertySpan; i++ ) { propertyTypes[i].nullSafeSet(st, subvalues[i], begin, session); begin += propertyTypes[i].getColumnSpan( session.getFactory() ); } } /** * @see net.sf.hibernate.type.Type#returnedClass() */ public Class getReturnedClass() { return DynaBean.class; } /** * @see net.sf.hibernate.type.Type#sqlTypes(net.sf.hibernate.engine.Mapping) */ public int[] sqlTypes(Mapping mapping) throws MappingException { //Not called at runtime so doesn't matter if its slow :) int[] sqlTypes = new int[ getColumnSpan(mapping) ]; int n=0; for ( int i=0; i<propertySpan; i++ ) { int[] subtypes = propertyTypes[i].sqlTypes(mapping); for ( int j=0; j<subtypes.length; j++ ) { sqlTypes[n++] = subtypes[j]; } } return sqlTypes; } /** * @see net.sf.hibernate.type.Type#toXML(java.lang.Object, net.sf.hibernate.engine.SessionFactoryImplementor) */ public String toXML(Object value, SessionFactoryImplementor factory) throws HibernateException { return (value==null) ? null : value.toString(); } } |
From: <one...@us...> - 2003-01-19 11:47:13
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2java In directory sc8-pr-cvs1:/tmp/cvs-serv29025/sf/hibernate/tool/hbm2java Modified Files: ClassMapping.java Log Message: added DynaBean support Index: ClassMapping.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2java/ClassMapping.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ClassMapping.java 16 Jan 2003 20:52:38 -0000 1.5 --- ClassMapping.java 19 Jan 2003 11:47:08 -0000 1.6 *************** *** 575,579 **** if ( (basicType instanceof PrimitiveType) && ! !hibernateType.trim().equals( basicType.returnedClass().getName() ) && !needObject ) { --- 575,579 ---- if ( (basicType instanceof PrimitiveType) && ! !hibernateType.trim().equals( basicType.getReturnedClass().getName() ) && !needObject ) { *************** *** 582,586 **** } else { ! cn.setFullyQualifiedName(basicType.returnedClass().getName()); return cn; } --- 582,586 ---- } else { ! cn.setFullyQualifiedName(basicType.getReturnedClass().getName()); return cn; } |
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type In directory sc8-pr-cvs1:/tmp/cvs-serv29025/sf/hibernate/type Modified Files: AbstractComponentType.java ArrayType.java BagType.java BigDecimalType.java BinaryType.java BlobType.java BooleanType.java ByteType.java CalendarDateType.java CalendarType.java CharacterType.java ClassType.java ClobType.java ComponentType.java CurrencyType.java CustomType.java DateType.java DoubleType.java EntityType.java FloatType.java IntegerType.java ListType.java LocaleType.java LongType.java MapType.java ObjectType.java PersistentCollectionType.java PersistentEnumType.java SerializableType.java SetType.java ShortType.java SortedMapType.java SortedSetType.java StringType.java TimeType.java TimeZoneType.java TimestampType.java Type.java Log Message: added DynaBean support Index: AbstractComponentType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/AbstractComponentType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AbstractComponentType.java 5 Jan 2003 02:11:24 -0000 1.3 --- AbstractComponentType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 5,9 **** import net.sf.hibernate.engine.Cascades; ! /** Enables other Component-like types to hold collections */ --- 5,10 ---- import net.sf.hibernate.engine.Cascades; ! /** ! * Enables other Component-like types to hold collections */ Index: ArrayType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ArrayType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ArrayType.java 5 Jan 2003 02:11:24 -0000 1.4 --- ArrayType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 26,30 **** } ! public Class returnedClass() { return arrayClass; } --- 26,30 ---- } ! public Class getReturnedClass() { return arrayClass; } Index: BagType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/BagType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** BagType.java 5 Jan 2003 02:11:24 -0000 1.4 --- BagType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 21,25 **** } ! public Class returnedClass() { return java.util.Collection.class; } --- 21,25 ---- } ! public Class getReturnedClass() { return java.util.Collection.class; } Index: BigDecimalType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/BigDecimalType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** BigDecimalType.java 5 Jan 2003 02:11:24 -0000 1.3 --- BigDecimalType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 50,54 **** * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class returnedClass() { return BigDecimal.class; } --- 50,54 ---- * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class getReturnedClass() { return BigDecimal.class; } Index: BinaryType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/BinaryType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** BinaryType.java 5 Jan 2003 02:11:24 -0000 1.3 --- BinaryType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 62,66 **** } ! public Class returnedClass() { return byte[].class; } --- 62,66 ---- } ! public Class getReturnedClass() { return byte[].class; } Index: BlobType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/BlobType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** BlobType.java 5 Jan 2003 02:11:24 -0000 1.4 --- BlobType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 31,35 **** } ! public Class returnedClass() { return Blob.class; } --- 31,35 ---- } ! public Class getReturnedClass() { return Blob.class; } Index: BooleanType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/BooleanType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** BooleanType.java 5 Jan 2003 02:11:24 -0000 1.3 --- BooleanType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 23,27 **** } ! public Class returnedClass() { return Boolean.class; } --- 23,27 ---- } ! public Class getReturnedClass() { return Boolean.class; } Index: ByteType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ByteType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ByteType.java 5 Jan 2003 02:11:24 -0000 1.3 --- ByteType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 17,21 **** } ! public Class returnedClass() { return Byte.class; } --- 17,21 ---- } ! public Class getReturnedClass() { return Byte.class; } Index: CalendarDateType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/CalendarDateType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CalendarDateType.java 5 Jan 2003 02:11:24 -0000 1.3 --- CalendarDateType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 69,73 **** * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class returnedClass() { return Calendar.class; } --- 69,73 ---- * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class getReturnedClass() { return Calendar.class; } Index: CalendarType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/CalendarType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CalendarType.java 5 Jan 2003 02:11:24 -0000 1.3 --- CalendarType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 69,73 **** * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class returnedClass() { return Calendar.class; } --- 69,73 ---- * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class getReturnedClass() { return Calendar.class; } Index: CharacterType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/CharacterType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CharacterType.java 5 Jan 2003 02:11:24 -0000 1.3 --- CharacterType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 25,29 **** } ! public Class returnedClass() { return Character.class; } --- 25,29 ---- } ! public Class getReturnedClass() { return Character.class; } Index: ClassType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ClassType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ClassType.java 5 Jan 2003 02:11:24 -0000 1.3 --- ClassType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 41,45 **** } ! public Class returnedClass() { return Class.class; } --- 41,45 ---- } ! public Class getReturnedClass() { return Class.class; } Index: ClobType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ClobType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ClobType.java 5 Jan 2003 02:11:24 -0000 1.4 --- ClobType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 31,35 **** } ! public Class returnedClass() { return Clob.class; } --- 31,35 ---- } ! public Class getReturnedClass() { return Clob.class; } Index: ComponentType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ComponentType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ComponentType.java 5 Jan 2003 02:11:24 -0000 1.3 --- ComponentType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 26,41 **** private final ReflectHelper.Setter[] setters; private final String[] propertyNames; - private final Cascades.CascadeStyle[] cascade; private final int propertySpan; private final int[] joinedFetch; private final String parentProperty; private final ReflectHelper.Setter parentSetter; ! public int[] sqlTypes(Mapping pi) throws MappingException { //Not called at runtime so doesn't matter if its slow :) ! int[] sqlTypes = new int[ getColumnSpan(pi) ]; int n=0; for ( int i=0; i<propertySpan; i++ ) { ! int[] subtypes = types[i].sqlTypes(pi); for ( int j=0; j<subtypes.length; j++ ) { sqlTypes[n++] = subtypes[j]; --- 26,41 ---- private final ReflectHelper.Setter[] setters; private final String[] propertyNames; private final int propertySpan; + private final Cascades.CascadeStyle[] cascade; private final int[] joinedFetch; private final String parentProperty; private final ReflectHelper.Setter parentSetter; ! public int[] sqlTypes(Mapping mapping) throws MappingException { //Not called at runtime so doesn't matter if its slow :) ! int[] sqlTypes = new int[ getColumnSpan(mapping) ]; int n=0; for ( int i=0; i<propertySpan; i++ ) { ! int[] subtypes = types[i].sqlTypes(mapping); for ( int j=0; j<subtypes.length; j++ ) { sqlTypes[n++] = subtypes[j]; *************** *** 45,52 **** } ! public int getColumnSpan(Mapping pi) throws MappingException { int span = 0; ! for ( int i=0; i<types.length; i++ ) { ! span += types[i].getColumnSpan(pi); } return span; --- 45,52 ---- } ! public int getColumnSpan(Mapping mapping) throws MappingException { int span = 0; ! for ( int i=0; i<propertySpan; i++ ) { ! span += types[i].getColumnSpan(mapping); } return span; *************** *** 55,63 **** public ComponentType( Class componentClass, - Type[] types, String[] properties, int[] joinedFetch, ! Cascades.CascadeStyle[] ! cascade, String parentProperty, boolean embedded --- 55,62 ---- public ComponentType( Class componentClass, String[] properties, + Type[] types, int[] joinedFetch, ! Cascades.CascadeStyle[] cascade, String parentProperty, boolean embedded *************** *** 69,73 **** getters = new ReflectHelper.Getter[propertySpan]; setters = new ReflectHelper.Setter[propertySpan]; ! for ( int i=0; i<properties.length; i++ ) { getters[i] = ReflectHelper.getGetter( componentClass, properties[i] ); setters[i] = ReflectHelper.getSetter( componentClass, properties[i] ); --- 68,72 ---- getters = new ReflectHelper.Getter[propertySpan]; setters = new ReflectHelper.Setter[propertySpan]; ! for ( int i=0; i<propertySpan; i++ ) { getters[i] = ReflectHelper.getGetter( componentClass, properties[i] ); setters[i] = ReflectHelper.getSetter( componentClass, properties[i] ); *************** *** 91,95 **** } ! public Class returnedClass() { return componentClass; } --- 90,94 ---- } ! public Class getReturnedClass() { return componentClass; } *************** *** 98,102 **** if (x==y) return true; if (x==null || y==null) return false; ! for ( int i=0; i<getters.length; i++ ) { if ( !types[i].equals( getters[i].get(x), getters[i].get(y) ) ) return false; } --- 97,101 ---- if (x==y) return true; if (x==null || y==null) return false; ! for ( int i=0; i<propertySpan; i++ ) { if ( !types[i].equals( getters[i].get(x), getters[i].get(y) ) ) return false; } Index: CurrencyType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/CurrencyType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CurrencyType.java 5 Jan 2003 02:11:24 -0000 1.3 --- CurrencyType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 99,103 **** * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class returnedClass() { return CURRENCY_CLASS; } --- 99,103 ---- * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class getReturnedClass() { return CURRENCY_CLASS; } Index: CustomType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/CustomType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CustomType.java 5 Jan 2003 02:11:24 -0000 1.3 --- CustomType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 59,63 **** * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class returnedClass() { return userType.returnedClass(); } --- 59,63 ---- * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class getReturnedClass() { return userType.returnedClass(); } Index: DateType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/DateType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** DateType.java 5 Jan 2003 02:11:24 -0000 1.3 --- DateType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 17,21 **** } ! public Class returnedClass() { return java.util.Date.class; } --- 17,21 ---- } ! public Class getReturnedClass() { return java.util.Date.class; } Index: DoubleType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/DoubleType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** DoubleType.java 5 Jan 2003 02:11:24 -0000 1.3 --- DoubleType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 1,3 **** ! //$Id$ package net.sf.hibernate.type; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; public class DoubleType extends PrimitiveType { public Object get(ResultSet rs, String name) throws SQLException { return new Double(rs.getDouble(name)); } public Class primitiveClass() { return double.class; } public Class returnedClass() { return Double.class; } public void set(PreparedStatement st, Object value, int index) throws SQLException { st.setDouble(index, ((Double) value).doubleValue()); } public int sqlType() { return Types.DOUBLE; } public String getName() { return "double"; } public String objectToSQLString(Object value) throws Exception { return value.toString(); } } --- 1,3 ---- ! //$Id$ package net.sf.hibernate.type; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; public class DoubleType extends PrimitiveType { public Object get(ResultSet rs, String name) throws SQLException { return new Double(rs.getDouble(name)); } public Class primitiveClass() { return double.class; } public Class getReturnedClass() { return Double.class; } public void set(PreparedStatement st, Object value, int index) throws SQLException { st.setDouble(index, ((Double) value).doubleValue()); } public int sqlType() { return Types.DOUBLE; } public String getName() { return "double"; } public String objectToSQLString(Object value) throws Exception { return value.toString(); } } Index: EntityType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/EntityType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** EntityType.java 5 Jan 2003 02:11:24 -0000 1.3 --- EntityType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 47,51 **** * it should return the proxy class, but it doesn't. */ ! public final Class returnedClass() { return persistentClass; } --- 47,51 ---- * it should return the proxy class, but it doesn't. */ ! public final Class getReturnedClass() { return persistentClass; } Index: FloatType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/FloatType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FloatType.java 5 Jan 2003 02:11:24 -0000 1.3 --- FloatType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 17,21 **** } ! public Class returnedClass() { return Float.class; } --- 17,21 ---- } ! public Class getReturnedClass() { return Float.class; } Index: IntegerType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/IntegerType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** IntegerType.java 5 Jan 2003 02:11:24 -0000 1.3 --- IntegerType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 19,23 **** } ! public Class returnedClass() { return Integer.class; } --- 19,23 ---- } ! public Class getReturnedClass() { return Integer.class; } Index: ListType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ListType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ListType.java 5 Jan 2003 02:11:24 -0000 1.4 --- ListType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 17,21 **** } ! public Class returnedClass() { return java.util.List.class; } --- 17,21 ---- } ! public Class getReturnedClass() { return java.util.List.class; } Index: LocaleType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/LocaleType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** LocaleType.java 5 Jan 2003 02:11:24 -0000 1.3 --- LocaleType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 41,45 **** } ! public Class returnedClass() { return Locale.class; } --- 41,45 ---- } ! public Class getReturnedClass() { return Locale.class; } Index: LongType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/LongType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** LongType.java 5 Jan 2003 02:11:24 -0000 1.3 --- LongType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 19,23 **** } ! public Class returnedClass() { return Long.class; } --- 19,23 ---- } ! public Class getReturnedClass() { return Long.class; } Index: MapType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/MapType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MapType.java 5 Jan 2003 02:11:24 -0000 1.4 --- MapType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 20,24 **** } ! public Class returnedClass() { return java.util.Map.class; } --- 20,24 ---- } ! public Class getReturnedClass() { return java.util.Map.class; } Index: ObjectType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ObjectType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ObjectType.java 5 Jan 2003 02:11:24 -0000 1.3 --- ObjectType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 113,117 **** * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class returnedClass() { return Object.class; } --- 113,117 ---- * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class getReturnedClass() { return Object.class; } Index: PersistentCollectionType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/PersistentCollectionType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** PersistentCollectionType.java 5 Jan 2003 02:11:24 -0000 1.4 --- PersistentCollectionType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 86,90 **** public String getName() { ! return returnedClass().getName(); } --- 86,90 ---- public String getName() { ! return getReturnedClass().getName(); } Index: PersistentEnumType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/PersistentEnumType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** PersistentEnumType.java 5 Jan 2003 02:11:24 -0000 1.4 --- PersistentEnumType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 64,68 **** } ! public Class returnedClass() { return enumClass; } --- 64,68 ---- } ! public Class getReturnedClass() { return enumClass; } Index: SerializableType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/SerializableType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SerializableType.java 5 Jan 2003 02:11:24 -0000 1.3 --- SerializableType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 37,41 **** } ! public Class returnedClass() { return serializableClass; } --- 37,41 ---- } ! public Class getReturnedClass() { return serializableClass; } Index: SetType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/SetType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SetType.java 5 Jan 2003 02:11:24 -0000 1.4 --- SetType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 17,21 **** } ! public Class returnedClass() { return java.util.Set.class; } --- 17,21 ---- } ! public Class getReturnedClass() { return java.util.Set.class; } Index: ShortType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ShortType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ShortType.java 5 Jan 2003 02:11:24 -0000 1.3 --- ShortType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 19,23 **** } ! public Class returnedClass() { return Integer.class; } --- 19,23 ---- } ! public Class getReturnedClass() { return Integer.class; } Index: SortedMapType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/SortedMapType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SortedMapType.java 5 Jan 2003 02:11:24 -0000 1.4 --- SortedMapType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 25,29 **** } ! public Class returnedClass() { return java.util.SortedMap.class; } --- 25,29 ---- } ! public Class getReturnedClass() { return java.util.SortedMap.class; } Index: SortedSetType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/SortedSetType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SortedSetType.java 5 Jan 2003 02:11:24 -0000 1.4 --- SortedSetType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 25,29 **** } ! public Class returnedClass() { return java.util.SortedSet.class; } --- 25,29 ---- } ! public Class getReturnedClass() { return java.util.SortedSet.class; } Index: StringType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/StringType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** StringType.java 5 Jan 2003 02:11:24 -0000 1.3 --- StringType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 15,19 **** } ! public Class returnedClass() { return String.class; } --- 15,19 ---- } ! public Class getReturnedClass() { return String.class; } Index: TimeType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/TimeType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TimeType.java 5 Jan 2003 02:11:24 -0000 1.4 --- TimeType.java 19 Jan 2003 11:47:08 -0000 1.5 *************** *** 15,19 **** return rs.getTime(name); } ! public Class returnedClass() { return java.util.Date.class; } --- 15,19 ---- return rs.getTime(name); } ! public Class getReturnedClass() { return java.util.Date.class; } Index: TimeZoneType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/TimeZoneType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TimeZoneType.java 5 Jan 2003 02:11:24 -0000 1.3 --- TimeZoneType.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 52,56 **** * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class returnedClass() { return TimeZone.class; } --- 52,56 ---- * @see net.sf.hibernate.type.Type#returnedClass() */ ! public Class getReturnedClass() { return TimeZone.class; } Index: TimestampType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/TimestampType.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TimestampType.java 15 Jan 2003 10:33:17 -0000 1.5 --- TimestampType.java 19 Jan 2003 11:47:08 -0000 1.6 *************** *** 14,18 **** return rs.getTimestamp(name); } ! public Class returnedClass() { return java.util.Date.class; } --- 14,18 ---- return rs.getTimestamp(name); } ! public Class getReturnedClass() { return java.util.Date.class; } Index: Type.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/Type.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Type.java 5 Jan 2003 02:11:24 -0000 1.3 --- Type.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 69,78 **** /** ! * The class returned by nullSafeGet methods. This is used to establish the ! * class of an array of this type. * * @return Class */ ! public Class returnedClass(); /** --- 69,78 ---- /** ! * The class returned by <tt>nullSafeGet()<tt> methods. This is used to establish ! * the class of an array of this type. * * @return Class */ ! public Class getReturnedClass(); /** |
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping In directory sc8-pr-cvs1:/tmp/cvs-serv29025/sf/hibernate/mapping Modified Files: Array.java Association.java Collection.java Column.java Component.java IndexedCollection.java IntegerValue.java List.java Map.java OneToMany.java PersistentClass.java PrimitiveArray.java Property.java RootClass.java Subclass.java Log Message: added DynaBean support Index: Array.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Array.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Array.java 5 Jan 2003 02:11:22 -0000 1.4 --- Array.java 19 Jan 2003 11:47:07 -0000 1.5 *************** *** 2,11 **** package net.sf.hibernate.mapping; ! import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.PrimitiveType; import net.sf.hibernate.type.Type; import net.sf.hibernate.type.TypeFactory; ! import net.sf.hibernate.*; import org.w3c.dom.Node; import org.w3c.dom.NodeList; --- 2,12 ---- package net.sf.hibernate.mapping; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.PrimitiveType; import net.sf.hibernate.type.Type; import net.sf.hibernate.type.TypeFactory; ! import net.sf.hibernate.util.ReflectHelper; ! import org.w3c.dom.Node; import org.w3c.dom.NodeList; *************** *** 34,38 **** if ( "element".equals(name) ) { Type type = Value.getTypeFromXML(subnode); ! elementClass = isPrimitiveArray() ? ( (PrimitiveType) type ).primitiveClass() : type.returnedClass(); } else if ( "one-to-many".equals(name) || "many-to-many".equals(name) || "composite-element".equals(name) ) { --- 35,39 ---- if ( "element".equals(name) ) { Type type = Value.getTypeFromXML(subnode); ! elementClass = isPrimitiveArray() ? ( (PrimitiveType) type ).primitiveClass() : type.getReturnedClass(); } else if ( "one-to-many".equals(name) || "many-to-many".equals(name) || "composite-element".equals(name) ) { Index: Association.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Association.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Association.java 9 Jan 2003 12:24:51 -0000 1.5 --- Association.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 2,10 **** package net.sf.hibernate.mapping; ! import org.w3c.dom.Node; ! ! import net.sf.hibernate.*; import net.sf.hibernate.loader.OuterJoinLoader; import net.sf.hibernate.type.Type; public abstract class Association extends Value { --- 2,10 ---- package net.sf.hibernate.mapping; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.loader.OuterJoinLoader; import net.sf.hibernate.type.Type; + + import org.w3c.dom.Node; public abstract class Association extends Value { Index: Collection.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Collection.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Collection.java 9 Jan 2003 12:24:51 -0000 1.7 --- Collection.java 19 Jan 2003 11:47:07 -0000 1.8 *************** *** 140,144 **** key = new Value(subnode, isOneToMany, table, root, DEFAULT_KEY_COLUMN_NAME); key.setType( owner.getIdentifier().getType() ); ! if ( key.getType().returnedClass().isArray() ) throw new MappingException( "illegal use of an array as an identifier (arrays don't reimplement equals)" ); --- 140,144 ---- key = new Value(subnode, isOneToMany, table, root, DEFAULT_KEY_COLUMN_NAME); key.setType( owner.getIdentifier().getType() ); ! if ( key.getType().getReturnedClass().isArray() ) throw new MappingException( "illegal use of an array as an identifier (arrays don't reimplement equals)" ); Index: Column.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Column.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Column.java 5 Jan 2003 02:11:22 -0000 1.3 --- Column.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,12 **** package net.sf.hibernate.mapping; - import org.w3c.dom.*; - import net.sf.hibernate.dialect.Dialect; - import net.sf.hibernate.type.Type; import net.sf.hibernate.HibernateException; import net.sf.hibernate.MappingException; import net.sf.hibernate.engine.Mapping; import net.sf.hibernate.util.StringHelper; public class Column { --- 2,13 ---- package net.sf.hibernate.mapping; import net.sf.hibernate.HibernateException; import net.sf.hibernate.MappingException; + import net.sf.hibernate.dialect.Dialect; import net.sf.hibernate.engine.Mapping; + import net.sf.hibernate.type.Type; import net.sf.hibernate.util.StringHelper; + + import org.w3c.dom.Node; public class Column { Index: Component.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Component.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Component.java 9 Jan 2003 12:24:51 -0000 1.5 --- Component.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 2,24 **** package net.sf.hibernate.mapping; ! import java.util.*; ! import org.w3c.dom.*; ! import net.sf.hibernate.*; ! import net.sf.hibernate.type.Type; import net.sf.hibernate.engine.Cascades; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! import net.sf.hibernate.util.JoinedIterator; public class Component extends Value { private ArrayList properties = new ArrayList(); ! private final Class componentClass; private final boolean embedded; private String parentProperty; - public String toString() { - return "Component: " + componentClass.getName(); - } - public int getPropertySpan() { return properties.size(); --- 2,31 ---- package net.sf.hibernate.mapping; ! import java.util.ArrayList; ! import java.util.Iterator; ! ! import net.sf.hibernate.MappingException; import net.sf.hibernate.engine.Cascades; + import net.sf.hibernate.type.Type; + import net.sf.hibernate.util.JoinedIterator; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! import net.sf.hibernate.type.ComponentType; ! import net.sf.hibernate.type.DynaBeanType; ! ! import org.apache.commons.beanutils.BasicDynaClass; ! import org.apache.commons.beanutils.BasicDynaBean; ! import org.apache.commons.beanutils.DynaProperty; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; public class Component extends Value { + private ArrayList properties = new ArrayList(); ! private Class componentClass; ! private BasicDynaClass dynaClass; private final boolean embedded; private String parentProperty; public int getPropertySpan() { return properties.size(); *************** *** 56,61 **** setTable(table); Node classNode = node.getAttributes().getNamedItem("class"); String className; ! if (classNode!=null) { className = classNode.getNodeValue(); try { --- 63,73 ---- setTable(table); Node classNode = node.getAttributes().getNamedItem("class"); + Node dynaclassNode = node.getAttributes().getNamedItem("dynaclass"); String className; ! if (dynaclassNode!=null) { ! className = dynaclassNode.getNodeValue(); ! embedded = false; ! } ! else if (classNode!=null) { className = classNode.getNodeValue(); try { *************** *** 73,81 **** } else { componentClass = owner.getPersistentClass(); className = owner.getName(); embedded = true; } - if (componentClass==null) throw new MappingException("Could not determine class of a component"); //an assertion //component path --- 85,93 ---- } else { + // an "embedded" component (ids only) componentClass = owner.getPersistentClass(); className = owner.getName(); embedded = true; } //component path *************** *** 109,114 **** value = new Value(subnode, isNullable, table, root, propertyName); } ! else if ( "component".equals(name) || "nested-composite-element".equals(name) ) { ! Class subreflectedClass = ReflectHelper.getGetter( componentClass, propertyName ).getReturnType(); value = new Component(subnode, subreflectedClass, path, owner, isNullable, table, root); } --- 121,128 ---- value = new Value(subnode, isNullable, table, root, propertyName); } ! else if ( "component".equals(name) || "dynabean".equals(name) || "nested-composite-element".equals(name) ) { ! Class subreflectedClass = (componentClass==null) ? ! null : ! ReflectHelper.getGetter( componentClass, propertyName ).getReturnType(); value = new Component(subnode, subreflectedClass, path, owner, isNullable, table, root); } *************** *** 117,123 **** } if ( value!=null) { ! value.setTypeByReflection(componentClass, propertyName); value.createForeignKeys(root, table); ! addProperty( new Property(subnode, value, root) ); } } --- 131,137 ---- } if ( value!=null) { ! if (componentClass!=null) value.setTypeByReflection(componentClass, propertyName); value.createForeignKeys(root, table); ! addProperty( new Property(subnode, value, root) ); } } *************** *** 128,131 **** --- 142,146 ---- Cascades.CascadeStyle[] cascade = new Cascades.CascadeStyle[span]; int[] joinedFetch = new int[span]; + DynaProperty[] dynaprops = new DynaProperty[span]; Iterator iter = getPropertyIterator(); int i=0; *************** *** 136,148 **** cascade[i] = prop.cascade(); joinedFetch[i] = prop.getValue().enableJoinedFetch(); i++; } ! setType( new net.sf.hibernate.type.ComponentType(componentClass, types, names, joinedFetch, cascade, parentProperty, embedded) ); } - public Class getComponentClass() { - return componentClass; - } public void setTypeByReflection(Class propertyClass, String propertyName) throws MappingException { } --- 151,166 ---- cascade[i] = prop.cascade(); joinedFetch[i] = prop.getValue().enableJoinedFetch(); + if (componentClass==null) dynaprops[i] = new DynaProperty( names[i], types[i].getReturnedClass() ); i++; } + if (componentClass==null) dynaClass = new BasicDynaClass(className, BasicDynaBean.class, dynaprops); ! setType( ! (componentClass==null) ? ! (Type) new DynaBeanType(dynaClass, names, types, joinedFetch, cascade) : ! (Type) new ComponentType(componentClass, names, types, joinedFetch, cascade, parentProperty, embedded) ! ); } public void setTypeByReflection(Class propertyClass, String propertyName) throws MappingException { } Index: IndexedCollection.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/IndexedCollection.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** IndexedCollection.java 5 Jan 2003 02:11:22 -0000 1.3 --- IndexedCollection.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 4,10 **** import java.util.Iterator; ! import net.sf.hibernate.*; ! import org.w3c.dom.*; public abstract class IndexedCollection extends Collection { --- 4,10 ---- import java.util.Iterator; ! import net.sf.hibernate.MappingException; ! import org.w3c.dom.Node; public abstract class IndexedCollection extends Collection { Index: IntegerValue.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/IntegerValue.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** IntegerValue.java 9 Jan 2003 12:24:51 -0000 1.5 --- IntegerValue.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 2,9 **** package net.sf.hibernate.mapping; - import net.sf.hibernate.*; import net.sf.hibernate.Hibernate; import net.sf.hibernate.type.Type; ! import org.w3c.dom.*; public class IntegerValue extends Value { --- 2,10 ---- package net.sf.hibernate.mapping; import net.sf.hibernate.Hibernate; + import net.sf.hibernate.MappingException; import net.sf.hibernate.type.Type; ! ! import org.w3c.dom.Node; public class IntegerValue extends Value { Index: List.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/List.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** List.java 5 Jan 2003 02:11:22 -0000 1.3 --- List.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,9 **** package net.sf.hibernate.mapping; ! import org.w3c.dom.*; ! import net.sf.hibernate.*; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.TypeFactory; public class List extends IndexedCollection { --- 2,11 ---- package net.sf.hibernate.mapping; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.TypeFactory; + + import org.w3c.dom.Node; + import org.w3c.dom.NodeList; public class List extends IndexedCollection { Index: Map.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Map.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Map.java 9 Jan 2003 12:24:51 -0000 1.6 --- Map.java 19 Jan 2003 11:47:07 -0000 1.7 *************** *** 4,13 **** import java.util.Comparator; ! import net.sf.hibernate.*; ! import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.TypeFactory; ! import org.w3c.dom.*; public class Map extends IndexedCollection { --- 4,14 ---- import java.util.Comparator; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.TypeFactory; + import net.sf.hibernate.util.ReflectHelper; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; public class Map extends IndexedCollection { Index: OneToMany.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/OneToMany.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** OneToMany.java 5 Jan 2003 02:11:22 -0000 1.3 --- OneToMany.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,10 **** package net.sf.hibernate.mapping; - import org.w3c.dom.*; - import net.sf.hibernate.util.ReflectHelper; - import net.sf.hibernate.type.EntityType; import net.sf.hibernate.Hibernate; import net.sf.hibernate.MappingException; public class OneToMany { --- 2,11 ---- package net.sf.hibernate.mapping; import net.sf.hibernate.Hibernate; import net.sf.hibernate.MappingException; + import net.sf.hibernate.type.EntityType; + import net.sf.hibernate.util.ReflectHelper; + + import org.w3c.dom.Node; public class OneToMany { Index: PersistentClass.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/PersistentClass.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** PersistentClass.java 9 Jan 2003 12:24:51 -0000 1.5 --- PersistentClass.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 2,12 **** package net.sf.hibernate.mapping; ! import java.util.*; ! import org.w3c.dom.*; import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! import net.sf.hibernate.util.JoinedIterator; ! import net.sf.hibernate.*; public abstract class PersistentClass { --- 2,17 ---- package net.sf.hibernate.mapping; ! import java.util.ArrayList; ! import java.util.Iterator; ! ! import net.sf.hibernate.MappingException; import net.sf.hibernate.cache.CacheConcurrencyStrategy; + import net.sf.hibernate.util.JoinedIterator; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! ! import org.w3c.dom.NamedNodeMap; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; public abstract class PersistentClass { *************** *** 83,87 **** value = new Value(subnode, true, table, root, propertyName); } ! else if ( "component".equals(name) ) { Class reflectedClass = ReflectHelper.getGetter( getPersistentClass(), propertyName ).getReturnType(); value = new Component(subnode, reflectedClass, path, this, true, table, root); --- 88,92 ---- value = new Value(subnode, true, table, root, propertyName); } ! else if ( "component".equals(name) || "dynabean".equals(name) ) { Class reflectedClass = ReflectHelper.getGetter( getPersistentClass(), propertyName ).getReturnType(); value = new Component(subnode, reflectedClass, path, this, true, table, root); Index: PrimitiveArray.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/PrimitiveArray.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PrimitiveArray.java 5 Jan 2003 02:11:22 -0000 1.3 --- PrimitiveArray.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,6 **** package net.sf.hibernate.mapping; ! import net.sf.hibernate.*; import org.w3c.dom.Node; --- 2,6 ---- package net.sf.hibernate.mapping; ! import net.sf.hibernate.MappingException; import org.w3c.dom.Node; Index: Property.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Property.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Property.java 5 Jan 2003 02:11:22 -0000 1.3 --- Property.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,20 **** package net.sf.hibernate.mapping; ! import java.util.*; ! import org.w3c.dom.*; ! import net.sf.hibernate.*; import net.sf.hibernate.engine.Cascades; import net.sf.hibernate.type.AbstractComponentType; import net.sf.hibernate.type.Type; public class Property { private final String name; private final Value value; private String cascade; - - public String toString() { - return "Property: " + name; - } public Type getType() { --- 2,20 ---- package net.sf.hibernate.mapping; ! import java.util.Iterator; ! ! import net.sf.hibernate.MappingException; import net.sf.hibernate.engine.Cascades; import net.sf.hibernate.type.AbstractComponentType; import net.sf.hibernate.type.Type; + import org.w3c.dom.NamedNodeMap; + import org.w3c.dom.Node; + public class Property { + private final String name; private final Value value; private String cascade; public Type getType() { Index: RootClass.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/RootClass.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** RootClass.java 9 Jan 2003 12:24:51 -0000 1.5 --- RootClass.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 5,20 **** import java.util.Iterator; ! import org.apache.commons.logging.Log; ! import org.apache.commons.logging.LogFactory; ! import org.w3c.dom.*; import net.sf.hibernate.cache.Cache; import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.cache.HashBelt; - import net.sf.hibernate.cache.ReadWriteCache; import net.sf.hibernate.cache.ReadOnlyCache; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! import net.sf.hibernate.*; ! import net.sf.hibernate.Hibernate; public class RootClass extends PersistentClass { --- 5,23 ---- import java.util.Iterator; ! import net.sf.hibernate.Hibernate; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.cache.Cache; import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.cache.HashBelt; import net.sf.hibernate.cache.ReadOnlyCache; + import net.sf.hibernate.cache.ReadWriteCache; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! ! import org.apache.commons.logging.Log; ! import org.apache.commons.logging.LogFactory; ! import org.w3c.dom.NamedNodeMap; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; public class RootClass extends PersistentClass { *************** *** 35,42 **** private Class persister; - public String toString() { - return "RootClass: " + getPersistentClass().getName(); - } - public Property getIdentifierProperty() { return identifierProperty; --- 38,41 ---- *************** *** 150,154 **** identifierProperty = new Property(subnode, identifier, root); } ! if ( identifier.getType().returnedClass().isArray() ) throw new MappingException( "illegal use of an array as an identifier (arrays don't reimplement equals)" ); --- 149,153 ---- identifierProperty = new Property(subnode, identifier, root); } ! if ( identifier.getType().getReturnedClass().isArray() ) throw new MappingException( "illegal use of an array as an identifier (arrays don't reimplement equals)" ); Index: Subclass.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Subclass.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Subclass.java 9 Jan 2003 12:24:51 -0000 1.4 --- Subclass.java 19 Jan 2003 11:47:07 -0000 1.5 *************** *** 2,14 **** package net.sf.hibernate.mapping; ! import java.util.*; ! import org.w3c.dom.*; ! import net.sf.hibernate.*; import net.sf.hibernate.cache.CacheConcurrencyStrategy; - import net.sf.hibernate.util.JoinedIterator; - import net.sf.hibernate.util.StringHelper; import net.sf.hibernate.persister.EntityPersister; import net.sf.hibernate.persister.MultiTableEntityPersister; public class Subclass extends PersistentClass { --- 2,18 ---- package net.sf.hibernate.mapping; ! import java.util.Collections; ! import java.util.Iterator; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.persister.EntityPersister; import net.sf.hibernate.persister.MultiTableEntityPersister; + import net.sf.hibernate.util.JoinedIterator; + import net.sf.hibernate.util.StringHelper; + + import org.w3c.dom.NamedNodeMap; + import org.w3c.dom.Node; + import org.w3c.dom.NodeList; public class Subclass extends PersistentClass { *************** *** 18,25 **** public CacheConcurrencyStrategy getCache() { return getSuperclass().getCache(); - } - - public String toString() { - return "Subclass: " + getPersistentClass().getName(); } --- 22,25 ---- |
From: <one...@us...> - 2003-01-19 11:47:13
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister In directory sc8-pr-cvs1:/tmp/cvs-serv29025/sf/hibernate/persister Modified Files: EntityPersister.java MultiTableEntityPersister.java Log Message: added DynaBean support Index: EntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/EntityPersister.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** EntityPersister.java 17 Jan 2003 10:32:27 -0000 1.5 --- EntityPersister.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 524,528 **** try { if ( !rs.next() ) throw new HibernateException("The database returned no natively generated identity value"); ! id = IdentifierGeneratorFactory.get( rs, getIdentifierType().returnedClass() ); } finally { --- 524,528 ---- try { if ( !rs.next() ) throw new HibernateException("The database returned no natively generated identity value"); ! id = IdentifierGeneratorFactory.get( rs, getIdentifierType().getReturnedClass() ); } finally { Index: MultiTableEntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/MultiTableEntityPersister.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** MultiTableEntityPersister.java 17 Jan 2003 10:32:27 -0000 1.5 --- MultiTableEntityPersister.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 557,561 **** try { if ( !rs.next() ) throw new HibernateException("The database returned no natively generated identity value"); ! id = IdentifierGeneratorFactory.get( rs, getIdentifierType().returnedClass() ); } finally { --- 557,561 ---- try { if ( !rs.next() ) throw new HibernateException("The database returned no natively generated identity value"); ! id = IdentifierGeneratorFactory.get( rs, getIdentifierType().getReturnedClass() ); } finally { |
From: <one...@us...> - 2003-01-19 11:47:13
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test In directory sc8-pr-cvs1:/tmp/cvs-serv29025/sf/hibernate/test Modified Files: Foo.java FooBarTest.java Glarch.hbm.xml Glarch.java GlarchProxy.java Log Message: added DynaBean support Index: Foo.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/Foo.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Foo.java 5 Jan 2003 02:11:23 -0000 1.3 --- Foo.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 2,12 **** package net.sf.hibernate.test; - import net.sf.hibernate.*; - import net.sf.hibernate.Session; - import java.io.Serializable; import java.sql.Timestamp; import java.util.Date; import java.util.Locale; public class Foo implements Lifecycle, FooProxy, Serializable { --- 2,13 ---- package net.sf.hibernate.test; import java.io.Serializable; import java.sql.Timestamp; import java.util.Date; import java.util.Locale; + + import net.sf.hibernate.CallbackException; + import net.sf.hibernate.Lifecycle; + import net.sf.hibernate.Session; public class Foo implements Lifecycle, FooProxy, Serializable { Index: FooBarTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/FooBarTest.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** FooBarTest.java 15 Jan 2003 10:33:17 -0000 1.10 --- FooBarTest.java 19 Jan 2003 11:47:08 -0000 1.11 *************** *** 59,62 **** --- 59,95 ---- } + public void testDyna() throws Exception { + Session s = sessions.openSession(); + GlarchProxy g = new Glarch(); + Serializable id = s.save(g); + s.flush(); + s.connection().commit(); + s.close(); + + s = sessions.openSession(); + g = (GlarchProxy) s.load(Glarch.class, id); + assertTrue( g.getDynaBean().get("foo").equals("foo") && g.getDynaBean().get("bar").equals( new Integer(66) ) ); + g.getDynaBean().set("foo", "bar"); + s.flush(); + s.connection().commit(); + s.close(); + + s = sessions.openSession(); + g = (GlarchProxy) s.load(Glarch.class, id); + assertTrue( g.getDynaBean().get("foo").equals("bar") && g.getDynaBean().get("bar").equals( new Integer(66) ) ); + g.setDynaBean(null); + s.flush(); + s.connection().commit(); + s.close(); + + s = sessions.openSession(); + g = (GlarchProxy) s.load(Glarch.class, id); + assertTrue( g.getDynaBean()==null ); + s.delete(g); + s.flush(); + s.connection().commit(); + s.close(); + } + public void testAfterDelete() throws Exception { Session s = sessions.openSession(); Index: Glarch.hbm.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/Glarch.hbm.xml,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Glarch.hbm.xml 1 Jan 2003 13:57:07 -0000 1.1.1.1 --- Glarch.hbm.xml 19 Jan 2003 11:47:08 -0000 1.2 *************** *** 1,4 **** <?xml version="1.0"?> ! <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping.dtd" > <hibernate-mapping> --- 1,4 ---- <?xml version="1.0"?> ! <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" > <hibernate-mapping> *************** *** 13,22 **** <many-to-one name="next" column="next_" class="net.sf.hibernate.test.Glarch"/> <property name="order" column="order_"/> ! <list role="strings"> <key column="glarch_key"/> <index column="i"/> <element type="string" column="tha_stryng"/> </list> ! <list role="fooComponents" lazy="true" cascade="all"> <key column="glarch_key"/> <index column="tha_indecks"/> --- 13,26 ---- <many-to-one name="next" column="next_" class="net.sf.hibernate.test.Glarch"/> <property name="order" column="order_"/> ! <dynabean name="dynaBean" dynaclass="foo"> ! <property name="foo" type="string"/> ! <property name="bar" type="integer"/> ! </dynabean> ! <list name="strings"> <key column="glarch_key"/> <index column="i"/> <element type="string" column="tha_stryng"/> </list> ! <list name="fooComponents" lazy="true" cascade="all"> <key column="glarch_key"/> <index column="tha_indecks"/> *************** *** 31,40 **** </composite-element> </list> ! <array role="proxyArray" element-class="net.sf.hibernate.test.GlarchProxy"> <key column="array_key"/> <index column="array_indecks"/> <one-to-many class="net.sf.hibernate.test.Glarch"/> </array> ! <set role="proxySet"> <key column="set_key"/> <one-to-many class="net.sf.hibernate.test.Glarch"/> --- 35,44 ---- </composite-element> </list> ! <array name="proxyArray" element-class="net.sf.hibernate.test.GlarchProxy"> <key column="array_key"/> <index column="array_indecks"/> <one-to-many class="net.sf.hibernate.test.Glarch"/> </array> ! <set name="proxySet"> <key column="set_key"/> <one-to-many class="net.sf.hibernate.test.Glarch"/> Index: Glarch.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/Glarch.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Glarch.java 5 Jan 2003 02:11:23 -0000 1.3 --- Glarch.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 11,15 **** --- 11,22 ---- import net.sf.hibernate.Session; + import org.apache.commons.beanutils.DynaBean; + import org.apache.commons.beanutils.DynaClass; + import org.apache.commons.beanutils.BasicDynaBean; + import org.apache.commons.beanutils.DynaProperty; + import org.apache.commons.beanutils.BasicDynaClass; + public class Glarch implements GlarchProxy, Lifecycle, Named, Serializable { + private int version; private String name; *************** *** 22,25 **** --- 29,33 ---- private Set proxySet; //private Currency currency = Currency.getInstance( Locale.getDefault() ); + private transient DynaBean dynaBean; public int getVersion() { *************** *** 103,106 **** --- 111,130 ---- public boolean onSave(Session s) throws CallbackException { + DynaClass dc = new BasicDynaClass( + "dyna", + BasicDynaBean.class, + new DynaProperty[] { + new DynaProperty("foo", String.class), + new DynaProperty("bar", Integer.class) + } + ); + try { + dynaBean = dc.newInstance(); + } + catch (Exception e) { + throw new CallbackException(e); + } + dynaBean.set("foo", "foo"); + dynaBean.set("bar", new Integer(66)); return NO_VETO; } *************** *** 118,121 **** --- 142,161 ---- }*/ + /** + * Returns the dynaBean. + * @return DynaBean + */ + public DynaBean getDynaBean() { + return dynaBean; + } + + /** + * Sets the dynaBean. + * @param dynaBean The dynaBean to set + */ + public void setDynaBean(DynaBean dynaBean) { + this.dynaBean = dynaBean; + } + } Index: GlarchProxy.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/GlarchProxy.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** GlarchProxy.java 5 Jan 2003 02:11:23 -0000 1.3 --- GlarchProxy.java 19 Jan 2003 11:47:08 -0000 1.4 *************** *** 1,5 **** package net.sf.hibernate.test; ! import java.util.*; public interface GlarchProxy { --- 1,9 ---- package net.sf.hibernate.test; ! import java.util.List; ! import java.util.Map; ! import java.util.Set; ! ! import org.apache.commons.beanutils.DynaBean; public interface GlarchProxy { *************** *** 19,22 **** --- 23,29 ---- public List getStrings(); public void setStrings(List strings); + + public DynaBean getDynaBean(); + public void setDynaBean(DynaBean bean); public Map getStringSets(); |
From: <one...@us...> - 2003-01-19 11:47:12
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate In directory sc8-pr-cvs1:/tmp/cvs-serv29025/sf/hibernate Modified Files: UserType.java hibernate-mapping-2.0.dtd Log Message: added DynaBean support Index: UserType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/UserType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** UserType.java 5 Jan 2003 02:11:20 -0000 1.3 --- UserType.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 37,41 **** /** ! * The class returned by <tt>nullSafeGet</tt>. * * @param session --- 37,41 ---- /** ! * The class returned by <tt>nullSafeGet()</tt>. * * @param session Index: hibernate-mapping-2.0.dtd =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hibernate-mapping-2.0.dtd,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** hibernate-mapping-2.0.dtd 16 Jan 2003 20:52:38 -0000 1.7 --- hibernate-mapping-2.0.dtd 19 Jan 2003 11:47:07 -0000 1.8 *************** *** 31,35 **** discriminator?, (version|timestamp)?, ! (property|many-to-one|one-to-one|component|map|set|list|bag|array|primitive-array)*, ((subclass*)|(joined-subclass*)) )> --- 31,35 ---- discriminator?, (version|timestamp)?, ! (property|many-to-one|one-to-one|component|dynabean|map|set|list|bag|array|primitive-array)*, ((subclass*)|(joined-subclass*)) )> *************** *** 166,173 **** <!ELEMENT component ( parent?, ! (property|many-to-one|one-to-one|component|map|set|list|bag|array|primitive-array)* )> <!ATTLIST component class CDATA #IMPLIED> <!ATTLIST component name CDATA #REQUIRED> <!-- The parent element maps a property of the component class as a pointer back to --- 166,179 ---- <!ELEMENT component ( parent?, ! (property|many-to-one|one-to-one|component|dynabean|map|set|list|bag|array|primitive-array)* )> <!ATTLIST component class CDATA #IMPLIED> <!ATTLIST component name CDATA #REQUIRED> + + <!ELEMENT dynabean ( + (property|many-to-one|one-to-one|component|dynabean|map|set|list|bag|array|primitive-array)* + )> + <!ATTLIST dynabean dynaclass CDATA #REQUIRED> + <!ATTLIST dynabean name CDATA #REQUIRED> <!-- The parent element maps a property of the component class as a pointer back to |
From: <one...@us...> - 2003-01-19 11:47:12
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id In directory sc8-pr-cvs1:/tmp/cvs-serv29025/sf/hibernate/id Modified Files: SequenceGenerator.java SequenceHiLoGenerator.java TableHiLoGenerator.java Log Message: added DynaBean support Index: SequenceGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id/SequenceGenerator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SequenceGenerator.java 9 Jan 2003 12:24:50 -0000 1.4 --- SequenceGenerator.java 19 Jan 2003 11:47:07 -0000 1.5 *************** *** 46,50 **** public void configure(Type type, Properties params, Dialect dialect) throws MappingException { this.sequenceName = PropertiesHelper.getString(SEQUENCE, params, "hibernate_sequence"); ! returnClass = type.returnedClass(); sql = dialect.getSequenceNextValString(sequenceName); } --- 46,50 ---- public void configure(Type type, Properties params, Dialect dialect) throws MappingException { this.sequenceName = PropertiesHelper.getString(SEQUENCE, params, "hibernate_sequence"); ! returnClass = type.getReturnedClass(); sql = dialect.getSequenceNextValString(sequenceName); } Index: SequenceHiLoGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id/SequenceHiLoGenerator.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SequenceHiLoGenerator.java 17 Jan 2003 23:38:38 -0000 1.5 --- SequenceHiLoGenerator.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 44,48 **** super.configure(type, params, d); lo = maxLoValue = PropertiesHelper.getInt(MAX_LO, params, 9); ! returnClass = type.returnedClass(); } --- 44,48 ---- super.configure(type, params, d); lo = maxLoValue = PropertiesHelper.getInt(MAX_LO, params, 9); ! returnClass = type.getReturnedClass(); } Index: TableHiLoGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id/TableHiLoGenerator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TableHiLoGenerator.java 9 Jan 2003 12:24:50 -0000 1.1 --- TableHiLoGenerator.java 19 Jan 2003 11:47:07 -0000 1.2 *************** *** 49,53 **** super.configure(type, params, d); lo = maxLo = PropertiesHelper.getInt(MAX_LO, params, Short.MAX_VALUE); ! returnClass = type.returnedClass(); } --- 49,53 ---- super.configure(type, params, d); lo = maxLo = PropertiesHelper.getInt(MAX_LO, params, Short.MAX_VALUE); ! returnClass = type.getReturnedClass(); } |