X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=aai-schema-gen%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fschemagen%2Fgenxsd%2FXSDElement.java;h=5fe3564fba778ba790072719c188490818cf17bb;hb=ef5474303d17f1d6fedc6d6bfb8fbc99fd19c0d7;hp=785ea68b075d315f26cfe000b09e9005a4b09f27;hpb=e4156ab1214268e88716d6153cd7216ef918d1eb;p=aai%2Fschema-service.git diff --git a/aai-schema-gen/src/main/java/org/onap/aai/schemagen/genxsd/XSDElement.java b/aai-schema-gen/src/main/java/org/onap/aai/schemagen/genxsd/XSDElement.java index 785ea68..5fe3564 100644 --- a/aai-schema-gen/src/main/java/org/onap/aai/schemagen/genxsd/XSDElement.java +++ b/aai-schema-gen/src/main/java/org/onap/aai/schemagen/genxsd/XSDElement.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,747 +17,787 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.schemagen.genxsd; import com.google.common.base.Joiner; -import org.apache.commons.lang3.StringUtils; -import org.onap.aai.setup.SchemaVersion; -import org.w3c.dom.*; - import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import java.util.Vector; +import org.apache.commons.lang3.StringUtils; +import org.onap.aai.setup.SchemaVersion; +import org.w3c.dom.Attr; +import org.w3c.dom.DOMException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.w3c.dom.TypeInfo; +import org.w3c.dom.UserDataHandler; public class XSDElement implements Element { - Element xmlElementElement; - String maxOccurs; - private static final int VALUE_NONE = 0; - private static final int VALUE_DESCRIPTION = 1; - private static final int VALUE_INDEXED_PROPS = 2; - private static final int VALUE_CONTAINER = 3; - private static final int VALUE_REQUIRES = 4; - private static final int VALUE_DSLSTARTNODE = 5; - - public XSDElement(Element xmlElementElement, String maxOccurs) { - super(); - this.xmlElementElement = xmlElementElement; - this.maxOccurs = maxOccurs; - } - - public XSDElement(Element xmlElementElement) { - super(); - this.xmlElementElement = xmlElementElement; - this.maxOccurs = null; - } - - public String name() { - return this.getAttribute("name"); - } - - public Vector getAddTypes(String version) { - String apiVersionFmt = "." + version + "."; - NamedNodeMap attributes = this.getAttributes(); - Vector addTypeV = new Vector(); // vector of 1 - String addType = null; - - for ( int j = 0; j < attributes.getLength(); ++j ) { + Element xmlElementElement; + String maxOccurs; + private static final int VALUE_NONE = 0; + private static final int VALUE_DESCRIPTION = 1; + private static final int VALUE_INDEXED_PROPS = 2; + private static final int VALUE_CONTAINER = 3; + private static final int VALUE_REQUIRES = 4; + private static final int VALUE_DSLSTARTNODE = 5; + + public XSDElement(Element xmlElementElement, String maxOccurs) { + super(); + this.xmlElementElement = xmlElementElement; + this.maxOccurs = maxOccurs; + } + + public XSDElement(Element xmlElementElement) { + super(); + this.xmlElementElement = xmlElementElement; + this.maxOccurs = null; + } + + public String name() { + return this.getAttribute("name"); + } + + public Vector getAddTypes(String version) { + String apiVersionFmt = "." + version + "."; + NamedNodeMap attributes = this.getAttributes(); + Vector addTypeV = new Vector<>(); // vector of 1 + String addType = null; + + for (int j = 0; j < attributes.getLength(); ++j) { Attr attr = (Attr) attributes.item(j); String attrName = attr.getNodeName(); String attrValue = attr.getNodeValue(); - if ( attrName.equals("type")) { - if ( attrValue.contains(apiVersionFmt) ) { - addType = attrValue.substring(attrValue.lastIndexOf('.')+1); - if ( addTypeV == null ) - addTypeV = new Vector(); - addTypeV.add(addType); - } + if ("type".equals(attrName)) { + if (attrValue.contains(apiVersionFmt)) { + addType = attrValue.substring(attrValue.lastIndexOf('.') + 1); + addTypeV.add(addType); + } } - } - return addTypeV; - } - - public String getRequiresProperty() { - String elementAlsoRequiresProperty = null; - NodeList xmlPropNodes = this.getElementsByTagName("xml-properties"); - - for ( int i = 0; i < xmlPropNodes.getLength(); ++i ) { - Element xmlPropElement = (Element)xmlPropNodes.item(i); - if (! xmlPropElement.getParentNode().getAttributes().getNamedItem("name").getNodeValue().equals(this.xmlElementElement.getAttribute("name"))){ - continue; - } - NodeList childNodes = xmlPropElement.getElementsByTagName("xml-property"); - - for ( int j = 0; j < childNodes.getLength(); ++j ) { - Element childElement = (Element)childNodes.item(j); - // get name - int useValue = VALUE_NONE; - NamedNodeMap attributes = childElement.getAttributes(); - for ( int k = 0; k < attributes.getLength(); ++k ) { - Attr attr = (Attr) attributes.item(k); - String attrName = attr.getNodeName(); - String attrValue = attr.getNodeValue(); - if ( attrName == null || attrValue == null ) - continue; - if ( attrName.equals("name") && attrValue.equals("requires")) { - useValue = VALUE_REQUIRES; - } - if ( useValue == VALUE_REQUIRES && attrName.equals("value")) { - elementAlsoRequiresProperty = attrValue; - } - } - } - } - return elementAlsoRequiresProperty; - } - - public String getPathDescriptionProperty() { - String pathDescriptionProperty = null; - NodeList xmlPropNodes = this.getElementsByTagName("xml-properties"); - - for ( int i = 0; i < xmlPropNodes.getLength(); ++i ) { - Element xmlPropElement = (Element)xmlPropNodes.item(i); - if (! xmlPropElement.getParentNode().getAttributes().getNamedItem("name").getNodeValue().equals(this.xmlElementElement.getAttribute("name"))){ - continue; - } + } + return addTypeV; + } + + public String getRequiresProperty() { + String elementAlsoRequiresProperty = null; + NodeList xmlPropNodes = this.getElementsByTagName("xml-properties"); + + for (int i = 0; i < xmlPropNodes.getLength(); ++i) { + Element xmlPropElement = (Element) xmlPropNodes.item(i); + if (!xmlPropElement.getParentNode().getAttributes().getNamedItem("name").getNodeValue() + .equals(this.xmlElementElement.getAttribute("name"))) { + continue; + } + NodeList childNodes = xmlPropElement.getElementsByTagName("xml-property"); + + for (int j = 0; j < childNodes.getLength(); ++j) { + Element childElement = (Element) childNodes.item(j); + // get name + int useValue = VALUE_NONE; + NamedNodeMap attributes = childElement.getAttributes(); + for (int k = 0; k < attributes.getLength(); ++k) { + Attr attr = (Attr) attributes.item(k); + String attrName = attr.getNodeName(); + String attrValue = attr.getNodeValue(); + if (attrName == null || attrValue == null) { + continue; + } + if (attrName.equals("name") && attrValue.equals("requires")) { + useValue = VALUE_REQUIRES; + } + if (useValue == VALUE_REQUIRES && attrName.equals("value")) { + elementAlsoRequiresProperty = attrValue; + } + } + } + } + return elementAlsoRequiresProperty; + } + + public String getPathDescriptionProperty() { + String pathDescriptionProperty = null; + NodeList xmlPropNodes = this.getElementsByTagName("xml-properties"); + + for (int i = 0; i < xmlPropNodes.getLength(); ++i) { + Element xmlPropElement = (Element) xmlPropNodes.item(i); + if (!xmlPropElement.getParentNode().getAttributes().getNamedItem("name").getNodeValue() + .equals(this.xmlElementElement.getAttribute("name"))) { + continue; + } // This stopped working, replaced with above - should figure out why... // if ( !xmlPropElement.getParentNode().isSameNode(this.xmlElementElement)) // continue; - NodeList childNodes = xmlPropElement.getElementsByTagName("xml-property"); - - for ( int j = 0; j < childNodes.getLength(); ++j ) { - Element childElement = (Element)childNodes.item(j); - // get name - int useValue = VALUE_NONE; - NamedNodeMap attributes = childElement.getAttributes(); - for ( int k = 0; k < attributes.getLength(); ++k ) { - Attr attr = (Attr) attributes.item(k); - String attrName = attr.getNodeName(); - String attrValue = attr.getNodeValue(); - if ( attrName == null || attrValue == null ) - continue; - if ( attrName.equals("name") && attrValue.equals("description")) { - useValue = VALUE_DESCRIPTION; - } - if ( useValue == VALUE_DESCRIPTION && attrName.equals("value")) { - pathDescriptionProperty = attrValue; - } - } - } - } - if ( pathDescriptionProperty != null ) { - //suppress non-printable characters in a description + NodeList childNodes = xmlPropElement.getElementsByTagName("xml-property"); + + for (int j = 0; j < childNodes.getLength(); ++j) { + Element childElement = (Element) childNodes.item(j); + // get name + int useValue = VALUE_NONE; + NamedNodeMap attributes = childElement.getAttributes(); + for (int k = 0; k < attributes.getLength(); ++k) { + Attr attr = (Attr) attributes.item(k); + String attrName = attr.getNodeName(); + String attrValue = attr.getNodeValue(); + if (attrName == null || attrValue == null) { + continue; + } + if (attrName.equals("name") && attrValue.equals("description")) { + useValue = VALUE_DESCRIPTION; + } + if (useValue == VALUE_DESCRIPTION && attrName.equals("value")) { + pathDescriptionProperty = attrValue; + } + } + } + } + if (pathDescriptionProperty != null) { + //suppress non-printable characters in a description String replaceDescription = pathDescriptionProperty.replaceAll("[^\\p{ASCII}]", ""); return replaceDescription; } - return pathDescriptionProperty; - } - - public Vector getProps(int needValue) { - Vector props = new Vector(); - NodeList xmlPropNodes = this.getElementsByTagName("xml-properties"); - - for ( int i = 0; i < xmlPropNodes.getLength(); ++i ) { - Element xmlPropElement = (Element)xmlPropNodes.item(i); - if ( !xmlPropElement.getParentNode().isSameNode(this.xmlElementElement)) - continue; - NodeList childNodes = xmlPropElement.getElementsByTagName("xml-property"); - for ( int j = 0; j < childNodes.getLength(); ++j ) { - Element childElement = (Element)childNodes.item(j); - // get name - int useValue = VALUE_NONE; - NamedNodeMap attributes = childElement.getAttributes(); - for ( int k = 0; k < attributes.getLength(); ++k ) { - Attr attr = (Attr) attributes.item(k); - String attrName = attr.getNodeName(); - String attrValue = attr.getNodeValue(); - if ( attrName == null || attrValue == null ) - continue; - if ( needValue == VALUE_INDEXED_PROPS && attrValue.equals("indexedProps")) { - useValue = VALUE_INDEXED_PROPS; - } else if ( needValue == VALUE_DSLSTARTNODE && attrValue.equals("dslStartNodeProps")) { - useValue = VALUE_DSLSTARTNODE; - } - if ( useValue != VALUE_NONE && attrName.equals("value")) { - props = getProps( attrValue ); - } - } - } - } - return props; - } - - private static Vector getProps( String attrValue ) - { - if ( attrValue == null ) - return null; - StringTokenizer st = new StringTokenizer( attrValue, ","); - if ( st.countTokens() == 0 ) - return null; - Vector result = new Vector(); - while ( st.hasMoreTokens()) { - result.add(st.nextToken()); - } - return result; - } - - public Vector getIndexedProps() { - return getProps(VALUE_INDEXED_PROPS); - } - - public Vector getDslStartNodeProps() { - return getProps(VALUE_DSLSTARTNODE); - } - - public String getContainerProperty() { - NodeList xmlPropNodes = this.getElementsByTagName("xml-properties"); - String container = null; - for ( int i = 0; i < xmlPropNodes.getLength(); ++i ) { - Element xmlPropElement = (Element)xmlPropNodes.item(i); - if ( !xmlPropElement.getParentNode().isSameNode(this.xmlElementElement)) - continue; - NodeList childNodes = xmlPropElement.getElementsByTagName("xml-property"); - for ( int j = 0; j < childNodes.getLength(); ++j ) { - Element childElement = (Element)childNodes.item(j); - // get name - int useValue = VALUE_NONE; - NamedNodeMap attributes = childElement.getAttributes(); - for ( int k = 0; k < attributes.getLength(); ++k ) { - Attr attr = (Attr) attributes.item(k); - String attrName = attr.getNodeName(); - String attrValue = attr.getNodeValue(); - if ( attrName == null || attrValue == null ) - continue; - if ( useValue == VALUE_CONTAINER && attrName.equals("value")) { - container = attrValue; - } - if ( attrValue.equals("container")) { - useValue = VALUE_CONTAINER; - } - } - } - } - return container; - } - - public String getQueryParamYAML() { - StringBuffer sbParameter = new StringBuffer(); - sbParameter.append((" - name: " + this.getAttribute("name") + "\n")); - sbParameter.append((" in: query\n")); - if ( this.getAttribute("description") != null && this.getAttribute("description").length() > 0 ) - sbParameter.append((" description: " + this.getAttribute("description") + "\n")); - else - sbParameter.append((" description: n/a\n")); - sbParameter.append((" required: false\n")); - if ( ("java.lang.String").equals(this.getAttribute("type"))) - sbParameter.append(" type: string\n"); - if ( ("java.lang.Long").equals(this.getAttribute("type"))) { - sbParameter.append(" type: integer\n"); - sbParameter.append(" format: int64\n"); - } - if ( ("java.lang.Integer").equals(this.getAttribute("type"))) { - sbParameter.append(" type: integer\n"); - sbParameter.append(" format: int32\n"); - } - if ( ("java.lang.Boolean").equals(this.getAttribute("type"))) { - sbParameter.append(" type: boolean\n"); - } - return sbParameter.toString(); - } - - public String getPathParamYAML(String elementDescription) { - return getPathParamYAML(elementDescription, null); - } - - public String getPathParamYAML(String elementDescription, String overrideName) { - // updated to allow caller to provide parameter name to use in API - StringBuffer sbParameter = new StringBuffer(); - if ( overrideName == null ) { - overrideName = this.getAttribute("name"); - } - sbParameter.append((" - name: " + overrideName + "\n")); - sbParameter.append((" in: path\n")); - if ( elementDescription != null && elementDescription.length() > 0 ) - sbParameter.append((" description: " + elementDescription + "\n")); - sbParameter.append((" required: true\n")); - if ( ("java.lang.String").equals(this.getAttribute("type"))) - sbParameter.append(" type: string\n"); - if ( ("java.lang.Long").equals(this.getAttribute("type"))) { - sbParameter.append(" type: integer\n"); - sbParameter.append(" format: int64\n"); - } - if ( ("java.lang.Integer").equals(this.getAttribute("type"))) { - sbParameter.append(" type: integer\n"); - sbParameter.append(" format: int32\n"); - } - if ( ("java.lang.Boolean").equals(this.getAttribute("type"))) { - sbParameter.append(" type: boolean\n"); - } - if(StringUtils.isNotBlank(this.getAttribute("name"))) { - sbParameter.append(" example: "+"__"+this.getAttribute("name").toUpperCase()+"__"+"\n"); - } - return sbParameter.toString(); - } - - public String getHTMLElement(SchemaVersion v, boolean useAnnotation, HTMLfromOXM driver) { - StringBuffer sbElement = new StringBuffer(); - String elementName = this.getAttribute("name"); - String elementType = this.getAttribute("type"); - String elementContainerType = this.getAttribute("container-type"); - String elementIsRequired = this.getAttribute("required"); - String addType = elementType.contains("." + v.toString() + ".") ? elementType.substring(elementType.lastIndexOf('.')+1) : null; - - if ( addType != null ) { - sbElement.append(" " + OxmFileProcessor.LINE_SEPARATOR : ""); - sbElement.append(annotation); - sbElement.append(StringUtils.isNotEmpty(annotation) ? " " + OxmFileProcessor.LINE_SEPARATOR : "/>" + OxmFileProcessor.LINE_SEPARATOR ); - } else { - sbElement.append("/>" + OxmFileProcessor.LINE_SEPARATOR); - } - return this.getHTMLElementWrapper(sbElement.toString(), v, useAnnotation); + return pathDescriptionProperty; + } + + public Vector getProps(int needValue) { + Vector props = new Vector(); + NodeList xmlPropNodes = this.getElementsByTagName("xml-properties"); + + for (int i = 0; i < xmlPropNodes.getLength(); ++i) { + Element xmlPropElement = (Element) xmlPropNodes.item(i); + if (!xmlPropElement.getParentNode().isSameNode(this.xmlElementElement)) { + continue; + } + NodeList childNodes = xmlPropElement.getElementsByTagName("xml-property"); + for (int j = 0; j < childNodes.getLength(); ++j) { + Element childElement = (Element) childNodes.item(j); + // get name + int useValue = VALUE_NONE; + NamedNodeMap attributes = childElement.getAttributes(); + for (int k = 0; k < attributes.getLength(); ++k) { + Attr attr = (Attr) attributes.item(k); + String attrName = attr.getNodeName(); + String attrValue = attr.getNodeValue(); + if (attrName == null || attrValue == null) { + continue; + } + if (needValue == VALUE_INDEXED_PROPS && attrValue.equals("indexedProps")) { + useValue = VALUE_INDEXED_PROPS; + } else if (needValue == VALUE_DSLSTARTNODE && + attrValue.equals("dslStartNodeProps")) { + useValue = VALUE_DSLSTARTNODE; + } + if (useValue != VALUE_NONE && attrName.equals("value")) { + props = getProps(attrValue); + } + } + } + } + return props; + } + + private static Vector getProps(String attrValue) { + if (attrValue == null) { + return null; + } + StringTokenizer st = new StringTokenizer(attrValue, ","); + if (st.countTokens() == 0) { + return null; + } + Vector result = new Vector(); + while (st.hasMoreTokens()) { + result.add(st.nextToken()); + } + return result; + } + + public Vector getIndexedProps() { + return getProps(VALUE_INDEXED_PROPS); + } + + public Vector getDslStartNodeProps() { + return getProps(VALUE_DSLSTARTNODE); + } + + public String getContainerProperty() { + NodeList xmlPropNodes = this.getElementsByTagName("xml-properties"); + String container = null; + for (int i = 0; i < xmlPropNodes.getLength(); ++i) { + Element xmlPropElement = (Element) xmlPropNodes.item(i); + if (!xmlPropElement.getParentNode().isSameNode(this.xmlElementElement)) { + continue; + } + NodeList childNodes = xmlPropElement.getElementsByTagName("xml-property"); + for (int j = 0; j < childNodes.getLength(); ++j) { + Element childElement = (Element) childNodes.item(j); + // get name + int useValue = VALUE_NONE; + NamedNodeMap attributes = childElement.getAttributes(); + for (int k = 0; k < attributes.getLength(); ++k) { + Attr attr = (Attr) attributes.item(k); + String attrName = attr.getNodeName(); + String attrValue = attr.getNodeValue(); + if (attrName == null || attrValue == null) { + continue; + } + if (useValue == VALUE_CONTAINER && attrName.equals("value")) { + container = attrValue; + } + if (attrValue.equals("container")) { + useValue = VALUE_CONTAINER; + } + } + } + } + return container; + } + + public String getQueryParamYAML() { + StringBuilder sbParameter = new StringBuilder(); + sbParameter.append(" - name: ").append(this.getAttribute("name")).append("\n"); + sbParameter.append((" in: query\n")); + if (this.getAttribute("description") != null && + this.getAttribute("description").length() > 0) { + sbParameter.append(" description: ").append(this.getAttribute("description")) + .append("\n"); + } else { + sbParameter.append((" description: n/a\n")); + } + sbParameter.append((" required: false\n")); + if (("java.lang.String").equals(this.getAttribute("type"))) { + sbParameter.append(" type: string\n"); + } + if (("java.lang.Long").equals(this.getAttribute("type"))) { + sbParameter.append(" type: integer\n"); + sbParameter.append(" format: int64\n"); + } + if (("java.lang.Integer").equals(this.getAttribute("type"))) { + sbParameter.append(" type: integer\n"); + sbParameter.append(" format: int32\n"); + } + if (("java.lang.Boolean").equals(this.getAttribute("type"))) { + sbParameter.append(" type: boolean\n"); + } + return sbParameter.toString(); + } + + public String getPathParamYAML(String elementDescription) { + return getPathParamYAML(elementDescription, null); + } + + public String getPathParamYAML(String elementDescription, String overrideName) { + // updated to allow caller to provide parameter name to use in API + StringBuilder sbParameter = new StringBuilder(); + if (overrideName == null) { + overrideName = this.getAttribute("name"); + } + sbParameter.append(" - name: ").append(overrideName).append("\n"); + sbParameter.append((" in: path\n")); + if (elementDescription != null && elementDescription.length() > 0) { + sbParameter.append(" description: ").append(elementDescription).append("\n"); + } + sbParameter.append((" required: true\n")); + if (("java.lang.String").equals(this.getAttribute("type"))) { + sbParameter.append(" type: string\n"); + } + if (("java.lang.Long").equals(this.getAttribute("type"))) { + sbParameter.append(" type: integer\n"); + sbParameter.append(" format: int64\n"); + } + if (("java.lang.Integer").equals(this.getAttribute("type"))) { + sbParameter.append(" type: integer\n"); + sbParameter.append(" format: int32\n"); + } + if (("java.lang.Boolean").equals(this.getAttribute("type"))) { + sbParameter.append(" type: boolean\n"); + } + if (StringUtils.isNotBlank(this.getAttribute("name"))) { + sbParameter.append(" example: " + "__") + .append(this.getAttribute("name").toUpperCase()).append("__").append("\n"); + } + return sbParameter.toString(); + } + + public String getHTMLElement(SchemaVersion v, boolean useAnnotation, HTMLfromOXM driver) { + StringBuilder sbElement = new StringBuilder(); + String elementName = this.getAttribute("name"); + String elementType = this.getAttribute("type"); + String elementContainerType = this.getAttribute("container-type"); + String elementIsRequired = this.getAttribute("required"); + String addType = elementType.contains("." + v.toString() + ".") ? + elementType.substring(elementType.lastIndexOf('.') + 1) : null; + + if (addType != null) { + sbElement.append(" " + OxmFileProcessor.LINE_SEPARATOR : ""); + sbElement.append(annotation); + sbElement.append(StringUtils.isNotEmpty(annotation) ? + " " + OxmFileProcessor.LINE_SEPARATOR : + "/>" + OxmFileProcessor.LINE_SEPARATOR); + } else { + sbElement.append("/>").append(OxmFileProcessor.LINE_SEPARATOR); + } + return this.getHTMLElementWrapper(sbElement.toString(), v, useAnnotation); // return sbElement.toString(); - } - - public String getHTMLElementWrapper(String unwrappedElement, SchemaVersion v, boolean useAnnotation) { - - NodeList childNodes = this.getElementsByTagName("xml-element-wrapper"); - - String xmlElementWrapper = null; - if ( childNodes.getLength() > 0 ) { - Element childElement = (Element)childNodes.item(0); - // get name - xmlElementWrapper = childElement == null ? null : childElement.getAttribute("name"); - } - if(xmlElementWrapper == null) - return unwrappedElement; - - StringBuffer sbElement = new StringBuffer(); - sbElement.append(" " + OxmFileProcessor.LINE_SEPARATOR); - sbElement.append(" " + OxmFileProcessor.LINE_SEPARATOR); - if(useAnnotation) { - XSDElement javaTypeElement = new XSDElement((Element)this.getParentNode(), maxOccurs); - sbElement.append(javaTypeElement.getHTMLAnnotation("class", " ")); - } - sbElement.append(" " + OxmFileProcessor.LINE_SEPARATOR); - sbElement.append(" "); - sbElement.append(unwrappedElement); - sbElement.append(" " + OxmFileProcessor.LINE_SEPARATOR); - sbElement.append(" " + OxmFileProcessor.LINE_SEPARATOR); - sbElement.append(" " + OxmFileProcessor.LINE_SEPARATOR); - return sbElement.toString(); - } - - public String getHTMLAnnotation(String target, String indentation) { - StringBuffer sb = new StringBuffer(); - List metadata = new ArrayList<>(); - if("true".equals(this.getAttribute("xml-key")) ) { - metadata.add("isKey=true"); - } - - NodeList xmlPropTags = this.getElementsByTagName("xml-properties"); - Element xmlPropElement = null; - for ( int i = 0; i < xmlPropTags.getLength(); ++i ) { - xmlPropElement = (Element)xmlPropTags.item(i); - if (! xmlPropElement.getParentNode().getAttributes().getNamedItem("name").getNodeValue().equals(this.xmlElementElement.getAttribute("name"))) - continue; - else - break; - } - if(xmlPropElement != null) { - NodeList xmlProperties = xmlPropElement.getElementsByTagName("xml-property"); - for (int i = 0; i < xmlProperties.getLength(); i++) { - Element item = (Element)xmlProperties.item(i); - String name = item.getAttribute("name"); - String value = item.getAttribute("value"); - if (name.equals("abstract")) { - name = "isAbstract"; - } else if (name.equals("extends")) { - name = "extendsFrom"; - } - metadata.add(name + "=\"" + value.replaceAll("&", "&") + "\""); - } - } - if(metadata.size() == 0) { - return ""; - } - sb.append(indentation +"" + OxmFileProcessor.LINE_SEPARATOR); - sb.append( - indentation + " " + OxmFileProcessor.LINE_SEPARATOR + - indentation + " @org.onap.aai.annotations.Metadata(" + Joiner.on(",").join(metadata) + ")" + OxmFileProcessor.LINE_SEPARATOR + - indentation + " " + OxmFileProcessor.LINE_SEPARATOR); - sb.append(indentation +"" + OxmFileProcessor.LINE_SEPARATOR); - return sb.toString(); - } - - public String getTypePropertyYAML(boolean isDslStartNode) { - StringBuffer sbProperties = new StringBuffer(); - sbProperties.append(" " + this.getAttribute("name") + ":\n"); - sbProperties.append(" type: "); - - if ( ("java.lang.String").equals(this.getAttribute("type"))) - sbProperties.append("string\n"); - else if ( ("java.lang.Long").equals(this.getAttribute("type"))) { - sbProperties.append("integer\n"); - sbProperties.append(" format: int64\n"); - } - else if ( ("java.lang.Integer").equals(this.getAttribute("type"))){ - sbProperties.append("integer\n"); - sbProperties.append(" format: int32\n"); - } - else if ( ("java.lang.Boolean").equals(this.getAttribute("type"))) - sbProperties.append("boolean\n"); - String attrDescription = this.getPathDescriptionProperty(); - if ( attrDescription != null && attrDescription.length() > 0 ) { - if ( !isDslStartNode ) { - sbProperties.append(" description: " + attrDescription + "\n"); - } else { - sbProperties.append(" description: |\n"); - sbProperties.append(" " + attrDescription + "\n"); - sbProperties.append(" *This property can be used as a filter to find the start node for a dsl query\n"); - } - } else { - if ( isDslStartNode ) { - sbProperties.append(" description: |\n"); - sbProperties.append(" \n"); - sbProperties.append(" *This property can be used as a filter to find the start node for a dsl query\n"); - } - } - String elementAlsoRequiresProperty=this.getRequiresProperty(); - if ( StringUtils.isNotEmpty(elementAlsoRequiresProperty) ) - sbProperties.append(" also requires: " + elementAlsoRequiresProperty + "\n"); - return sbProperties.toString(); - } - - public boolean isStandardType() - { - switch ( this.getAttribute("type") ) { - case "java.lang.String": - case "java.lang.Long": - case "java.lang.Integer": - case"java.lang.Boolean": - return true; - } - return false; - } - - @Override - public String getNodeName() { - return xmlElementElement.getNodeName(); - } - - @Override - public String getNodeValue() throws DOMException { - return xmlElementElement.getNodeValue(); - } - - @Override - public void setNodeValue(String nodeValue) throws DOMException { - xmlElementElement.setNodeValue(nodeValue); - } - - @Override - public short getNodeType() { - return xmlElementElement.getNodeType(); - } - - @Override - public Node getParentNode() { - return xmlElementElement.getParentNode(); - } - - @Override - public NodeList getChildNodes() { - return xmlElementElement.getChildNodes(); - } - - @Override - public Node getFirstChild() { - return xmlElementElement.getFirstChild(); - } - - @Override - public Node getLastChild() { - return xmlElementElement.getLastChild(); - } - - @Override - public Node getPreviousSibling() { - return xmlElementElement.getPreviousSibling(); - } - - @Override - public Node getNextSibling() { - return xmlElementElement.getNextSibling(); - } - - @Override - public NamedNodeMap getAttributes() { - return xmlElementElement.getAttributes(); - } - - @Override - public Document getOwnerDocument() { - return xmlElementElement.getOwnerDocument(); - } - - @Override - public Node insertBefore(Node newChild, Node refChild) throws DOMException { - return xmlElementElement.insertBefore(newChild, refChild); - } - - @Override - public Node replaceChild(Node newChild, Node oldChild) throws DOMException { - return xmlElementElement.replaceChild(newChild, oldChild); - } - - @Override - public Node removeChild(Node oldChild) throws DOMException { - return xmlElementElement.removeChild(oldChild); - } - - @Override - public Node appendChild(Node newChild) throws DOMException { - return xmlElementElement.appendChild(newChild); - } - - @Override - public boolean hasChildNodes() { - return xmlElementElement.hasChildNodes(); - } - - @Override - public Node cloneNode(boolean deep) { - return xmlElementElement.cloneNode(deep); - } - - @Override - public void normalize() { - xmlElementElement.normalize(); - } - - @Override - public boolean isSupported(String feature, String version) { - return xmlElementElement.isSupported(feature, version); - } - - @Override - public String getNamespaceURI() { - return xmlElementElement.getNamespaceURI(); - } - - @Override - public String getPrefix() { - return xmlElementElement.getPrefix(); - } - - @Override - public void setPrefix(String prefix) throws DOMException { - xmlElementElement.setPrefix(prefix); - } - - @Override - public String getLocalName() { - - return xmlElementElement.getLocalName(); - } - - @Override - public boolean hasAttributes() { - return xmlElementElement.hasAttributes(); - } - - @Override - public String getBaseURI() { - return xmlElementElement.getBaseURI(); - } - - @Override - public short compareDocumentPosition(Node other) throws DOMException { - return xmlElementElement.compareDocumentPosition(other); - } - - @Override - public String getTextContent() throws DOMException { - return xmlElementElement.getTextContent(); - } - - @Override - public void setTextContent(String textContent) throws DOMException { - xmlElementElement.setTextContent(textContent); - } - - @Override - public boolean isSameNode(Node other) { - return xmlElementElement.isSameNode(other); - } - - @Override - public String lookupPrefix(String namespaceURI) { - return xmlElementElement.lookupPrefix(namespaceURI); - } - - @Override - public boolean isDefaultNamespace(String namespaceURI) { - return xmlElementElement.isDefaultNamespace(namespaceURI); - } - - @Override - public String lookupNamespaceURI(String prefix) { - return xmlElementElement.lookupNamespaceURI(prefix); - } - - @Override - public boolean isEqualNode(Node arg) { - return xmlElementElement.isEqualNode(arg); - } - - @Override - public Object getFeature(String feature, String version) { - return xmlElementElement.getFeature(feature, version); - } - - @Override - public Object setUserData(String key, Object data, UserDataHandler handler) { - return xmlElementElement.setUserData(key, data, handler); - } - - @Override - public Object getUserData(String key) { - return xmlElementElement.getUserData(key); - } - - @Override - public String getTagName() { - return xmlElementElement.getTagName(); - } - - @Override - public String getAttribute(String name) { - return xmlElementElement.getAttribute(name); - } - - @Override - public void setAttribute(String name, String value) throws DOMException { - xmlElementElement.setAttribute(name, value); - } - - @Override - public void removeAttribute(String name) throws DOMException { - xmlElementElement.removeAttribute(name); - } - - @Override - public Attr getAttributeNode(String name) { - return xmlElementElement.getAttributeNode(name); - } - - @Override - public Attr setAttributeNode(Attr newAttr) throws DOMException { - return xmlElementElement.setAttributeNode(newAttr); - } - - @Override - public Attr removeAttributeNode(Attr oldAttr) throws DOMException { - return xmlElementElement.removeAttributeNode(oldAttr); - } - - @Override - public NodeList getElementsByTagName(String name) { - return xmlElementElement.getElementsByTagName(name); - } - - @Override - public String getAttributeNS(String namespaceURI, String localName) throws DOMException { - return xmlElementElement.getAttributeNS(namespaceURI, localName); - } - - @Override - public void setAttributeNS(String namespaceURI, String qualifiedName, String value) throws DOMException { - xmlElementElement.setAttributeNS(namespaceURI, qualifiedName, value); - return; - } - - @Override - public void removeAttributeNS(String namespaceURI, String localName) throws DOMException { - xmlElementElement.removeAttributeNS(namespaceURI, localName); - } - - @Override - public Attr getAttributeNodeNS(String namespaceURI, String localName) throws DOMException { - return xmlElementElement.getAttributeNodeNS(namespaceURI, localName); - } - - @Override - public Attr setAttributeNodeNS(Attr newAttr) throws DOMException { - return xmlElementElement.setAttributeNodeNS(newAttr); - } - - @Override - public NodeList getElementsByTagNameNS(String namespaceURI, String localName) throws DOMException { - return xmlElementElement.getElementsByTagNameNS(namespaceURI, localName); - } - - @Override - public boolean hasAttribute(String name) { - return xmlElementElement.hasAttribute(name); - } - - @Override - public boolean hasAttributeNS(String namespaceURI, String localName) throws DOMException { - return xmlElementElement.hasAttributeNS(namespaceURI, localName); - } - - @Override - public TypeInfo getSchemaTypeInfo() { - return xmlElementElement.getSchemaTypeInfo(); - } - - @Override - public void setIdAttribute(String name, boolean isId) throws DOMException { - xmlElementElement.setIdAttribute(name, isId); - - } - - @Override - public void setIdAttributeNS(String namespaceURI, String localName, boolean isId) throws DOMException { - xmlElementElement.setIdAttributeNS(namespaceURI, localName, isId); - } - - @Override - public void setIdAttributeNode(Attr idAttr, boolean isId) throws DOMException { - xmlElementElement.setIdAttributeNode(idAttr, isId); - return; - } - - -} \ No newline at end of file + } + + public String getHTMLElementWrapper(String unwrappedElement, SchemaVersion v, + boolean useAnnotation) { + + NodeList childNodes = this.getElementsByTagName("xml-element-wrapper"); + + String xmlElementWrapper = null; + if (childNodes.getLength() > 0) { + Element childElement = (Element) childNodes.item(0); + // get name + xmlElementWrapper = childElement == null ? null : childElement.getAttribute("name"); + } + if (xmlElementWrapper == null) { + return unwrappedElement; + } + + StringBuilder sbElement = new StringBuilder(); + sbElement.append(" ").append(OxmFileProcessor.LINE_SEPARATOR); + sbElement.append(" ").append(OxmFileProcessor.LINE_SEPARATOR); + if (useAnnotation) { + XSDElement javaTypeElement = new XSDElement((Element) this.getParentNode(), maxOccurs); + sbElement.append(javaTypeElement.getHTMLAnnotation("class", " ")); + } + sbElement.append(" ").append(OxmFileProcessor.LINE_SEPARATOR); + sbElement.append(" "); + sbElement.append(unwrappedElement); + sbElement.append(" ").append(OxmFileProcessor.LINE_SEPARATOR); + sbElement.append(" ").append(OxmFileProcessor.LINE_SEPARATOR); + sbElement.append(" ").append(OxmFileProcessor.LINE_SEPARATOR); + return sbElement.toString(); + } + + public String getHTMLAnnotation(String target, String indentation) { + StringBuilder sb = new StringBuilder(); + List metadata = new ArrayList<>(); + if ("true".equals(this.getAttribute("xml-key"))) { + metadata.add("isKey=true"); + } + + NodeList xmlPropTags = this.getElementsByTagName("xml-properties"); + Element xmlPropElement = null; + for (int i = 0; i < xmlPropTags.getLength(); ++i) { + xmlPropElement = (Element) xmlPropTags.item(i); + if (xmlPropElement.getParentNode().getAttributes().getNamedItem("name").getNodeValue() + .equals(this.xmlElementElement.getAttribute("name"))) { + break; + } + } + if (xmlPropElement != null) { + NodeList xmlProperties = xmlPropElement.getElementsByTagName("xml-property"); + for (int i = 0; i < xmlProperties.getLength(); i++) { + Element item = (Element) xmlProperties.item(i); + String name = item.getAttribute("name"); + String value = item.getAttribute("value"); + if (name.equals("abstract")) { + name = "isAbstract"; + } else if (name.equals("extends")) { + name = "extendsFrom"; + } + metadata.add(name + "=\"" + value.replaceAll("&", "&") + "\""); + } + } + if (metadata.size() == 0) { + return ""; + } + sb.append(indentation).append("").append(OxmFileProcessor.LINE_SEPARATOR); + sb.append(indentation).append(" ").append(OxmFileProcessor.LINE_SEPARATOR) + .append(indentation).append(" @org.onap.aai.annotations.Metadata(").append(Joiner.on(",").join(metadata)) + .append(")").append(OxmFileProcessor.LINE_SEPARATOR) + .append(indentation).append(" ").append(OxmFileProcessor.LINE_SEPARATOR); + sb.append(indentation).append("").append(OxmFileProcessor.LINE_SEPARATOR); + return sb.toString(); + } + + public String getTypePropertyYAML(boolean isDslStartNode) { + StringBuilder sbProperties = new StringBuilder(); + sbProperties.append(" ").append(this.getAttribute("name")).append(":\n"); + sbProperties.append(" type: "); + + if (("java.lang.String").equals(this.getAttribute("type"))) { + sbProperties.append("string\n"); + } else if (("java.lang.Long").equals(this.getAttribute("type"))) { + sbProperties.append("integer\n"); + sbProperties.append(" format: int64\n"); + } else if (("java.lang.Integer").equals(this.getAttribute("type"))) { + sbProperties.append("integer\n"); + sbProperties.append(" format: int32\n"); + } else if (("java.lang.Boolean").equals(this.getAttribute("type"))) { + sbProperties.append("boolean\n"); + } + String attrDescription = this.getPathDescriptionProperty(); + if (attrDescription != null && attrDescription.length() > 0) { + if (!isDslStartNode) { + sbProperties.append(" description: ").append(attrDescription).append("\n"); + } else { + sbProperties.append(" description: |\n"); + sbProperties.append(" ").append(attrDescription).append("\n"); + sbProperties.append( + " *This property can be used as a filter to find the start node for a dsl query\n"); + } + } else { + if (isDslStartNode) { + sbProperties.append(" description: |\n"); + sbProperties.append(" \n"); + sbProperties.append( + " *This property can be used as a filter to find the start node for a dsl query\n"); + } + } + String elementAlsoRequiresProperty = this.getRequiresProperty(); + if (StringUtils.isNotEmpty(elementAlsoRequiresProperty)) { + sbProperties.append(" also requires: ").append(elementAlsoRequiresProperty) + .append("\n"); + } + return sbProperties.toString(); + } + + public boolean isStandardType() { + switch (this.getAttribute("type")) { + case "java.lang.String": + case "java.lang.Long": + case "java.lang.Integer": + case "java.lang.Boolean": + return true; + } + return false; + } + + @Override + public String getNodeName() { + return xmlElementElement.getNodeName(); + } + + @Override + public String getNodeValue() throws DOMException { + return xmlElementElement.getNodeValue(); + } + + @Override + public void setNodeValue(String nodeValue) throws DOMException { + xmlElementElement.setNodeValue(nodeValue); + } + + @Override + public short getNodeType() { + return xmlElementElement.getNodeType(); + } + + @Override + public Node getParentNode() { + return xmlElementElement.getParentNode(); + } + + @Override + public NodeList getChildNodes() { + return xmlElementElement.getChildNodes(); + } + + @Override + public Node getFirstChild() { + return xmlElementElement.getFirstChild(); + } + + @Override + public Node getLastChild() { + return xmlElementElement.getLastChild(); + } + + @Override + public Node getPreviousSibling() { + return xmlElementElement.getPreviousSibling(); + } + + @Override + public Node getNextSibling() { + return xmlElementElement.getNextSibling(); + } + + @Override + public NamedNodeMap getAttributes() { + return xmlElementElement.getAttributes(); + } + + @Override + public Document getOwnerDocument() { + return xmlElementElement.getOwnerDocument(); + } + + @Override + public Node insertBefore(Node newChild, Node refChild) throws DOMException { + return xmlElementElement.insertBefore(newChild, refChild); + } + + @Override + public Node replaceChild(Node newChild, Node oldChild) throws DOMException { + return xmlElementElement.replaceChild(newChild, oldChild); + } + + @Override + public Node removeChild(Node oldChild) throws DOMException { + return xmlElementElement.removeChild(oldChild); + } + + @Override + public Node appendChild(Node newChild) throws DOMException { + return xmlElementElement.appendChild(newChild); + } + + @Override + public boolean hasChildNodes() { + return xmlElementElement.hasChildNodes(); + } + + @Override + public Node cloneNode(boolean deep) { + return xmlElementElement.cloneNode(deep); + } + + @Override + public void normalize() { + xmlElementElement.normalize(); + } + + @Override + public boolean isSupported(String feature, String version) { + return xmlElementElement.isSupported(feature, version); + } + + @Override + public String getNamespaceURI() { + return xmlElementElement.getNamespaceURI(); + } + + @Override + public String getPrefix() { + return xmlElementElement.getPrefix(); + } + + @Override + public void setPrefix(String prefix) throws DOMException { + xmlElementElement.setPrefix(prefix); + } + + @Override + public String getLocalName() { + + return xmlElementElement.getLocalName(); + } + + @Override + public boolean hasAttributes() { + return xmlElementElement.hasAttributes(); + } + + @Override + public String getBaseURI() { + return xmlElementElement.getBaseURI(); + } + + @Override + public short compareDocumentPosition(Node other) throws DOMException { + return xmlElementElement.compareDocumentPosition(other); + } + + @Override + public String getTextContent() throws DOMException { + return xmlElementElement.getTextContent(); + } + + @Override + public void setTextContent(String textContent) throws DOMException { + xmlElementElement.setTextContent(textContent); + } + + @Override + public boolean isSameNode(Node other) { + return xmlElementElement.isSameNode(other); + } + + @Override + public String lookupPrefix(String namespaceURI) { + return xmlElementElement.lookupPrefix(namespaceURI); + } + + @Override + public boolean isDefaultNamespace(String namespaceURI) { + return xmlElementElement.isDefaultNamespace(namespaceURI); + } + + @Override + public String lookupNamespaceURI(String prefix) { + return xmlElementElement.lookupNamespaceURI(prefix); + } + + @Override + public boolean isEqualNode(Node arg) { + return xmlElementElement.isEqualNode(arg); + } + + @Override + public Object getFeature(String feature, String version) { + return xmlElementElement.getFeature(feature, version); + } + + @Override + public Object setUserData(String key, Object data, UserDataHandler handler) { + return xmlElementElement.setUserData(key, data, handler); + } + + @Override + public Object getUserData(String key) { + return xmlElementElement.getUserData(key); + } + + @Override + public String getTagName() { + return xmlElementElement.getTagName(); + } + + @Override + public String getAttribute(String name) { + return xmlElementElement.getAttribute(name); + } + + @Override + public void setAttribute(String name, String value) throws DOMException { + xmlElementElement.setAttribute(name, value); + } + + @Override + public void removeAttribute(String name) throws DOMException { + xmlElementElement.removeAttribute(name); + } + + @Override + public Attr getAttributeNode(String name) { + return xmlElementElement.getAttributeNode(name); + } + + @Override + public Attr setAttributeNode(Attr newAttr) throws DOMException { + return xmlElementElement.setAttributeNode(newAttr); + } + + @Override + public Attr removeAttributeNode(Attr oldAttr) throws DOMException { + return xmlElementElement.removeAttributeNode(oldAttr); + } + + @Override + public NodeList getElementsByTagName(String name) { + return xmlElementElement.getElementsByTagName(name); + } + + @Override + public String getAttributeNS(String namespaceURI, String localName) throws DOMException { + return xmlElementElement.getAttributeNS(namespaceURI, localName); + } + + @Override + public void setAttributeNS(String namespaceURI, String qualifiedName, String value) + throws DOMException { + xmlElementElement.setAttributeNS(namespaceURI, qualifiedName, value); + } + + @Override + public void removeAttributeNS(String namespaceURI, String localName) throws DOMException { + xmlElementElement.removeAttributeNS(namespaceURI, localName); + } + + @Override + public Attr getAttributeNodeNS(String namespaceURI, String localName) throws DOMException { + return xmlElementElement.getAttributeNodeNS(namespaceURI, localName); + } + + @Override + public Attr setAttributeNodeNS(Attr newAttr) throws DOMException { + return xmlElementElement.setAttributeNodeNS(newAttr); + } + + @Override + public NodeList getElementsByTagNameNS(String namespaceURI, String localName) + throws DOMException { + return xmlElementElement.getElementsByTagNameNS(namespaceURI, localName); + } + + @Override + public boolean hasAttribute(String name) { + return xmlElementElement.hasAttribute(name); + } + + @Override + public boolean hasAttributeNS(String namespaceURI, String localName) throws DOMException { + return xmlElementElement.hasAttributeNS(namespaceURI, localName); + } + + @Override + public TypeInfo getSchemaTypeInfo() { + return xmlElementElement.getSchemaTypeInfo(); + } + + @Override + public void setIdAttribute(String name, boolean isId) throws DOMException { + xmlElementElement.setIdAttribute(name, isId); + + } + + @Override + public void setIdAttributeNS(String namespaceURI, String localName, boolean isId) + throws DOMException { + xmlElementElement.setIdAttributeNS(namespaceURI, localName, isId); + } + + @Override + public void setIdAttributeNode(Attr idAttr, boolean isId) throws DOMException { + xmlElementElement.setIdAttributeNode(idAttr, isId); + } + + +}