X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ajsc-aai%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Faai%2Fworkarounds%2FModifyOXMProperties.java;fp=ajsc-aai%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Faai%2Fworkarounds%2FModifyOXMProperties.java;h=494ada3a1d8f773e4296ac83bc75438c6622890c;hb=0cfe6edb0ac361998bc567067b4c7ce780b835fa;hp=4f42afbf539b8290a308794fb8458c41b5213e82;hpb=b7d0116d228ba50d89429c615ff3e88eec30885e;p=aai%2Faai-service.git diff --git a/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/ModifyOXMProperties.java b/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/ModifyOXMProperties.java index 4f42afb..494ada3 100644 --- a/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/ModifyOXMProperties.java +++ b/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/ModifyOXMProperties.java @@ -20,13 +20,13 @@ package org.openecomp.aai.workarounds; +import com.google.common.base.CaseFormat; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -41,180 +41,180 @@ import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; - import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import com.google.common.base.CaseFormat; - public class ModifyOXMProperties { - private static String[] versions = new String[]{"v8"}; - - /** - * The main method. - * - * @param args the arguments - * @throws SAXException the SAX exception - * @throws IOException Signals that an I/O exception has occurred. - * @throws ParserConfigurationException the parser configuration exception - * @throws XPathExpressionException the x path expression exception - * @throws TransformerException the transformer exception - */ - public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, XPathExpressionException, TransformerException { - - for (int i = 0; i < versions.length; i++) { - process(versions[i]); - } - - - - } - - /** - * Process. - * - * @param version the version - * @throws SAXException the SAX exception - * @throws IOException Signals that an I/O exception has occurred. - * @throws ParserConfigurationException the parser configuration exception - * @throws XPathExpressionException the x path expression exception - * @throws TransformerException the transformer exception - */ - private static void process(String version) throws SAXException, IOException, ParserConfigurationException, XPathExpressionException, TransformerException { - - - - String filepath = "bundleconfig-local/etc/oxm/aai_oxm_" + version + ".xml"; - DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); - docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); - Document doc = docBuilder.parse(filepath); - XPath xpath = XPathFactory.newInstance().newXPath(); - NodeList list = doc.getElementsByTagName("java-type"); - //Find namespaces - restrict to inventory - //XPathExpression expr = xpath.compile("//java-type[java-attributes[count(xml-element[contains(@type, 'aai.openecomp.org')])=count(./xml-element)][count(xml-element) > 1]]/xml-root-element"); - XPathExpression expr = xpath.compile("//java-type[@name='Inventory']/java-attributes/xml-element/@name"); - Object result = expr.evaluate(doc, XPathConstants.NODESET); - NodeList nodes = (NodeList) result; - String[] temp = null; - List itemsUnderInventory = new ArrayList<>(); - for (int i = 0; i < nodes.getLength(); i++) { - itemsUnderInventory.add(nodes.item(i).getTextContent()); - } - Map namespaces = new HashMap<>(); - - itemsUnderInventory.remove("Search"); - for (String item : itemsUnderInventory) { - expr = xpath.compile("//java-type[xml-root-element/@name='" + item + "']"); - result = expr.evaluate(doc, XPathConstants.NODESET); - nodes = (NodeList) result; - for (int i = 0; i < nodes.getLength(); i++) { - String a = "java-attributes/xml-element/@type[contains(.,'aai.openecomp.org')]"; - XPathExpression expr2 = xpath.compile(a); - Object result2 = expr2.evaluate(nodes.item(i), XPathConstants.NODESET); - - NodeList node2 = (NodeList) result2; - for (int j = 0; j < node2.getLength(); j++) { - temp = node2.item(j).getTextContent().split("\\."); - namespaces.put(temp[temp.length-1], item); - } - } - } - - - - //go through plurals - expr = xpath.compile("//java-type[java-attributes[count(xml-element) = 1]/xml-element[contains(@type, 'aai.openecomp.org')]]/xml-root-element"); - - result = expr.evaluate(doc, XPathConstants.NODESET); - nodes = (NodeList) result; - List children = new ArrayList<>(); - for (int i = 0; i < nodes.getLength(); i++) { - XPathExpression expr2 = xpath.compile("../java-attributes/xml-element[1]/@type[contains(.,'aai.openecomp.org')]"); - Object result2 = expr2.evaluate(nodes.item(i), XPathConstants.NODESET); - - NodeList node2 = (NodeList) result2; - temp = node2.item(0).getTextContent().split("\\."); - String containerName = nodes.item(i).getAttributes().getNamedItem("name").getTextContent(); - String childrenTuple = containerName + "," + temp[temp.length-1]; - if (namespaces.containsKey(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL,containerName))) { - childrenTuple += "," + namespaces.get(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL,containerName)); - } - children.add(childrenTuple); - } - - //match types up with plurals - String[] split = null; - for (String s : children) { - split = s.split(","); - expr = xpath.compile("//java-type[@name='"+split[1]+"']/xml-properties"); - result = expr.evaluate(doc, XPathConstants.NODESET); - nodes = (NodeList) result; - if (nodes.getLength() > 0) { - Element property = null; - - if (!hasChild(nodes.item(0), "name", "container")) { - - property = doc.createElement("xml-property"); - - property.setAttribute("name", "container"); - property.setAttribute("value",split[0]); - nodes.item(0).appendChild(property); - - } - - if (split.length == 3) { - Element property2 = null; - if (!hasChild(nodes.item(0), "name", "namespace")) { - property2 = doc.createElement("xml-property"); - property2.setAttribute("name", "namespace"); - property2.setAttribute("value",split[2]); - nodes.item(0).appendChild(property2); - } - - } - } - - - } - - filepath = "bundleconfig-local/etc/oxm/aai_oxm_" + version + ".xml"; - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - Transformer transformer = transformerFactory.newTransformer(); - DOMSource source = new DOMSource(doc); - StreamResult file = new StreamResult(new File(filepath)); - transformer.transform(source, file); - } - - /** - * Checks for child. - * - * @param node the node - * @param name the name - * @param value the value - * @return true, if successful - */ - private static boolean hasChild(Node node, String name, String value) { - boolean result = false; - NodeList list = node.getChildNodes(); - Node temp = null; - for (int i = 0; i < list.getLength(); i++) { - - if (list.item(i).hasAttributes()) { - temp = list.item(i).getAttributes().getNamedItem(name); - } - - if (temp != null && temp.getTextContent().equals(value)) { - result = true; - } - } - - return result; - } - + private static String[] versions = new String[]{"v8"}; + + /** + * The main method. + * + * @param args the arguments + * @throws SAXException the SAX exception + * @throws IOException Signals that an I/O exception has occurred. + * @throws ParserConfigurationException the parser configuration exception + * @throws XPathExpressionException the x path expression exception + * @throws TransformerException the transformer exception + */ + public static void main(String[] args) + throws SAXException, IOException, ParserConfigurationException, XPathExpressionException, TransformerException { + + for (String version : versions) { + process(version); + } + } + + /** + * Process. + * + * @param version the version + * @throws SAXException the SAX exception + * @throws IOException Signals that an I/O exception has occurred. + * @throws ParserConfigurationException the parser configuration exception + * @throws XPathExpressionException the x path expression exception + * @throws TransformerException the transformer exception + */ + private static void process(String version) + throws SAXException, IOException, ParserConfigurationException, XPathExpressionException, TransformerException { + + String filepath = "bundleconfig-local/etc/oxm/aai_oxm_" + version + ".xml"; + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); + Document doc = docBuilder.parse(filepath); + XPath xpath = XPathFactory.newInstance().newXPath(); + //Find namespaces - restrict to inventory + //XPathExpression expr = xpath.compile("//java-type[java-attributes[count(xml-element[contains(@type, 'aai.openecomp.org')])=count(./xml-element)][count(xml-element) > 1]]/xml-root-element"); + XPathExpression expr = xpath.compile("//java-type[@name='Inventory']/java-attributes/xml-element/@name"); + Object result = expr.evaluate(doc, XPathConstants.NODESET); + NodeList nodes = (NodeList) result; + List itemsUnderInventory = new ArrayList<>(); + for (int i = 0; i < nodes.getLength(); i++) { + itemsUnderInventory.add(nodes.item(i).getTextContent()); + } + Map namespaces = new HashMap<>(); + + itemsUnderInventory.remove("Search"); + for (String item : itemsUnderInventory) { + expr = xpath.compile("//java-type[xml-root-element/@name='" + item + "']"); + result = expr.evaluate(doc, XPathConstants.NODESET); + nodes = (NodeList) result; + handleItemsUnderInventory(nodes, namespaces, xpath, item); + } + + //go through plurals + expr = xpath.compile( + "//java-type[java-attributes[count(xml-element) = 1]/xml-element[contains(@type, 'aai.openecomp.org')]]/xml-root-element"); + + result = expr.evaluate(doc, XPathConstants.NODESET); + nodes = (NodeList) result; + List children = new ArrayList<>(); + for (int i = 0; i < nodes.getLength(); i++) { + XPathExpression expr2 = xpath + .compile("../java-attributes/xml-element[1]/@type[contains(.,'aai.openecomp.org')]"); + Object result2 = expr2.evaluate(nodes.item(i), XPathConstants.NODESET); + + NodeList node2 = (NodeList) result2; + String[] temp = node2.item(0).getTextContent().split("\\."); + String containerName = nodes.item(i).getAttributes().getNamedItem("name").getTextContent(); + String childrenTuple = containerName + "," + temp[temp.length - 1]; + if (namespaces.containsKey(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, containerName))) { + childrenTuple += + "," + namespaces.get(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, containerName)); + } + children.add(childrenTuple); + } + + //match types up with plurals + handleChildrenNodes(children, xpath, doc); + + filepath = "bundleconfig-local/etc/oxm/aai_oxm_" + version + ".xml"; + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(doc); + StreamResult file = new StreamResult(new File(filepath)); + transformer.transform(source, file); + } + + private static void handleItemsUnderInventory(NodeList nodes, Map namespaces, XPath xpath, + String item) throws XPathExpressionException { + String[] temp; + for (int i = 0; i < nodes.getLength(); i++) { + String a = "java-attributes/xml-element/@type[contains(.,'aai.openecomp.org')]"; + XPathExpression expr2 = xpath.compile(a); + Object result2 = expr2.evaluate(nodes.item(i), XPathConstants.NODESET); + + NodeList node2 = (NodeList) result2; + for (int j = 0; j < node2.getLength(); j++) { + temp = node2.item(j).getTextContent().split("\\."); + namespaces.put(temp[temp.length - 1], item); + } + } + } + + private static void handleChildrenNodes(List children, XPath xpath, Document doc) + throws XPathExpressionException { + NodeList nodes; + XPathExpression expr; + Object result; + String[] split; + for (String s : children) { + split = s.split(","); + expr = xpath.compile("//java-type[@name='" + split[1] + "']/xml-properties"); + result = expr.evaluate(doc, XPathConstants.NODESET); + nodes = (NodeList) result; + if (nodes.getLength() > 0) { + + if (!hasChild(nodes.item(0), "name", "container")) { + + Element property = doc.createElement("xml-property"); + property.setAttribute("name", "container"); + property.setAttribute("value", split[0]); + nodes.item(0).appendChild(property); + } + + if (split.length == 3) { + Element property; + if (!hasChild(nodes.item(0), "name", "namespace")) { + property = doc.createElement("xml-property"); + property.setAttribute("name", "namespace"); + property.setAttribute("value", split[2]); + nodes.item(0).appendChild(property); + } + } + } + } + } + + /** + * Checks for child. + * + * @param node the node + * @param name the name + * @param value the value + * @return true, if successful + */ + private static boolean hasChild(Node node, String name, String value) { + boolean result = false; + NodeList list = node.getChildNodes(); + Node temp = null; + for (int i = 0; i < list.getLength(); i++) { + + if (list.item(i).hasAttributes()) { + temp = list.item(i).getAttributes().getNamedItem(name); + } + + if (temp != null && temp.getTextContent().equals(value)) { + result = true; + } + } + + return result; + } }