I find it useful when using the params "generate-concrete-empty-classes" and "baseclass-prefix" in the config.xml to hbm2java to not overwrite the generated concrete class once it exists because that is where I am writing my accessor methods. I added the following code to Generator.java. Please add it to CVS if this would be helpful to others.

private void write(ClassMapping classMapping, Map class2classmap, Renderer renderer) throws Exception {
String saveToPackage = renderer.getSaveToPackage(classMapping);
String saveToClassName = renderer.getSaveToClassName(classMapping);
File dir = this.getDir(saveToPackage);
File file = new File(dir, this.getFileName(saveToClassName));


// Return if file exists and we do not want to overwrite it
if( doNotOverwrite( params, file ) ) {
return;
}


log.debug("Writing " + file);

PrintWriter writer = new PrintWriter(new FileOutputStream(file));

renderer.render(getPackageName(saveToPackage), getName(saveToClassName), classMapping, class2classmap, writer);
writer.close();
}

/**
* Do not overwrite a previously generated file if param is set
*/

private boolean doNotOverwrite( Properties params, File file ) {
File outFile = null;
String val = params.getProperty(");
boolean isSet = Boolean.valueOf(val).booleanValue();
if( isSet ) {
return file.exists();
}
return false;
}

Example config.xml to pass hbm2java:

<codegen>
<generate prefix="Base" renderer="net.sf.hibernate.tool.hbm2java.BasicRenderer"/>
<generate renderer="net.sf.hibernate.tool.hbm2java.BasicRenderer">
<param name="generate-concrete-empty-classes">true</param>
<param name="baseclass-prefix">Base</param>
<param name="do-not-overwrite">true</param>
</generate>
</codegen>

Thank you,

Anthony Schexnaildre
DuoCash Inc.

Reply via email to