📄 modelwriter.java
字号:
if (comments.getCloseTagComment() != null) { this.writerSupport.writeTag(writer, tagName, attributes, XMLWriterSupport.OPEN); writeCloseComment(writer, comments); this.writerSupport.writeCloseTag(writer, tagName); } else { this.writerSupport.writeTag(writer, tagName, attributes, XMLWriterSupport.CLOSE); } } } /** * Writes a closed (short) tag with eventually nested comments. * * @param writer the writer. * @param tagName the tag name. * @param attribute the attribute name. * @param value the attribute value. * @param comments the comments. * * @throws IOException if there is an I/O problem. */ protected void writeTag(final Writer writer, final String tagName, final String attribute, final String value, final Comments comments) throws IOException { if (comments == null) { this.writerSupport.writeTag(writer, tagName, attribute, value , XMLWriterSupport.CLOSE); } else { writeOpenComment(writer, comments); if (comments.getCloseTagComment() != null) { this.writerSupport.writeTag( writer, tagName, attribute, value, XMLWriterSupport.OPEN ); writeCloseComment(writer, comments); this.writerSupport.writeCloseTag(writer, tagName); } else { this.writerSupport.writeTag( writer, tagName, attribute, value, XMLWriterSupport.CLOSE ); } } } /** * Writes a model to the specified writer. * * @param writer the writer. * * @throws IOException if there is an I/O problem. */ public void write(final Writer writer) throws IOException { writeStandardComment(writer, this.model.getModelComments()); this.writerSupport.writeTag(writer, ClassModelTags.OBJECTS_TAG); final String[] sources = this.model.getSources(); for (int i = 0; i < sources.length; i++) { final Comments comments = this.model.getIncludeComment(sources[i]); writeTag( writer, ClassModelTags.INCLUDE_TAG, ClassModelTags.SOURCE_ATTR, sources[i], comments ); } for (int i = 0; i < this.model.size(); i++) { final ClassDescription cd = this.model.get(i); writeClassDescription(writer, cd); } final ManualMappingInfo[] mappings = getModel().getMappingModel().getManualMapping(); for (int i = 0; i < mappings.length; i++) { final ManualMappingInfo mi = mappings[i]; writeManualMapping(writer, mi); } final MultiplexMappingInfo[] mmappings = getModel().getMappingModel().getMultiplexMapping(); for (int i = 0; i < mmappings.length; i++) { final MultiplexMappingInfo mi = mmappings[i]; writeMultiplexMapping(writer, mi); } writeCloseComment(writer, this.model.getModelComments()); this.writerSupport.writeCloseTag(writer, ClassModelTags.OBJECTS_TAG); } /** * Writes a manual mapping to the XML output. * * @param writer the writer. * @param mi the mapping info. * * @throws IOException if there is an I/O problem. */ protected void writeManualMapping(final Writer writer, final ManualMappingInfo mi) throws IOException { final AttributeList al = new AttributeList(); al.setAttribute(ClassModelTags.CLASS_ATTR, mi.getBaseClass().getName()); al.setAttribute(ClassModelTags.READ_HANDLER_ATTR, mi.getReadHandler().getName()); al.setAttribute(ClassModelTags.WRITE_HANDLER_ATTR, mi.getWriteHandler().getName()); writeTag(writer, ClassModelTags.MANUAL_TAG, al, mi.getComments()); } /** * Writes a multiplex mapping to the XML output. * * @param writer the writer. * @param mi the mapping info. * * @throws IOException if there is an I/O problem. */ protected void writeMultiplexMapping(final Writer writer, final MultiplexMappingInfo mi) throws IOException { final TypeInfo[] tis = mi.getChildClasses(); final AttributeList al = new AttributeList(); al.setAttribute(ClassModelTags.BASE_CLASS_ATTR, mi.getBaseClass().getName()); al.setAttribute(ClassModelTags.TYPE_ATTR, mi.getTypeAttribute()); getWriterSupport().writeTag(writer, ClassModelTags.MAPPING_TAG, al, XMLWriterSupport.OPEN); for (int j = 0; j < tis.length; j++) { final AttributeList tiAttr = new AttributeList(); tiAttr.setAttribute(ClassModelTags.NAME_ATTR, tis[j].getName()); tiAttr.setAttribute(ClassModelTags.CLASS_ATTR, tis[j].getType().getName()); writeTag(writer, ClassModelTags.TYPE_TAG, tiAttr, tis[j].getComments()); } getWriterSupport().writeCloseTag(writer, ClassModelTags.MAPPING_TAG); } /** * Writes a class description. * * @param writer the writer. * @param cd the class description. * * @throws IOException if there is an I/O problem. */ protected void writeClassDescription(final Writer writer, final ClassDescription cd) throws IOException { if (cd.isUndefined()) { return; } final AttributeList al = new AttributeList(); al.setAttribute(ClassModelTags.CLASS_ATTR, cd.getName()); if (cd.getRegisterKey() != null) { al.setAttribute(ClassModelTags.REGISTER_NAMES_ATTR, cd.getRegisterKey()); } if (cd.isPreserve()) { al.setAttribute(ClassModelTags.IGNORE_ATTR, "true"); } this.writerSupport.writeTag(writer, ClassModelTags.OBJECT_TAG, al, XMLWriterSupport.OPEN); final TypeInfo[] constructorInfo = cd.getConstructorDescription(); if (constructorInfo != null && constructorInfo.length != 0) { this.writerSupport.writeTag(writer, ClassModelTags.CONSTRUCTOR_TAG); for (int i = 0; i < constructorInfo.length; i++) { final AttributeList constructorList = new AttributeList(); constructorList.setAttribute( ClassModelTags.CLASS_ATTR, constructorInfo[i].getType().getName() ); constructorList.setAttribute( ClassModelTags.PROPERTY_ATTR, constructorInfo[i].getName() ); writeTag(writer, ClassModelTags.PARAMETER_TAG, constructorList, constructorInfo[i].getComments()); } this.writerSupport.writeCloseTag(writer, ClassModelTags.CONSTRUCTOR_TAG); } final PropertyInfo[] properties = cd.getProperties(); for (int i = 0; i < properties.length; i++) { writePropertyInfo(writer, properties[i]); } this.writerSupport.writeCloseTag(writer, ClassModelTags.OBJECT_TAG); } /** * Writes a property info element. * * @param writer the writer. * @param ipi the property info. * * @throws IOException if there is an I/O problem. */ private void writePropertyInfo(final Writer writer, final PropertyInfo ipi) throws IOException { final AttributeList props = new AttributeList(); props.setAttribute(ClassModelTags.NAME_ATTR, ipi.getName()); if (ipi instanceof IgnoredPropertyInfo) { writeTag(writer, ClassModelTags.IGNORED_PROPERTY_TAG, props, ipi.getComments()); return; } if (ipi.getPropertyType().equals(PropertyType.ATTRIBUTE)) { props.setAttribute(ClassModelTags.ATTRIBUTE_ATTR, ipi.getXmlName()); props.setAttribute(ClassModelTags.ATTRIBUTE_HANDLER_ATTR, ipi.getXmlHandler()); writeTag(writer, ClassModelTags.ATTRIBUTE_PROPERTY_TAG, props, ipi.getComments()); } else if (ipi.getPropertyType().equals(PropertyType.ELEMENT)) { if (ipi.getComments() == null || ipi.getComments().getOpenTagComment() == null) { this.writerSupport.indent(writer, XMLWriterSupport.INDENT_ONLY); writer.write("<!-- property type is " + ipi.getType() + " -->"); writer.write(System.getProperty("line.separator", "\n")); } props.setAttribute(ClassModelTags.ELEMENT_ATTR, ipi.getXmlName()); writeTag(writer, ClassModelTags.ELEMENT_PROPERTY_TAG, props, ipi.getComments()); } else { props.setAttribute(ClassModelTags.LOOKUP_ATTR, ipi.getXmlName()); writeTag(writer, ClassModelTags.LOOKUP_PROPERTY_TAG, props, ipi.getComments()); } } /** * Returns the writer support object. * * @return The writer support object. */ public XMLWriterSupport getWriterSupport() { return this.writerSupport; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -