📄 basicrenderer.java
字号:
// invoke super to initialize superclass... List supersMinConstructorFields = classMapping.getFieldsForSupersMinimalConstructor(); if (!supersMinConstructorFields.isEmpty()) { writer.print(" super("); for (Iterator fields = supersMinConstructorFields.iterator(); fields.hasNext();) { Field field = (Field) fields.next(); writer.print(field.getName()); if(fields.hasNext()) { writer.print(StringHelper.COMMA_SPACE); } } writer.println(");"); } // initialisation of localfields for (Iterator fields = classMapping.getLocalFieldsForMinimalConstructor().iterator(); fields.hasNext();) { Field field = (Field) fields.next(); if(field.isGeneratedAsProperty()) { writer.println(" this." + field.getName() + " = " + field.getName() + ";"); } } writer.println(" }"); writer.println(); } } public void doFields(ClassMapping classMapping, Map class2classmap, PrintWriter writer) { // fields for ( Iterator fields = classMapping.getFields().iterator(); fields.hasNext(); ) { Field field = (Field) 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 + " " + shortenType( getTrueTypeName(field, class2classmap), classMapping.getImports() ) + ' ' + field.getName()); 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.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 ( !(other instanceof " + savedToClass + ") ) return false;"); writer.println(" " + savedToClass + " castOther = (" + savedToClass + ") other;"); writer.println(" return new EqualsBuilder()"); for (Iterator fields = classMapping.getFields().iterator(); fields.hasNext();) { Field field = (Field) fields.next(); if ( field.isIdentifier() ) { 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.getFields().iterator(); fields.hasNext();) { Field field = (Field) fields.next(); if ( field.isIdentifier() ) { writer.println(" .append(" + field.getGetterSignature() + StringHelper.CLOSE_PAREN); } } writer.println(" .toHashCode();"); writer.println(" }"); writer.println(); } } public void doToString(ClassMapping classMapping, PrintWriter writer) { 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();) { Field field = (Field) 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.getName() + "\", " + field.getGetterSignature() + ")"); } else if(field.getMetaAsBool("use-in-tostring")) { writer.println(" .append(\"" + field.getName() + "\", " + 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; // field accessors for (Iterator fields = classMapping.getFields().iterator(); fields.hasNext();) { Field field = (Field) fields.next(); if(field.isGeneratedAsProperty()) { // getter String getAccessScope = getFieldScope(field, "scope-get", "public"); if(field.getMeta("field-description")!=null) { writer.println(" /** \n" + toJavaDoc(field.getMetaAsString("field-description"), 4) + " */"); } writer.print(" " + getAccessScope + " " + shortenType(getTrueTypeName(field, class2classmap),classMapping.getImports()) + " " + field.getGetterSignature()); if(classMapping.isInterface()) { writer.println(";"); } else { writer.println(" {"); writer.println(" return this." + field.getName() + ";"); 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.getAsSuffix() + StringHelper.OPEN_PAREN + shortenType(getTrueTypeName(field, class2classmap),classMapping.getImports()) + " " + field.getName() + ")"); 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.getName()+"\","); writer.println(" oldValue,"); writer.println(" "+getFieldAsObject(false, field)+");"); } writer.println(" this." + field.getName() + " = " + field.getName() + ";"); if((fieldType&BOUND)==BOUND) { writer.println(" "+changeSupport+".firePropertyChange(\""+field.getName()+"\","); 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) { // imports classMapping.getImports().add("java.io.Serializable"); for ( Iterator imports = classMapping.getImports().iterator(); imports.hasNext(); ) { writer.println("import " + imports.next() + ";"); } writer.println(); } protected String makeSupportField(String fieldName, List fieldList) { String suffix = ""; boolean needSuffix = false; for (Iterator fields = fieldList.iterator(); fields.hasNext();) { String name = ((Field) fields.next()).getName(); if (name.equals(fieldName)) needSuffix = true; suffix += name; } return needSuffix ? fieldName + "_" + suffix : fieldName; } private String getFieldAsObject(boolean prependThis, Field 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.getName()+" )"; } return (prependThis?"this.":"")+field.getName(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -