public boolean filter(final Metadata metadata, final TreeWalker walker) { final Node parent = walker.getCurrentNode(); final Element element = (Element) parent; if (XsdElementEnum.enumeration.isTagNameEqual(element.getTagName())) { final Node valueNode = element.getAttributes().getNamedItem("value"); if (valueNode != null) { final String enumValue = valueNode.getNodeValue(); final Node simpleTypeNode = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (simpleTypeNode != null) { final Element parentElementWithName = (Element) simpleTypeNode; final String enumName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); metadata.addEnumValue(enumName, enumValue); return true; } } } return false; }
@Override public boolean filter(final Metadata metadata, final TreeWalker walker) { final Node parent = walker.getCurrentNode(); final Element element = (Element) parent; if (XsdElementEnum.simpleContent.isTagNameEqual(element.getTagName())) { final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String groupOrClassName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (groupOrClassName != null) { if (!element.hasChildNodes() || (MetadataUtil.hasChildOf(element, XsdElementEnum.extension) || MetadataUtil.hasChildOf( element, XsdElementEnum.restriction))) { if (!MetadataUtil.hasChildsOf(element, XsdElementEnum.enumeration)) { final MetadataElement classElement = new MetadataElement(); classElement.setName(groupOrClassName); classElement.setType("text"); classElement.setIsRef(false); classElement.setIsAttribute(false); metadata.addClassElement(groupOrClassName, classElement); return true; } } } } } return false; }
final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String groupOrClassName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (groupOrClassName != null) { final String ref = MetadataUtil.getAttributeValue(element, "ref"); if (XsdElementEnum.group.isTagNameEqual(parentElementWithName.getTagName()) || XsdElementEnum.attributeGroup.isTagNameEqual(parentElementWithName.getTagName())) { String type = MetadataUtil.getAttributeValue(element, "type"); if (type == null) { groupElement.setType("xsd:string"); final Node node = element.getAttributes().getNamedItem("type"); if (node != null) { final boolean isTextOnlyElement = MetadataUtil.hasParentOf(element, XsdElementEnum.simpleContent); if (node.getNodeValue().endsWith(":ID")) { String type = MetadataUtil.getAttributeValue(element, "type"); if (type == null) { classAttr.setType("xsd:string"); if (MetadataUtil.hasChildOf(element, XsdElementEnum.simpleType)) { final MetadataElement classElement = new MetadataElement(element); classElement.setType("xsd:string"); final String attrName = MetadataUtil.getAttributeValue(element, "name"); String type = MetadataUtil.getAttributeValue(element, "type");
final String baseStr = MetadataUtil.getAttributeValue(element, "base"); if (baseStr != null) { for (MetadataItem metadataClass : metadata.getClassList()) { if (metadataClass.getName().equals(baseStr)) { final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String className = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (className != null) { for (MetadataElement metadataElement : metadataClass.getElements()) { final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String mixedStr = MetadataUtil.getAttributeValue(parentElementWithName, "mixed"); final boolean isTextOnlyElement = MetadataUtil.hasParentOf(element, XsdElementEnum.simpleContent); if (!isTextOnlyElement || parentElementWithName.hasChildNodes() || baseStr.indexOf(":string") > 0) { if (mixedStr == null || mixedStr.equals("false")) { final String dataTypeName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); final String typeStr = MetadataUtil.getAttributeValue(element, "base"); final MetadataItem dataType = new MetadataItem(dataTypeName); dataType.setMappedTo(typeStr);
final String typeStr = MetadataUtil.getAttributeValue(element, "type"); final String mixedStr = MetadataUtil.getAttributeValue(element, "mixed"); final String abstractStr = MetadataUtil.getAttributeValue(element, "abstract"); if (typeStr == null && (!element.hasChildNodes())) { final String dataTypeName = MetadataUtil.getAttributeValue(element, "name"); final MetadataItem dataType = new MetadataItem(dataTypeName); dataType.setMappedTo("javaee:emptyType"); return true; } else if (mixedStr != null && mixedStr.equals("true")) { final String complexTypeName = MetadataUtil.getAttributeValue(element, "name"); final MetadataElement classElement = new MetadataElement(); classElement.setName(complexTypeName); metadata.addClassElement(complexTypeName, classElement); } else if (abstractStr != null && abstractStr.equals("true")) { final String complexTypeName = MetadataUtil.getAttributeValue(element, "name"); final MetadataElement classElement = new MetadataElement(); classElement.setName(complexTypeName); classElement.setIsAttribute(false); metadata.addClassElement(complexTypeName, classElement); } else if (!MetadataUtil.hasChildOf(element, XsdElementEnum.simpleContent) && !MetadataUtil.hasChildOf(element, XsdElementEnum.complexContent) && !MetadataUtil.hasChildOf(element, XsdElementEnum.group) && !MetadataUtil.hasChildOf(element, XsdElementEnum.all) && !MetadataUtil.hasChildOf(element, XsdElementEnum.choice) && !MetadataUtil.hasChildOf(element, XsdElementEnum.sequence) && !MetadataUtil.hasChildOf(element, XsdElementEnum.attribute)
new MetadataUtil().log(metadata);
/** * Constructs a new instance by reading the given w3c element. * * @param element * w3c element used for extracting various attributes. */ public MetadataElement(final Element element) { name = MetadataUtil.getAttributeValue(element, "name"); type = MetadataUtil.getAttributeValue(element, "type"); ref = MetadataUtil.getAttributeValue(element, "ref"); minOccurs = MetadataUtil.getAttributeValue(element, "minOccurs"); maxOccurs = MetadataUtil.getAttributeValue(element, "maxOccurs"); fixedValue = MetadataUtil.getAttributeValue(element, "fixed"); defaultValue = MetadataUtil.getAttributeValue(element, "default"); use = MetadataUtil.getAttributeValue(element, "use"); if (type == null) { type = name; // will be later added with the name-space } }
/** * Checks the existence of a w3c child element. * * @param parentElement * the element from which the search starts. * @param child * the <code>XsdElementEnum</code> specifying the child element. * @return true, if found, otherwise false. */ public static boolean hasChildsOf(final Element parentElement, XsdElementEnum child) { NodeList nodeList = parentElement.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { final Node childNode = nodeList.item(i); if (childNode.getNodeType() == Node.ELEMENT_NODE) { final Element childElement = (Element) childNode; if (child.isTagNameEqual(childElement.getTagName())) { return true; } if (childElement.hasChildNodes()) { if (hasChildsOf(childElement, child)) { return true; } } } } return false; }
final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String groupOrClassName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (groupOrClassName != null) { final String ref = MetadataUtil.getAttributeValue(element, "ref"); if (XsdElementEnum.group.isTagNameEqual(parentElementWithName.getTagName()) || XsdElementEnum.attributeGroup.isTagNameEqual(parentElementWithName.getTagName())) { String type = MetadataUtil.getAttributeValue(element, "type"); if (type == null) { groupElement.setType("xsd:string"); final Node node = element.getAttributes().getNamedItem("type"); if (node != null) { final boolean isTextOnlyElement = MetadataUtil.hasParentOf(element, XsdElementEnum.simpleContent); if (node.getNodeValue().endsWith(":ID")) { String type = MetadataUtil.getAttributeValue(element, "type"); if (type == null) { classAttr.setType("xsd:string"); if (MetadataUtil.hasChildOf(element, XsdElementEnum.simpleType)) { final MetadataElement classElement = new MetadataElement(element); classElement.setType("xsd:string"); final String attrName = MetadataUtil.getAttributeValue(element, "name"); String type = MetadataUtil.getAttributeValue(element, "type");
final String baseStr = MetadataUtil.getAttributeValue(element, "base"); if (baseStr != null) { for (MetadataItem metadataClass : metadata.getClassList()) { if (metadataClass.getName().equals(baseStr)) { final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String className = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (className != null) { for (MetadataElement metadataElement : metadataClass.getElements()) { final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String mixedStr = MetadataUtil.getAttributeValue(parentElementWithName, "mixed"); final boolean isTextOnlyElement = MetadataUtil.hasParentOf(element, XsdElementEnum.simpleContent); if (!isTextOnlyElement || parentElementWithName.hasChildNodes() || baseStr.indexOf(":string") > 0) { if (mixedStr == null || mixedStr.equals("false")) { final String dataTypeName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); final String typeStr = MetadataUtil.getAttributeValue(element, "base"); final MetadataItem dataType = new MetadataItem(dataTypeName); dataType.setMappedTo(typeStr);
final String typeStr = MetadataUtil.getAttributeValue(element, "type"); final String mixedStr = MetadataUtil.getAttributeValue(element, "mixed"); final String abstractStr = MetadataUtil.getAttributeValue(element, "abstract"); if (typeStr == null && (!element.hasChildNodes())) { final String dataTypeName = MetadataUtil.getAttributeValue(element, "name"); final MetadataItem dataType = new MetadataItem(dataTypeName); dataType.setMappedTo("javaee:emptyType"); return true; } else if (mixedStr != null && mixedStr.equals("true")) { final String complexTypeName = MetadataUtil.getAttributeValue(element, "name"); final MetadataElement classElement = new MetadataElement(); classElement.setName(complexTypeName); metadata.addClassElement(complexTypeName, classElement); } else if (abstractStr != null && abstractStr.equals("true")) { final String complexTypeName = MetadataUtil.getAttributeValue(element, "name"); final MetadataElement classElement = new MetadataElement(); classElement.setName(complexTypeName); classElement.setIsAttribute(false); metadata.addClassElement(complexTypeName, classElement); } else if (!MetadataUtil.hasChildOf(element, XsdElementEnum.simpleContent) && !MetadataUtil.hasChildOf(element, XsdElementEnum.complexContent) && !MetadataUtil.hasChildOf(element, XsdElementEnum.group) && !MetadataUtil.hasChildOf(element, XsdElementEnum.all) && !MetadataUtil.hasChildOf(element, XsdElementEnum.choice) && !MetadataUtil.hasChildOf(element, XsdElementEnum.sequence) && !MetadataUtil.hasChildOf(element, XsdElementEnum.attribute)
new MetadataUtil().log(metadata);
/** * Constructs a new instance by reading the given w3c element. * * @param element * w3c element used for extracting various attributes. */ public MetadataElement(final Element element) { name = MetadataUtil.getAttributeValue(element, "name"); type = MetadataUtil.getAttributeValue(element, "type"); ref = MetadataUtil.getAttributeValue(element, "ref"); minOccurs = MetadataUtil.getAttributeValue(element, "minOccurs"); maxOccurs = MetadataUtil.getAttributeValue(element, "maxOccurs"); fixedValue = MetadataUtil.getAttributeValue(element, "fixed"); defaultValue = MetadataUtil.getAttributeValue(element, "default"); use = MetadataUtil.getAttributeValue(element, "use"); if (type == null) { type = name; // will be later added with the name-space } }
/** * Checks the existence of a w3c child element. * * @param parentElement * the element from which the search starts. * @param child * the <code>XsdElementEnum</code> specifying the child element. * @return true, if found, otherwise false. */ public static boolean hasChildsOf(final Element parentElement, XsdElementEnum child) { NodeList nodeList = parentElement.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { final Node childNode = nodeList.item(i); if (childNode.getNodeType() == Node.ELEMENT_NODE) { final Element childElement = (Element) childNode; if (child.isTagNameEqual(childElement.getTagName())) { return true; } if (childElement.hasChildNodes()) { if (hasChildsOf(childElement, child)) { return true; } } } } return false; }
public boolean filter(final Metadata metadata, final TreeWalker walker) { final Node parent = walker.getCurrentNode(); final Element element = (Element) parent; if (XsdElementEnum.enumeration.isTagNameEqual(element.getTagName())) { final Node valueNode = element.getAttributes().getNamedItem("value"); if (valueNode != null) { final String enumValue = valueNode.getNodeValue(); final Node simpleTypeNode = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (simpleTypeNode != null) { final Element parentElementWithName = (Element) simpleTypeNode; final String enumName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); metadata.addEnumValue(enumName, enumValue); return true; } } } return false; }
@Override public boolean filter(final Metadata metadata, final TreeWalker walker) { final Node parent = walker.getCurrentNode(); final Element element = (Element) parent; if (XsdElementEnum.simpleContent.isTagNameEqual(element.getTagName())) { final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String groupOrClassName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (groupOrClassName != null) { if (!element.hasChildNodes() || (MetadataUtil.hasChildOf(element, XsdElementEnum.extension) || MetadataUtil.hasChildOf( element, XsdElementEnum.restriction))) { if (!MetadataUtil.hasChildsOf(element, XsdElementEnum.enumeration)) { final MetadataElement classElement = new MetadataElement(); classElement.setName(groupOrClassName); classElement.setType("text"); classElement.setIsRef(false); classElement.setIsAttribute(false); metadata.addClassElement(groupOrClassName, classElement); return true; } } } } } return false; }
refElement.setIsRef(true); final Node parentNodeWithMaxOccurs = MetadataUtil.getNextParentNodeWithAttr(parent, "maxOccurs"); final Element p = (Element) parentNodeWithMaxOccurs; final String maxOccurs = MetadataUtil.getAttributeValue(p, "maxOccurs"); if (maxOccurs != null && !maxOccurs.equals("1")) { refElement.setMaxOccurs("unbounded"); final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String groupOrClassName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (XsdElementEnum.group.isTagNameEqual(parentElementWithName.getTagName())) { metadata.addGroupReference(groupOrClassName, refElement);
refElement.setIsRef(true); final Node parentNodeWithMaxOccurs = MetadataUtil.getNextParentNodeWithAttr(parent, "maxOccurs"); final Element p = (Element) parentNodeWithMaxOccurs; final String maxOccurs = MetadataUtil.getAttributeValue(p, "maxOccurs"); if (maxOccurs != null && !maxOccurs.equals("1")) { refElement.setMaxOccurs("unbounded"); final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String groupOrClassName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (XsdElementEnum.group.isTagNameEqual(parentElementWithName.getTagName())) { metadata.addGroupReference(groupOrClassName, refElement);
public boolean filter(final Metadata metadata, final TreeWalker walker) { final Node parent = walker.getCurrentNode(); final Element element = (Element) parent; if (XsdElementEnum.attributeGroup.isTagNameEqual(element.getTagName())) { final Node refNode = element.getAttributes().getNamedItem("ref"); if (refNode != null) { final MetadataElement refElement = new MetadataElement(element); refElement.setIsRef(true); final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String groupOrClassName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (XsdElementEnum.attributeGroup.isTagNameEqual(parentElementWithName.getTagName())) { metadata.addGroupReference(groupOrClassName, refElement); return true; } else { metadata.addClassReference(groupOrClassName, refElement); return true; } } } } return false; } }
public boolean filter(final Metadata metadata, final TreeWalker walker) { final Node parent = walker.getCurrentNode(); final Element element = (Element) parent; if (XsdElementEnum.attributeGroup.isTagNameEqual(element.getTagName())) { final Node refNode = element.getAttributes().getNamedItem("ref"); if (refNode != null) { final MetadataElement refElement = new MetadataElement(element); refElement.setIsRef(true); final Node parentNodeWithName = MetadataUtil.getNextParentNodeWithAttr(parent.getParentNode(), "name"); if (parentNodeWithName != null) { final Element parentElementWithName = (Element) parentNodeWithName; final String groupOrClassName = MetadataUtil.getAttributeValue(parentElementWithName, "name"); if (XsdElementEnum.attributeGroup.isTagNameEqual(parentElementWithName.getTagName())) { metadata.addGroupReference(groupOrClassName, refElement); return true; } else { metadata.addClassReference(groupOrClassName, refElement); return true; } } } } return false; } }