【Java开源代码栏目提醒】:网学会员为需要Java开源代码的朋友们搜集整理了BasicRenderer.java相关资料,希望对各位网友有所帮助!
//$Id: BasicRenderer.java,v 1.7 2003/09/27 11:17:10 maxcsaucdk Exp $
package net.sf.hibernate.tool.hbm2java;
import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.sf.hibernate.util.StringHelper;
public class BasicRenderer extends AbstractRenderer {
static final protected int ORDINARY = 0;
static final protected int BOUND = 1;
static final protected int CONSTRAINT = 3;//any constraint properties are bound as well
public void render(String savedToPackage, String savedToClass, ClassMapping classMapping, Map class2classmap, PrintWriter mainwriter) throws Exception {
genPackageDelaration(savedToPackage, classMapping, mainwriter);
mainwriter.println();
// switch to another writer to be able to insert the actually
// used imports when whole class has been rendered.
StringWriter strWriter = new StringWriter();
PrintWriter writer = new PrintWriter(strWriter);
// class declaration
if(classMapping.getMeta("class-description")==null) {
writer.println("/** @author Hibernate CodeGenerator */");
} else {
writer.println("/** \n" + toJavaDoc(classMapping.getMetaAsString("class-description"),0) + "*/");
}
String classScope = "public";
if(classMapping.getMeta("scope-class")!=null) {
classScope = classMapping.getMetaAsString("scope-class").trim();
}
String declarationType = null;
if(classMapping.isInterface()) {
declarationType = "interface";
} else {
declarationType = "class";
}
if(classMapping.shouldBeAbstract() && (classScope.indexOf("abstract")==-1)) {
writer.print( "abstract " + classScope + " " + declarationType + " " + savedToClass );
} else {
writer.print( classScope + " " + declarationType + " " + savedToClass );
}
// subclasses/interfaces
String superClass = classMapping.getSuperClass();
Set interfaces = new HashSet();
if(!classMapping.isInterface()) {
if(superClass!=null) {
writer.print( " extends " + superClass);
} else if (classMapping.getMeta("extends")!=null) {
writer.print( " extends " + classMapping.getMetaAsString("extends"));
}
if (classMapping.getMeta("implements")!=null) {
interfaces.addAll(classMapping.getMeta("implements"));
}
interfaces.add(Serializable.class.getName());
classMapping.addImport(Serializable.class.getName());
} else { // class is an interface
if(classMapping.getSuperClass()!=null) {
interfaces.add(superClass);
}
if (classMapping.getMeta("extends")!=null) {
interfaces.addAll(classMapping.getMeta("extends"));
}
}
// implement proxy, but NOT if the proxy is the class it self!
if (classMapping.getProxy()!=null &&
( !classMapping.getProxy().equals( classMapping.getCanonicalName() ) )) {
interfaces.add(classMapping.getProxy());
}
if(interfaces.size()>0) {
if(!classMapping.isInterface()) {
writer.print(" implements ");
} else {
writer.print(" extends ");
}
for (Iterator iter = interfaces.iterator(); iter.hasNext();) {
writer.print(shortenType(iter.next().toString(), classMapping.getImports()));
if(iter.hasNext()) writer.print(",");
}
}
writer.println(" {");
writer.println();
// switch to another writer to be able to insert the
// veto- and changeSupport fields
StringWriter strPropWriter = new StringWriter();
PrintWriter propWriter = new PrintWriter(strPropWriter);
if(!classMapping.isInterface()) {
doFields(classMapping, class2classmap, propWriter);
doConstructors(savedToClass, classMapping, class2classmap, propWriter);
}
String vetoSupport = makeSupportField("vetos", classMapping.getAllFields());
String changeSupport = makeSupportField("changes", classMapping.getAllFields());
int fieldTypes = doFieldAccessors(classMapping, class2classmap, propWriter, vetoSupport, changeSupport);
if(!classMapping.isInterface()) {
doSupportMethods(fieldTypes, vetoSupport, changeSupport, propWriter);
doToString(classMapping, propWriter);
doEqualsAndHashCode(savedToClass,classMapping, propWriter);
}
propWriter.println("}");
//insert change and VetoSupport
if(!classMapping.isInterface()) {
doSupports(fieldTypes, cl