@Override public void mixedElement(String elementName) throws SAXException { if (isVerbose) { System.out.println("mixedElement: elementName: " + elementName); } final MetadataElement element = new MetadataElement(); element.setName(elementName); element.setType(elementName); metadata.addClassElement(currentContentModel, element); }
@Override public void mixedElement(String elementName) throws SAXException { if (isVerbose) { System.out.println("mixedElement: elementName: " + elementName); } final MetadataElement element = new MetadataElement(); element.setName(elementName); element.setType(elementName); metadata.addClassElement(currentContentModel, element); }
@Override public void endModelGroup(short occurence) throws SAXException { if (isVerbose) { System.out.println("endModelGroup: occurence: " + occurence); } final Map<String, Short> modelGroupElements = modelGroupStack.get(modelGroupStack.size() - 1); for (Iterator it = modelGroupElements.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); String elementName = (String) entry.getKey(); Short elementOccurence = (Short) entry.getValue(); boolean isUnbounded = false; if (occurence == DTDEventListener.OCCURENCE_ZERO_OR_MORE || occurence == DTDEventListener.OCCURENCE_ONE_OR_MORE || elementOccurence == DTDEventListener.OCCURENCE_ZERO_OR_MORE || elementOccurence == DTDEventListener.OCCURENCE_ONE_OR_MORE) { isUnbounded = true; } final MetadataElement element = new MetadataElement(); element.setName(elementName); element.setType(elementName); if (isUnbounded) { element.setMaxOccurs("unbounded"); } metadata.addClassElement(currentContentModel, element); } modelGroupStack.remove(modelGroupElements); }
@Override public void endModelGroup(short occurence) throws SAXException { if (isVerbose) { System.out.println("endModelGroup: occurence: " + occurence); } final Map<String, Short> modelGroupElements = modelGroupStack.get(modelGroupStack.size() - 1); for (Iterator it = modelGroupElements.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); String elementName = (String) entry.getKey(); Short elementOccurence = (Short) entry.getValue(); boolean isUnbounded = false; if (occurence == DTDEventListener.OCCURENCE_ZERO_OR_MORE || occurence == DTDEventListener.OCCURENCE_ONE_OR_MORE || elementOccurence == DTDEventListener.OCCURENCE_ZERO_OR_MORE || elementOccurence == DTDEventListener.OCCURENCE_ONE_OR_MORE) { isUnbounded = true; } final MetadataElement element = new MetadataElement(); element.setName(elementName); element.setType(elementName); if (isUnbounded) { element.setMaxOccurs("unbounded"); } metadata.addClassElement(currentContentModel, element); } modelGroupStack.remove(modelGroupElements); }
@Override public void startContentModel(String elementName, short contentModelType) throws SAXException { if (isVerbose) { System.out.println("startContentModel: elementName: " + elementName + " contentModelType: " + contentModelType); } currentContentModel = elementName; modelGroupStack = new ArrayList<Map<String, Short>>(); /** * It is a mixed model, that means body text and perhaps child elements are defined for this element. When * endContentModel is called we have to analyze if there really child elements defined. */ if (contentModelType == DTDEventListener.CONTENT_MODEL_MIXED) { final MetadataElement element = new MetadataElement(); element.setName(elementName); element.setType("text"); // body text metadata.addClassElement(elementName, element); } }
@Override public void startContentModel(String elementName, short contentModelType) throws SAXException { if (isVerbose) { System.out.println("startContentModel: elementName: " + elementName + " contentModelType: " + contentModelType); } currentContentModel = elementName; modelGroupStack = new ArrayList<Map<String, Short>>(); /** * It is a mixed model, that means body text and perhaps child elements are defined for this element. When * endContentModel is called we have to analyze if there really child elements defined. */ if (contentModelType == DTDEventListener.CONTENT_MODEL_MIXED) { final MetadataElement element = new MetadataElement(); element.setName(elementName); element.setType("text"); // body text metadata.addClassElement(elementName, element); } }
@Override public void attributeDecl(String elementName, String attributeName, String attributeType, String[] enumeration, short attributeUse, String defaultValue) throws SAXException { if (isVerbose) { System.out.println("attributeDecl: elementName: " + elementName + " attributeName: " + attributeName + " attributeType: " + attributeType + " enumeration: " + enumeration + " attributeUse: " + attributeUse); } /** * Don't add the system attribute id otherwise we have problems with the mixed content. */ if (!attributeType.equals("ID")) { final MetadataElement element = new MetadataElement(); element.setName(attributeName); element.setIsAttribute(true); element.setType("xsd:string"); metadata.addClassElement(elementName, element); } }
@Override public void attributeDecl(String elementName, String attributeName, String attributeType, String[] enumeration, short attributeUse, String defaultValue) throws SAXException { if (isVerbose) { System.out.println("attributeDecl: elementName: " + elementName + " attributeName: " + attributeName + " attributeType: " + attributeType + " enumeration: " + enumeration + " attributeUse: " + attributeUse); } /** * Don't add the system attribute id otherwise we have problems with the mixed content. */ if (!attributeType.equals("ID")) { final MetadataElement element = new MetadataElement(); element.setName(attributeName); element.setIsAttribute(true); element.setType("xsd:string"); metadata.addClassElement(elementName, element); } }
@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; }
@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; }
if (className != null) { for (MetadataElement metadataElement : metadataClass.getElements()) { metadata.addClassElement(className, metadataElement);
if (className != null) { for (MetadataElement metadataElement : metadataClass.getElements()) { metadata.addClassElement(className, metadataElement);
classElement.setType(dataType.getMappedTo()); classElement.setIsAttribute(true); metadata.addClassElement(groupOrClassName, classElement); return true; classElement.setType(dataType.getMappedTo()); classElement.setIsAttribute(true); metadata.addClassElement(groupOrClassName, classElement); return true; classElement.setIsRef(false); classElement.setIsAttribute(false); metadata.addClassElement(groupOrClassName, classElement); metadata.addClassElement(groupOrClassName, classAttr); return true; classElement.setType("xsd:string"); classElement.setIsAttribute(true); metadata.addClassElement(groupOrClassName, classElement); return true; classElement.setType("xsd:string"); classElement.setIsAttribute(true); metadata.addClassElement(groupOrClassName, classElement); return true;
classElement.setType(dataType.getMappedTo()); classElement.setIsAttribute(true); metadata.addClassElement(groupOrClassName, classElement); return true; classElement.setType(dataType.getMappedTo()); classElement.setIsAttribute(true); metadata.addClassElement(groupOrClassName, classElement); return true; classElement.setIsRef(false); classElement.setIsAttribute(false); metadata.addClassElement(groupOrClassName, classElement); metadata.addClassElement(groupOrClassName, classAttr); return true; classElement.setType("xsd:string"); classElement.setIsAttribute(true); metadata.addClassElement(groupOrClassName, classElement); return true; classElement.setType("xsd:string"); classElement.setIsAttribute(true); metadata.addClassElement(groupOrClassName, classElement); return true;
metadata.addClassElement(groupOrClassName, refElement); return true; classElement.setMaxOccurs("unbounded"); metadata.addClassElement(groupOrClassName, classElement); return true;
metadata.addClassElement(groupOrClassName, refElement); return true; classElement.setMaxOccurs("unbounded"); metadata.addClassElement(groupOrClassName, classElement); return true;
classElement.setIsRef(false); classElement.setIsAttribute(false); metadata.addClassElement(complexTypeName, classElement); } else if (abstractStr != null && abstractStr.equals("true")) { final String complexTypeName = MetadataUtil.getAttributeValue(element, "name"); classElement.setIsRef(false); classElement.setIsAttribute(false); metadata.addClassElement(complexTypeName, classElement); } else if (!MetadataUtil.hasChildOf(element, XsdElementEnum.simpleContent) && !MetadataUtil.hasChildOf(element, XsdElementEnum.complexContent)
classElement.setIsRef(false); classElement.setIsAttribute(false); metadata.addClassElement(complexTypeName, classElement); } else if (abstractStr != null && abstractStr.equals("true")) { final String complexTypeName = MetadataUtil.getAttributeValue(element, "name"); classElement.setIsRef(false); classElement.setIsAttribute(false); metadata.addClassElement(complexTypeName, classElement); } else if (!MetadataUtil.hasChildOf(element, XsdElementEnum.simpleContent) && !MetadataUtil.hasChildOf(element, XsdElementEnum.complexContent)