📄 basicrenderer.java
字号:
} /* public void doFieldNameConstants(ClassMapping classMapping, PrintWriter writer) { // fields for ( Iterator fields = classMapping.getFields().iterator(); fields.hasNext(); ) { FieldProperty field = (FieldProperty) fields.next(); if(field.isGeneratedAsProperty()) { String fieldName = " "+"public static String FIELD_"+field.getFieldName().toUpperCase() +" = \""+classMapping.getFullyQualifiedName()+"."+field.getFieldName()+"\";"; writer.println(fieldName); } } writer.println(); }*/ private boolean generateConcreteEmptyClasses() { return isPropertySet("generate-concrete-empty-classes"); } public void doFields(ClassMapping classMapping, Map class2classmap, PrintWriter writer) { // fields if(!classMapping.isInterface()) { if(classMapping.isSuperInterface()) { doFields(classMapping.getAllFields(), classMapping.getImports(), class2classmap, writer); } } List fieldList = classMapping.getFields(); Set imports = classMapping.getImports(); doFields(fieldList, imports, class2classmap, writer); } private void doFields(List fieldList, Set imports, Map class2classmap, PrintWriter writer) { for ( Iterator fields = fieldList.iterator(); fields.hasNext(); ) { FieldProperty field = (FieldProperty) fields.next(); if(field.isGeneratedAsProperty()) { String fieldScope = getFieldScope(field, "scope-field", "private"); writer.println( " /** " + ( field.isNullable() && !field.isIdentifier() ? "nullable " : StringHelper.EMPTY_STRING ) + ( field.isIdentifier() ? "identifier" : "persistent" ) + " field */"); writer.print( " " + fieldScope + " " + JavaTool.shortenType( JavaTool.getTrueTypeName(field, class2classmap), imports ) + ' ' + field.getFieldName()); if(field.getMeta("default-value")!=null) { writer.print(" = " + field.getMetaAsString("default-value")); } writer.println(';'); } writer.println(); } } public void doEqualsAndHashCode(String savedToClass, ClassMapping classMapping, PrintWriter writer) { if(classMapping.getSuperClassMapping()!=null) { for (Iterator fields = classMapping.getFields().iterator(); fields.hasNext();) { FieldProperty field = (FieldProperty) fields.next(); if(field.getMetaAsBool("use-in-equals")) { log.warn("use-in-equals for property " + field.getFieldName() + " in " + classMapping.getName() + " will be ignored since it is in a subclass. \"There is simply no way to extend an instantiable class and add an aspect while preserving the equals() contract\" -- Bloch."); } } } else { if ( classMapping.mustImplementEquals() ) { classMapping.getImports().add("org.apache.commons.lang.builder.EqualsBuilder"); classMapping.getImports().add("org.apache.commons.lang.builder.HashCodeBuilder"); writer.println(" public boolean equals(Object other) {"); writer.println(" if ( (this == other ) ) return true;"); // == identity writer.println(" if ( !(other instanceof " + savedToClass + ") ) return false;"); // same class ? writer.println(" " + savedToClass + " castOther = (" + savedToClass + ") other;"); writer.println(" return new EqualsBuilder()"); int usedFields = 0; List idFields = new ArrayList(); for (Iterator fields = classMapping.getAllFields().iterator(); fields.hasNext();) { FieldProperty field = (FieldProperty) fields.next(); if(field.getMetaAsBool("use-in-equals")) { writer.println(" .append(this." + field.getGetterSignature() + ", castOther." + field.getGetterSignature() + StringHelper.CLOSE_PAREN); usedFields++; } if(field.isIdentifier()) { idFields.add(field); } } if(usedFields==0) { log.warn("No properties has been marked as being used in equals/hashcode for " + classMapping.getName() + ". Using object identifier which is RARELY safe to use! See http://hibernate.org/109.html"); for (Iterator fields = idFields.iterator(); fields.hasNext();) { FieldProperty field = (FieldProperty) fields.next(); writer.println(" .append(this." + field.getGetterSignature() + ", castOther." + field.getGetterSignature() + StringHelper.CLOSE_PAREN); } } writer.println(" .isEquals();"); writer.println(" }"); writer.println(); writer.println(" public int hashCode() {"); writer.println(" return new HashCodeBuilder()"); for (Iterator fields = classMapping.getAllFields().iterator(); fields.hasNext();) { FieldProperty field = (FieldProperty) fields.next(); if(field.getMetaAsBool("use-in-equals")) { writer.println(" .append(" + field.getGetterSignature() + StringHelper.CLOSE_PAREN); } } if(usedFields==0) { for (Iterator fields = idFields.iterator(); fields.hasNext();) { FieldProperty field = (FieldProperty) fields.next(); writer.println(" .append(" + field.getGetterSignature() + StringHelper.CLOSE_PAREN); } } writer.println(" .toHashCode();"); writer.println(" }"); writer.println(); } } } public void doToString(ClassMapping classMapping, PrintWriter writer) { if(classMapping.getMetaAsBool("implement-tostring",true)) { classMapping.addImport("org.apache.commons.lang.builder.ToStringBuilder"); writer.println(" public String toString() {"); writer.println(" return new ToStringBuilder(this)"); for (Iterator fields = classMapping.getAllFields().iterator(); fields.hasNext();) { FieldProperty field = (FieldProperty) fields.next(); // If nothing is stated about id then include it in toString() if(field.isIdentifier() && field.getMeta("use-in-tostring")==null) { writer.println(" .append(\"" + field.getFieldName() + "\", " + field.getGetterSignature() + ")"); } else if(field.getMetaAsBool("use-in-tostring")) { writer.println(" .append(\"" + field.getFieldName() + "\", " + field.getGetterSignature() + ")"); } } writer.println(" .toString();"); writer.println(" }"); writer.println(); } } static Map primitiveToObject = new HashMap(); { primitiveToObject.put("char", "Character"); primitiveToObject.put("byte", "Byte"); primitiveToObject.put("short", "Short"); primitiveToObject.put("int", "Integer"); primitiveToObject.put("long", "Long"); primitiveToObject.put("boolean", "Boolean"); primitiveToObject.put("float", "Float"); primitiveToObject.put("double", "Double"); } public int doFieldAccessors(ClassMapping classMapping, Map class2classmap, PrintWriter writer, String vetoSupport, String changeSupport) { int fieldTypes=ORDINARY; if(classMapping.isSuperInterface()) { fieldTypes = doFields(classMapping, class2classmap, writer, vetoSupport, changeSupport, fieldTypes, classMapping.getAllFields()); } List fieldz = classMapping.getFields(); fieldTypes = doFields(classMapping, class2classmap, writer, vetoSupport, changeSupport, fieldTypes, fieldz); return fieldTypes; } private int doFields(ClassMapping classMapping, Map class2classmap, PrintWriter writer, String vetoSupport, String changeSupport, int fieldTypes, List fieldz) { // field accessors for (Iterator fields = fieldz.iterator(); fields.hasNext();) { FieldProperty field = (FieldProperty) fields.next(); if(field.isGeneratedAsProperty()) { // getter String getAccessScope = getFieldScope(field, "scope-get", "public"); if(field.getMeta("field-description")!=null) { writer.println(" /** \n" + javaTool.toJavaDoc(field.getMetaAsString("field-description"), 4) + " */"); } writer.print(" " + getAccessScope + " " + JavaTool.shortenType(JavaTool.getTrueTypeName(field, class2classmap),classMapping.getImports()) + " " + field.getGetterSignature()); if(classMapping.isInterface()) { writer.println(";"); } else { writer.println(" {"); writer.println(" return this." + field.getFieldName() + ";"); writer.println(" }"); } writer.println(); // setter int fieldType=0; if(field.getMeta("beans-property-type")!=null) { String beansPropertyType = field.getMetaAsString("beans-property-type").trim().toLowerCase(); if(beansPropertyType.equals("constraint") ) { fieldTypes = (fieldTypes | CONSTRAINT); fieldType = CONSTRAINT; } else if(beansPropertyType.equals("bound") ) { fieldTypes = (fieldTypes | BOUND); fieldType = BOUND; } } String setAccessScope = getFieldScope(field, "scope-set", "public"); writer.print(" " + setAccessScope + " void set" + field.getAccessorName() + StringHelper.OPEN_PAREN + JavaTool.shortenType(JavaTool.getTrueTypeName(field, class2classmap),classMapping.getImports()) + " " + field.getFieldName() + ")"); writer.print((fieldType&CONSTRAINT)==CONSTRAINT ? " throws PropertyVetoException ":""); if(classMapping.isInterface()) { writer.println(";"); } else { writer.println(" {"); if((fieldType&CONSTRAINT)==CONSTRAINT || (fieldType&BOUND)==BOUND) { writer.println(" Object oldValue = "+getFieldAsObject(true, field)+";"); } if((fieldType&CONSTRAINT)==CONSTRAINT) { writer.println(" "+vetoSupport+".fireVetoableChange(\""+field.getFieldName()+"\","); writer.println(" oldValue,"); writer.println(" "+getFieldAsObject(false, field)+");"); } writer.println(" this." + field.getFieldName() + " = " + field.getFieldName() + ";"); if((fieldType&BOUND)==BOUND) { writer.println(" "+changeSupport+".firePropertyChange(\""+field.getFieldName()+"\","); writer.println(" oldValue,"); writer.println(" "+getFieldAsObject(false, field)+");"); } writer.println(" }"); } writer.println(); // add/remove'rs (commented out for now) /* if(field.getForeignClass()!=null) { ClassName foreignClass = field.getForeignClass(); String trueforeign = getTrueTypeName(foreignClass, class2classmap); classMapping.addImport(trueforeign); // Try to identify the matching set method on the child. ClassMapping forignMap = (ClassMapping) class2classmap.get(foreignClass.getFullyQualifiedName()); if(forignMap!=null) { Iterator foreignFields = forignMap.getFields().iterator(); while (foreignFields.hasNext()) { Field ffield = (Field) foreignFields.next(); if(ffield.isIdentifier()) { log.debug("Trying to match " + ffield.getName() + " with " + field.getForeignKeys()); } } } else { log.error("Could not find foreign class's mapping - cannot provide bidirectional setters!"); } 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(); } */ } } return fieldTypes; } public void doImports(ClassMapping classMapping, PrintWriter writer) { writer.println(javaTool.genImports(classMapping)); writer.println(); } protected String makeSupportField(String fieldName, List fieldList) { String suffix = ""; boolean needSuffix = false; for (Iterator fields = fieldList.iterator(); fields.hasNext();) { String name = ((FieldProperty) fields.next()).getFieldName(); if (name.equals(fieldName)) needSuffix = true; suffix += name; } return needSuffix ? fieldName + "_" + suffix : fieldName; } private String getFieldAsObject(boolean prependThis, FieldProperty field) { ClassName type = field.getClassType(); if(type != null && type.isPrimitive() && !type.isArray()) { String typeName = (String) primitiveToObject.get(type.getName()); typeName = "new "+typeName+"( "; typeName += prependThis ? "this." : ""; return typeName+field.getFieldName()+" )"; } return (prependThis?"this.":"")+field.getFieldName(); } boolean isPropertySet(String key) { String val = properties.getProperty(key); return Boolean.valueOf(val).booleanValue(); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -