Search in sources :

Example 6 with XSDTypeDefinition

use of org.eclipse.xsd.XSDTypeDefinition in project tmdm-studio-se by Talend.

the class Util method getTopElement.

public static String getTopElement(XSDElementDeclaration parent, XSDElementDeclaration son) {
    XSDTypeDefinition type = parent.getTypeDefinition();
    if (!(type instanceof XSDComplexTypeDefinition)) {
        return null;
    }
    List<XSDComplexTypeDefinition> hierarchyComplexTypes = getAllSuperComplexTypes((XSDComplexTypeDefinition) type);
    for (XSDComplexTypeDefinition complexType : hierarchyComplexTypes) {
        if (complexType.getContent() instanceof XSDParticle) {
            XSDParticle particle = (XSDParticle) complexType.getContent();
            if (particle.getTerm() instanceof XSDModelGroup) {
                XSDModelGroup group = (XSDModelGroup) particle.getTerm();
                EList<XSDParticle> elist = group.getContents();
                for (XSDParticle pt : elist) {
                    if (pt.getContent() instanceof XSDElementDeclaration) {
                        XSDElementDeclaration ele = (XSDElementDeclaration) pt.getContent();
                        if (ele == son) {
                            return ele.getName();
                        /*
                                 * ArrayList<String> complexTypes = new ArrayList<String>(); XSDElementDeclaration spec
                                 * = findOutSpecialSonElement( (XSDElementDeclaration) pt.getContent(), son,
                                 * complexTypes); if (spec != null) return spec.getName();
                                 */
                        // if (ele.getTypeDefinition() instanceof XSDComplexTypeDefinition) {
                        // 
                        // return ele.getName() + "/"//$NON-NLS-1$
                        // + getTopElement(ele, son, (XSDComplexTypeDefinition) ele.getTypeDefinition());
                        // 
                        // 
                        // }
                        }
                    }
                }
            }
        }
    }
    // $NON-NLS-1$
    return "";
}
Also used : XSDModelGroup(org.eclipse.xsd.XSDModelGroup) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) XSDComplexTypeDefinition(org.eclipse.xsd.XSDComplexTypeDefinition) XSDParticle(org.eclipse.xsd.XSDParticle) XSDTypeDefinition(org.eclipse.xsd.XSDTypeDefinition)

Example 7 with XSDTypeDefinition

use of org.eclipse.xsd.XSDTypeDefinition in project tmdm-studio-se by Talend.

the class XSDGenerateHTML method loadAndPrint.

/**
 * Load the XML Schema file and print the documentation based on it.
 *
 * @param xsdFile the name of an XML Schema file.
 */
public void loadAndPrint(String xsdFile) throws Exception {
    XSDFactory xsdFactory = XSDFactory.eINSTANCE;
    // Create a resource set and load the main schema file into it.
    // 
    ResourceSet resourceSet = new ResourceSetImpl();
    XSDResourceImpl xsdResource = (XSDResourceImpl) resourceSet.getResource(URI.createFileURI(xsdFile), true);
    XSDSchema xsdSchema = xsdResource.getSchema();
    // $NON-NLS-1$
    String elementContentHeaderDocumentation = getContentDocumentation("element-header");
    if (elementContentHeaderDocumentation != null) {
        System.out.println(elementContentHeaderDocumentation);
    }
    List all = new ArrayList(xsdSchema.getElementDeclarations());
    // $NON-NLS-1$
    XSDElementDeclaration simpleContent = xsdSchema.resolveElementDeclaration("simpleContent");
    // $NON-NLS-1$
    XSDElementDeclaration complexContent = xsdSchema.resolveElementDeclaration("complexContent");
    for (int i = 0; i <= 1; ++i) {
        for (int j = 0; j <= 1; ++j) {
            XSDElementDeclaration parentElement = (i == 0 ? complexContent : simpleContent);
            XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition) parentElement.getTypeDefinition();
            XSDElementDeclaration specialElementDeclaration = (XSDElementDeclaration) ((XSDParticle) ((XSDModelGroup) ((XSDParticle) ((XSDModelGroup) ((XSDParticle) (xsdComplexTypeDefinition.getContentType())).getTerm()).getParticles().get(1)).getTerm()).getParticles().get(j)).getTerm();
            all.add(specialElementDeclaration);
            specialAnchorMap.put(specialElementDeclaration, parentElement);
        }
    }
    all = XSDNamedComponentImpl.sortNamedComponents(all);
    for (Iterator i = all.iterator(); i.hasNext(); ) {
        XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) i.next();
        XSDElementDeclaration parentElementDeclaration = (XSDElementDeclaration) specialAnchorMap.get(xsdElementDeclaration);
        String elementDeclarationName = xsdElementDeclaration.getName();
        String key = // $NON-NLS-1$ //$NON-NLS-2$
        (parentElementDeclaration == null ? "" : parentElementDeclaration.getName() + "::") + elementDeclarationName;
        String elementDeclarationMarkup = getElementDeclarationMarkup(key);
        // $NON-NLS-1$
        System.out.print("<h2>");
        System.out.print(elementDeclarationName.substring(0, 1).toUpperCase());
        System.out.print(elementDeclarationName.substring(1));
        // $NON-NLS-1$
        System.out.println("</h2>");
        // $NON-NLS-1$
        System.out.println("<div class='reprdef'>");
        // $NON-NLS-1$
        System.out.println("<table cols=1 width='100%'><tr><td>");
        System.out.print(// $NON-NLS-1$
        "<div class='reprHeader'><span class='reprdef'>XML&nbsp;Representation&nbsp;Summary:&nbsp;</span><code>");
        // $NON-NLS-1$ //$NON-NLS-2$
        System.out.print("<a name='" + getLocalAnchor(xsdElementDeclaration) + "'>");
        System.out.print(getStandardLink(xsdElementDeclaration));
        System.out.print(elementDeclarationName);
        // $NON-NLS-1$
        System.out.print("</a></a></code>");
        // $NON-NLS-1$
        System.out.print("&nbsp;Element&nbsp;Information&nbsp;Item&nbsp;");
        if (parentElementDeclaration != null) {
            // $NON-NLS-1$
            System.out.print("<small>(");
            // $NON-NLS-1$ //$NON-NLS-2$
            System.out.print("<a href='#" + getLocalAnchor(parentElementDeclaration) + "'>");
            System.out.print(parentElementDeclaration.getName());
            // $NON-NLS-1$
            System.out.print("</a>)</small>");
        } else if ("restriction".equals(elementDeclarationName)) {
            // $NON-NLS-1$
            // $NON-NLS-1$
            System.out.print("<small>(simpleType)</small>");
        }
        // $NON-NLS-1$
        System.out.println("</div>");
        // $NON-NLS-1$
        System.out.println("<div class='reprBody'>");
        if (elementDeclarationMarkup != null) {
            // $NON-NLS-1$ //$NON-NLS-2$
            System.out.print("<div class='" + elementDeclarationMarkup + "'>");
        }
        // $NON-NLS-1$
        System.out.print("<tt>&lt;");
        System.out.print(elementDeclarationName);
        // $NON-NLS-1$
        System.out.print("</tt>");
        String componentLinks = getComponentLinks(xsdElementDeclaration);
        if (componentLinks != null) {
            System.out.print(componentLinks);
        }
        // $NON-NLS-1$
        System.out.println("<br>");
        StringBuffer attributeDocumentationBuffer = new StringBuffer();
        Map repeatedDocumentationMap = new HashMap();
        XSDTypeDefinition xsdTypeDefinition = xsdElementDeclaration.getTypeDefinition();
        XSDComplexTypeDefinition generalType = xsdSchema.resolveComplexTypeDefinitionURI(xsdElementDeclaration.getURI());
        if (generalType.getContainer() != null) {
            xsdTypeDefinition = generalType;
        }
        if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition) {
            // $NON-NLS-1$
            System.out.println("<tt>></tt><br>");
        } else if (xsdTypeDefinition instanceof XSDComplexTypeDefinition) {
            XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition) xsdTypeDefinition;
            for (Iterator attributeUses = xsdComplexTypeDefinition.getAttributeUses().iterator(); attributeUses.hasNext(); ) {
                XSDAttributeUse xsdAttributeUse = (XSDAttributeUse) attributeUses.next();
                XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
                String attributeDeclarationName = xsdAttributeDeclaration.getName();
                // $NON-NLS-1$
                System.out.print("<tt>&nbsp;&nbsp;");
                if (xsdAttributeDeclaration.getTargetNamespace() != null) {
                    // $NON-NLS-1$
                    System.out.print("xml:");
                }
                String attributeDeclarationMarkup = null;
                String attributeDeclarationDocumentation = null;
                if (!"ignored".equals(elementDeclarationMarkup)) {
                    // $NON-NLS-1$
                    attributeDeclarationMarkup = getAttributeDeclarationMarkup(attributeDeclarationName);
                    if (attributeDeclarationMarkup == null) {
                        attributeDeclarationMarkup = getAttributeDeclarationMarkup(// $NON-NLS-1$
                        elementDeclarationName + "." + attributeDeclarationName);
                    }
                    attributeDeclarationDocumentation = getAttributeDeclarationDocumentation(attributeDeclarationName);
                    if (attributeDeclarationDocumentation == null) {
                        attributeDeclarationDocumentation = getAttributeDeclarationDocumentation(// $NON-NLS-1$
                        elementDeclarationName + "." + attributeDeclarationName);
                    }
                }
                if (attributeDeclarationDocumentation != null) {
                    Integer oldInsertIndex = (Integer) repeatedDocumentationMap.get(attributeDeclarationDocumentation);
                    if (oldInsertIndex != null) {
                        // $NON-NLS-1$
                        String insertion = "<br>" + attributeDeclarationName;
                        attributeDocumentationBuffer.insert(oldInsertIndex.intValue(), insertion);
                        repeatedDocumentationMap.put(attributeDeclarationDocumentation, new Integer(oldInsertIndex.intValue() + insertion.length()));
                    } else {
                        if (attributeDocumentationBuffer.length() == 0) {
                            // $NON-NLS-1$
                            attributeDocumentationBuffer.append("<table cols=2 width='100%'>\n");
                            attributeDocumentationBuffer.append(// $NON-NLS-1$
                            "<tr>\n<th width=25% valign=top align=left><b>Attribute</b></th>\n");
                            attributeDocumentationBuffer.append(// $NON-NLS-1$
                            "<th width=75% valign=top align=left><b>Description</b></th>\n</tr>\n");
                        }
                        // $NON-NLS-1$
                        attributeDocumentationBuffer.append("<tr><td><b>");
                        if (attributeDeclarationMarkup != null) {
                            // $NON-NLS-1$ //$NON-NLS-2$
                            attributeDocumentationBuffer.append("<span class='" + attributeDeclarationMarkup + "'>");
                        }
                        attributeDocumentationBuffer.append(attributeDeclarationName);
                        int insertIndex = attributeDocumentationBuffer.length();
                        if (attributeDeclarationMarkup != null) {
                            // $NON-NLS-1$
                            attributeDocumentationBuffer.append("</span>");
                        }
                        // $NON-NLS-1$
                        attributeDocumentationBuffer.append("</b></td>\n<td valign=top>\n");
                        attributeDocumentationBuffer.append(attributeDeclarationDocumentation);
                        // $NON-NLS-1$
                        attributeDocumentationBuffer.append("</td></tr>");
                        repeatedDocumentationMap.put(attributeDeclarationDocumentation, new Integer(insertIndex));
                    }
                }
                if (attributeDeclarationMarkup != null) {
                    // $NON-NLS-1$ //$NON-NLS-2$
                    System.out.print("<span class='" + attributeDeclarationMarkup + "'>");
                }
                if (xsdAttributeUse.isRequired()) {
                    // $NON-NLS-1$
                    System.out.print("<b>");
                    System.out.print(attributeDeclarationName);
                    // $NON-NLS-1$
                    System.out.print("</b>");
                } else {
                    System.out.print(attributeDeclarationName);
                }
                if (attributeDeclarationMarkup != null) {
                    // $NON-NLS-1$
                    System.out.print("</span>");
                }
                // $NON-NLS-1$
                System.out.print("&nbsp;=&nbsp;</tt>");
                XSDSimpleTypeDefinition xsdSimpleTypeDefinition = xsdAttributeDeclaration.getTypeDefinition();
                printSimpleTypeDefinition(xsdSimpleTypeDefinition);
                if (xsdAttributeUse.getLexicalValue() != null) {
                    // $NON-NLS-1$
                    System.out.print("&nbsp;:&nbsp;");
                    if ("".equals(xsdAttributeUse.getLexicalValue())) {
                        // $NON-NLS-1$
                        // $NON-NLS-1$
                        System.out.print("\"\"");
                    } else {
                        System.out.print(xsdAttributeUse.getLexicalValue());
                    }
                }
                if (attributeUses.hasNext()) {
                    // $NON-NLS-1$
                    System.out.println("<br>");
                }
            }
            if (xsdComplexTypeDefinition.getAttributeWildcard() != null) {
                // $NON-NLS-1$
                System.out.println("<br>");
                System.out.println(// $NON-NLS-1$
                "<span class='" + ALLOWS + // $NON-NLS-1$
                "'><tt><em>&nbsp;&nbsp;{&nbsp;any&nbsp;attributes&nbsp;with&nbsp;non-schema&nbsp;namespace&nbsp;.&nbsp;.&nbsp;.&nbsp;}</em></tt></span>");
            }
            // $NON-NLS-1$
            System.out.println("<tt>></tt><br>");
            if (xsdComplexTypeDefinition.getContentType() instanceof XSDParticle) {
                // $NON-NLS-1$
                System.out.print("<tt><em>&nbsp;&nbsp;Content:</em>&nbsp;");
                printParticle((XSDParticle) xsdComplexTypeDefinition.getContentType(), elementDeclarationMarkup);
                // $NON-NLS-1$
                System.out.print("</tt>");
            } else if (xsdComplexTypeDefinition.getContentType() instanceof XSDSimpleTypeDefinition) {
                // $NON-NLS-1$
                System.out.print("<b>***** simple</b>");
            } else {
                // $NON-NLS-1$
                System.out.print("<b>{ **** empty }</b>");
            }
            // $NON-NLS-1$
            System.out.println("<br>");
        }
        // $NON-NLS-1$
        System.out.print("<tt>&lt;/");
        System.out.print(elementDeclarationName);
        // $NON-NLS-1$
        System.out.println("></tt>");
        if (elementDeclarationMarkup != null) {
            // $NON-NLS-1$
            System.out.print("</div>");
        }
        // $NON-NLS-1$
        System.out.println("</div>");
        String elementDeclarationDocumentation = getElementDeclarationDocumentation(key);
        if (elementDeclarationDocumentation != null) {
            // $NON-NLS-1$
            System.out.println("<div class='reprBody'>");
            System.out.println(elementDeclarationDocumentation);
            // $NON-NLS-1$
            System.out.println("</div>");
        }
        if (attributeDocumentationBuffer.length() > 0) {
            // $NON-NLS-1$
            System.out.println("<div class='reprBody'>");
            System.out.print(attributeDocumentationBuffer);
            // $NON-NLS-1$
            System.out.println("</table>");
            // $NON-NLS-1$
            System.out.println("</div>");
        }
        // $NON-NLS-1$
        System.out.println("</td></tr></table>");
        // $NON-NLS-1$
        System.out.println("</div>");
    }
    // System.out.println("<h1>Built-in Datatypes</h1>");
    // $NON-NLS-1$
    String typeContentHeaderDocumentation = getContentDocumentation("type-header");
    if (typeContentHeaderDocumentation != null) {
        System.out.println(typeContentHeaderDocumentation);
    }
    // $NON-NLS-1$
    System.out.println("<table border=true cols=3 width='100%'>");
    // $NON-NLS-1$
    System.out.println("<tr>");
    // $NON-NLS-1$
    System.out.println("<th width=33% valign=top align=left><b>Type</b></th>");
    // $NON-NLS-1$
    System.out.println("<th width=33% valign=top align=left><b>Properties&nbsp;&amp;&nbsp;Facets</b></th>");
    // $NON-NLS-1$
    System.out.println("<th width=34% valign=top align=left><b>Effective&nbsp;Value</b></th>");
    // $NON-NLS-1$
    System.out.println("</tr>");
    // $NON-NLS-1$
    XSDSimpleTypeDefinition anyTypeDefinition = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("anyType");
    XSDSimpleTypeDefinition anySimpleTypeDefinition = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition(// $NON-NLS-1$
    "anySimpleType");
    XSDSimpleTypeDefinition anyListTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
    anyListTypeDefinition.setVariety(XSDVariety.LIST_LITERAL);
    // $NON-NLS-1$
    anyListTypeDefinition.setName("anyListType");
    anyListTypeDefinition.setItemTypeDefinition(anySimpleTypeDefinition);
    xsdSchema.getContents().add(anyListTypeDefinition);
    // $NON-NLS-1$
    anyListTypeDefinition.getElement().setAttribute(XSDConstants.ID_ATTRIBUTE, "anyListType");
    XSDSimpleTypeDefinition anyUnionTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
    anyUnionTypeDefinition.setVariety(XSDVariety.UNION_LITERAL);
    // $NON-NLS-1$
    anyUnionTypeDefinition.setName("anyUnionType");
    anyUnionTypeDefinition.getMemberTypeDefinitions().add(anySimpleTypeDefinition);
    xsdSchema.getContents().add(anyUnionTypeDefinition);
    // $NON-NLS-1$
    anyUnionTypeDefinition.getElement().setAttribute(XSDConstants.ID_ATTRIBUTE, "anyUnionType");
    List allTypeDefinitions = new ArrayList(xsdSchema.getTypeDefinitions());
    allTypeDefinitions.add(0, anySimpleTypeDefinition);
    allTypeDefinitions.add(0, anyTypeDefinition);
    for (Iterator i = allTypeDefinitions.iterator(); i.hasNext(); ) {
        XSDTypeDefinition xsdTypeDefinition = (XSDTypeDefinition) i.next();
        if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition && xsdTypeDefinition.getElement() != null && xsdTypeDefinition.getName().equals(xsdTypeDefinition.getElement().getAttribute(XSDConstants.ID_ATTRIBUTE))) {
            XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) xsdTypeDefinition;
            // $NON-NLS-1$
            System.out.println("<tr>");
            // $NON-NLS-1$ //$NON-NLS-2$
            System.out.println("<a name='" + xsdSimpleTypeDefinition.getName() + "-simple-type'>");
            // $NON-NLS-1$
            System.out.println("<td>");
            boolean isPrimitive = XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety() && xsdSimpleTypeDefinition.getBaseTypeDefinition() == anySimpleTypeDefinition;
            if (isPrimitive) {
                // $NON-NLS-1$
                System.out.print("<b>");
            }
            System.out.print(getSimpleTypeDefinitionLink(xsdSimpleTypeDefinition));
            if (isPrimitive) {
                // $NON-NLS-1$
                System.out.print("</b>");
            }
            for (XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition; ; baseTypeDefinition = baseTypeDefinition.getBaseTypeDefinition()) {
                String javaClass = (String) schemaTypeToJavaClassMap.get(baseTypeDefinition.getName());
                if (javaClass != null) {
                    // $NON-NLS-1$
                    System.out.println("<br>&nbsp;<br>");
                    if (baseTypeDefinition == xsdSimpleTypeDefinition) {
                        // ) //$NON-NLS-1$
                        System.out.print("<b>");
                    }
                    // $NON-NLS-1$
                    int dotIndex = javaClass.lastIndexOf(".");
                    // $NON-NLS-1$
                    System.out.print("<font size=-2>");
                    System.out.print(javaClass.substring(0, dotIndex + 1));
                    // $NON-NLS-1$
                    System.out.print("</font><br>&nbsp;&nbsp;");
                    System.out.print(javaClass.substring(dotIndex + 1));
                    if (baseTypeDefinition == xsdSimpleTypeDefinition) {
                        // (
                        // $NON-NLS-1$
                        System.out.print("<b>");
                    }
                    System.out.println();
                    break;
                }
            }
            // $NON-NLS-1$
            System.out.println("<br>");
            // $NON-NLS-1$
            System.out.println("</td>");
            // $NON-NLS-1$
            System.out.println("</a>");
            StringBuffer validFacets = new StringBuffer();
            StringBuffer effectiveFacetValues = new StringBuffer();
            // $NON-NLS-1$
            validFacets.append("variety<br>\n");
            effectiveFacetValues.append(xsdSimpleTypeDefinition.isSetVariety() ? // $NON-NLS-1$
            "<b>" + xsdSimpleTypeDefinition.getVariety() + "</b>" : // $NON-NLS-1$ //$NON-NLS-2$
            "<em>absent</em>");
            // $NON-NLS-1$
            effectiveFacetValues.append("<br>\n");
            // $NON-NLS-1$
            validFacets.append("base type definition<br>\n");
            XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
            while (baseTypeDefinition.getName() == null) {
                baseTypeDefinition = baseTypeDefinition.getBaseTypeDefinition();
            }
            // $NON-NLS-1$
            effectiveFacetValues.append("<a href='#");
            effectiveFacetValues.append(baseTypeDefinition.getName());
            // $NON-NLS-1$
            effectiveFacetValues.append("-simple-type'>");
            effectiveFacetValues.append(baseTypeDefinition.getName());
            // $NON-NLS-1$
            effectiveFacetValues.append("</a><br>\n");
            // $NON-NLS-1$
            validFacets.append("ordered<br>\n");
            effectiveFacetValues.append(// $NON-NLS-1$ //$NON-NLS-2$
            "anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ? // $NON-NLS-1$ //$NON-NLS-2$
            "*" : xsdSimpleTypeDefinition.getOrderedFacet().getValue().getName());
            // $NON-NLS-1$
            effectiveFacetValues.append("<br>\n");
            // $NON-NLS-1$
            validFacets.append("bounded<br>\n");
            effectiveFacetValues.append(// $NON-NLS-1$ //$NON-NLS-2$
            "anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ? // $NON-NLS-1$ //$NON-NLS-2$
            "*" : // $NON-NLS-1$ //$NON-NLS-2$
            xsdSimpleTypeDefinition.getBoundedFacet().isValue() ? "true" : "false");
            // $NON-NLS-1$
            effectiveFacetValues.append("<br>\n");
            // $NON-NLS-1$
            validFacets.append("cardinality<br>\n");
            effectiveFacetValues.append(// $NON-NLS-1$ //$NON-NLS-2$
            "anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ? // $NON-NLS-1$ //$NON-NLS-2$
            "*" : XSDCardinality.COUNTABLY_INFINITE_LITERAL == xsdSimpleTypeDefinition.getCardinalityFacet().getValue() ? "countably infinite" : // $NON-NLS-1$
            xsdSimpleTypeDefinition.getCardinalityFacet().getValue().getName());
            // $NON-NLS-1$
            effectiveFacetValues.append("<br>\n");
            // $NON-NLS-1$
            validFacets.append("numeric<br>\n");
            effectiveFacetValues.append(// $NON-NLS-1$ //$NON-NLS-2$
            "anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ? // $NON-NLS-1$ //$NON-NLS-2$
            "*" : // $NON-NLS-1$ //$NON-NLS-2$
            xsdSimpleTypeDefinition.getNumericFacet().isValue() ? "true" : "false");
            // $NON-NLS-1$
            effectiveFacetValues.append("<br>\n");
            if (xsdSimpleTypeDefinition.getValidFacets().contains("length")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("length<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveLengthFacet() != null) {
                    XSDLengthFacet xsdLengthFacet = xsdSimpleTypeDefinition.getEffectiveLengthFacet();
                    if (xsdLengthFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdLengthFacet.getValue());
                    if (xsdLengthFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("minLength")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("minLength<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveMinLengthFacet() != null) {
                    XSDMinLengthFacet xsdMinLengthFacet = xsdSimpleTypeDefinition.getEffectiveMinLengthFacet();
                    if (xsdMinLengthFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdMinLengthFacet.getValue());
                    if (xsdMinLengthFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("maxLength")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("maxLength<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveMaxLengthFacet() != null) {
                    XSDMaxLengthFacet xsdMaxLengthFacet = xsdSimpleTypeDefinition.getEffectiveMaxLengthFacet();
                    if (xsdMaxLengthFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdMaxLengthFacet.getValue());
                    if (xsdMaxLengthFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("pattern")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("pattern<br>\n");
                if (xsdSimpleTypeDefinition.getEffectivePatternFacet() != null) {
                    // XSDPatternFacet xsdPatternFacet =
                    // xsdSimpleTypeDefinition.getEffectivePatternFacet();
                    // $NON-NLS-1$
                    effectiveFacetValues.append("*");
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("enumeration")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("enumeration<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveEnumerationFacet() != null) {
                    XSDEnumerationFacet xsdEnumerationFacet = xsdSimpleTypeDefinition.getEffectiveEnumerationFacet();
                    for (Iterator enumerators = xsdEnumerationFacet.getValue().iterator(); enumerators.hasNext(); ) {
                        String enumerator = (String) enumerators.next();
                        effectiveFacetValues.append(enumerator);
                        // $NON-NLS-1$
                        effectiveFacetValues.append("&nbsp;");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("whiteSpace")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("whiteSpace<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveWhiteSpaceFacet() != null) {
                    XSDWhiteSpaceFacet xsdWhiteSpaceFacet = xsdSimpleTypeDefinition.getEffectiveWhiteSpaceFacet();
                    if (xsdWhiteSpaceFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdWhiteSpaceFacet.getValue());
                    if (xsdWhiteSpaceFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("maxInclusive")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("maxInclusive<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveMaxFacet() instanceof XSDMaxInclusiveFacet) {
                    XSDMaxInclusiveFacet xsdMaxInclusiveFacet = (XSDMaxInclusiveFacet) xsdSimpleTypeDefinition.getEffectiveMaxFacet();
                    if (xsdMaxInclusiveFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdMaxInclusiveFacet.getValue());
                    if (xsdMaxInclusiveFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("maxExclusive")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("maxExclusive<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveMaxFacet() instanceof XSDMaxExclusiveFacet) {
                    XSDMaxExclusiveFacet xsdMaxExclusiveFacet = (XSDMaxExclusiveFacet) xsdSimpleTypeDefinition.getEffectiveMaxFacet();
                    if (xsdMaxExclusiveFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdMaxExclusiveFacet.getValue());
                    if (xsdMaxExclusiveFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("minInclusive")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("maxInclusive<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveMinFacet() instanceof XSDMinInclusiveFacet) {
                    XSDMinInclusiveFacet xsdMinInclusiveFacet = (XSDMinInclusiveFacet) xsdSimpleTypeDefinition.getEffectiveMinFacet();
                    if (xsdMinInclusiveFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdMinInclusiveFacet.getValue());
                    if (xsdMinInclusiveFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("minExclusive")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("maxExclusive<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveMinFacet() instanceof XSDMinExclusiveFacet) {
                    XSDMinExclusiveFacet xsdMinExclusiveFacet = (XSDMinExclusiveFacet) xsdSimpleTypeDefinition.getEffectiveMinFacet();
                    if (xsdMinExclusiveFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdMinExclusiveFacet.getValue());
                    if (xsdMinExclusiveFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("totalDigits")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("totalDigits<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveTotalDigitsFacet() != null) {
                    XSDTotalDigitsFacet xsdTotalDigitsFacet = xsdSimpleTypeDefinition.getEffectiveTotalDigitsFacet();
                    if (xsdTotalDigitsFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdTotalDigitsFacet.getValue());
                    if (xsdTotalDigitsFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            if (xsdSimpleTypeDefinition.getValidFacets().contains("fractionDigits")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                validFacets.append("fractionDigits<br>\n");
                if (xsdSimpleTypeDefinition.getEffectiveFractionDigitsFacet() != null) {
                    XSDFractionDigitsFacet xsdFractionDigitsFacet = xsdSimpleTypeDefinition.getEffectiveFractionDigitsFacet();
                    if (xsdFractionDigitsFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("<b>");
                    }
                    effectiveFacetValues.append(xsdFractionDigitsFacet.getValue());
                    if (xsdFractionDigitsFacet.isFixed()) {
                        // $NON-NLS-1$
                        effectiveFacetValues.append("</b>");
                    }
                }
                // $NON-NLS-1$
                effectiveFacetValues.append("<br>\n");
            }
            // $NON-NLS-1$
            System.out.println("<td>");
            System.out.print(validFacets);
            // $NON-NLS-1$
            System.out.println("</td>");
            // $NON-NLS-1$
            System.out.print("<td>");
            System.out.println(effectiveFacetValues);
            // $NON-NLS-1$
            System.out.println("</td>");
            // $NON-NLS-1$
            System.out.println("</tr>");
        }
    }
    // $NON-NLS-1$
    System.out.println("</table>");
    // $NON-NLS-1$
    String appendixContentHeaderDocumentation = getContentDocumentation("appendix-header");
    if (appendixContentHeaderDocumentation != null) {
        System.out.println(appendixContentHeaderDocumentation);
    }
}
Also used : XSDAttributeUse(org.eclipse.xsd.XSDAttributeUse) XSDFactory(org.eclipse.xsd.XSDFactory) XSDMinInclusiveFacet(org.eclipse.xsd.XSDMinInclusiveFacet) HashMap(java.util.HashMap) XSDModelGroup(org.eclipse.xsd.XSDModelGroup) ArrayList(java.util.ArrayList) XSDTypeDefinition(org.eclipse.xsd.XSDTypeDefinition) XSDLengthFacet(org.eclipse.xsd.XSDLengthFacet) XSDEnumerationFacet(org.eclipse.xsd.XSDEnumerationFacet) Iterator(java.util.Iterator) List(java.util.List) ArrayList(java.util.ArrayList) XSDComplexTypeDefinition(org.eclipse.xsd.XSDComplexTypeDefinition) XSDMinExclusiveFacet(org.eclipse.xsd.XSDMinExclusiveFacet) XSDParticle(org.eclipse.xsd.XSDParticle) XSDSchema(org.eclipse.xsd.XSDSchema) ResourceSetImpl(org.eclipse.emf.ecore.resource.impl.ResourceSetImpl) XSDFractionDigitsFacet(org.eclipse.xsd.XSDFractionDigitsFacet) XSDSimpleTypeDefinition(org.eclipse.xsd.XSDSimpleTypeDefinition) XSDWhiteSpaceFacet(org.eclipse.xsd.XSDWhiteSpaceFacet) XSDResourceImpl(org.eclipse.xsd.util.XSDResourceImpl) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) XSDMaxExclusiveFacet(org.eclipse.xsd.XSDMaxExclusiveFacet) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) XSDTotalDigitsFacet(org.eclipse.xsd.XSDTotalDigitsFacet) XSDMinLengthFacet(org.eclipse.xsd.XSDMinLengthFacet) XSDMaxLengthFacet(org.eclipse.xsd.XSDMaxLengthFacet) XSDMaxInclusiveFacet(org.eclipse.xsd.XSDMaxInclusiveFacet) Map(java.util.Map) HashMap(java.util.HashMap) XSDAttributeDeclaration(org.eclipse.xsd.XSDAttributeDeclaration)

Example 8 with XSDTypeDefinition

use of org.eclipse.xsd.XSDTypeDefinition in project tmdm-studio-se by Talend.

the class XSDParser method loadAndPrint.

/**
 * Load the XML Schema file and print the documentation based on it.
 *
 * @param xsdFile the name of an XML Schema file.
 */
public void loadAndPrint(String xsd) throws Exception {
    // XSDFactory xsdFactory = XSDFactory.eINSTANCE;
    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    documentBuilderFactory.setNamespaceAware(true);
    documentBuilderFactory.setValidating(false);
    InputSource source = new InputSource(new StringReader(xsd));
    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
    Document document = documentBuilder.parse(source);
    XSDSchema xsdSchema = XSDSchemaImpl.createSchema(document.getDocumentElement());
    // Create a resource set and load the main schema file into it.
    // 
    /*
         * ResourceSet resourceSet = new ResourceSetImpl(); XSDResourceImpl xsdResource = (XSDResourceImpl) resourceSet
         * .getResource(URI.createFileURI(xsdFile), true);
         * 
         * XSDResourceImpl res = new XSDResourceImpl();
         * 
         * XSDSchema xsdSchema = xsdResource.getSchema();
         */
    // $NON-NLS-1$
    String elementContentHeaderDocumentation = getContentDocumentation("element-header");
    if (elementContentHeaderDocumentation != null) {
        System.out.println(elementContentHeaderDocumentation);
    }
    List all = new ArrayList(xsdSchema.getElementDeclarations());
    for (Iterator iter = all.iterator(); iter.hasNext(); ) {
        XSDElementDeclaration concept = (XSDElementDeclaration) iter.next();
        // $NON-NLS-1$ //$NON-NLS-2$
        System.out.println("CONCEPT: " + concept.getName() + "-- " + concept.getContainer().getClass().getName());
        // name of the concept in English
        XSDAnnotation annotation = concept.getAnnotation();
        if (annotation != null) {
            EList list = annotation.getApplicationInformation();
            for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
                Element appinfo = (Element) iterator.next();
                // $NON-NLS-1$
                String language = appinfo.getAttribute("source");
                if ("EN".equals(language.toUpperCase())) {
                    // $NON-NLS-1$
                    if (appinfo.getFirstChild() != null)
                        // $NON-NLS-1$
                        System.out.println("     " + appinfo.getFirstChild().getNodeValue());
                }
            }
        }
        // children
        XSDTypeDefinition typedef = concept.getTypeDefinition();
        if (typedef instanceof XSDComplexTypeDefinition) {
            XSDComplexTypeContent xsdContent = ((XSDComplexTypeDefinition) typedef).getContent();
            XSDParticle xsdParticle = (XSDParticle) xsdContent;
            // $NON-NLS-1$
            String ident = "    ";
            processParticle(xsdParticle, ident);
        }
    }
// for elements
}
Also used : InputSource(org.xml.sax.InputSource) DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) XSDComplexTypeContent(org.eclipse.xsd.XSDComplexTypeContent) Element(org.w3c.dom.Element) ArrayList(java.util.ArrayList) Document(org.w3c.dom.Document) XSDTypeDefinition(org.eclipse.xsd.XSDTypeDefinition) EList(org.eclipse.emf.common.util.EList) DocumentBuilder(javax.xml.parsers.DocumentBuilder) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) StringReader(java.io.StringReader) Iterator(java.util.Iterator) ArrayList(java.util.ArrayList) EList(org.eclipse.emf.common.util.EList) List(java.util.List) XSDAnnotation(org.eclipse.xsd.XSDAnnotation) XSDComplexTypeDefinition(org.eclipse.xsd.XSDComplexTypeDefinition) XSDParticle(org.eclipse.xsd.XSDParticle) XSDSchema(org.eclipse.xsd.XSDSchema)

Example 9 with XSDTypeDefinition

use of org.eclipse.xsd.XSDTypeDefinition in project tmdm-studio-se by Talend.

the class XSDUtil method isSimpleTypeElement.

public static boolean isSimpleTypeElement(XSDParticle particle) {
    XSDTerm term = particle.getTerm();
    if (term instanceof XSDElementDeclaration) {
        XSDElementDeclaration element = ((XSDElementDeclaration) term);
        XSDTypeDefinition type = element.getType();
        if (type instanceof XSDSimpleTypeDefinition) {
            return true;
        }
    }
    return false;
}
Also used : XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) XSDSimpleTypeDefinition(org.eclipse.xsd.XSDSimpleTypeDefinition) XSDTerm(org.eclipse.xsd.XSDTerm) XSDTypeDefinition(org.eclipse.xsd.XSDTypeDefinition)

Example 10 with XSDTypeDefinition

use of org.eclipse.xsd.XSDTypeDefinition in project tmdm-studio-se by Talend.

the class XSDUtil method iterateParticle.

private static void iterateParticle(XSDParticle particle, IXPathSelectionFilter filter, Set<String> paths, String prefix) {
    XSDTerm term = particle.getTerm();
    if (term instanceof XSDModelGroup) {
        EList<XSDParticle> contents = ((XSDModelGroup) term).getContents();
        for (XSDParticle p : contents) {
            XSDTerm t = p.getTerm();
            if (t instanceof XSDElementDeclaration) {
                XSDElementDeclaration element = ((XSDElementDeclaration) t);
                FilterResult r = filter.check(p);
                if (r == FilterResult.ENABLE) {
                    String path = prefix + element.getName();
                    paths.add(path);
                } else {
                    XSDTypeDefinition type = element.getType();
                    if (type instanceof XSDComplexTypeDefinition) {
                        String nextPrefix = prefix + element.getName() + DIVIDE;
                        XSDParticle cp = type.getComplexType();
                        iterateParticle(cp, filter, paths, nextPrefix);
                    }
                }
            }
        }
    }
}
Also used : XSDModelGroup(org.eclipse.xsd.XSDModelGroup) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) XSDTerm(org.eclipse.xsd.XSDTerm) FilterResult(com.amalto.workbench.dialogs.datamodel.IXPathSelectionFilter.FilterResult) XSDComplexTypeDefinition(org.eclipse.xsd.XSDComplexTypeDefinition) XSDParticle(org.eclipse.xsd.XSDParticle) XSDTypeDefinition(org.eclipse.xsd.XSDTypeDefinition)

Aggregations

XSDTypeDefinition (org.eclipse.xsd.XSDTypeDefinition)119 XSDComplexTypeDefinition (org.eclipse.xsd.XSDComplexTypeDefinition)66 XSDElementDeclaration (org.eclipse.xsd.XSDElementDeclaration)57 XSDSimpleTypeDefinition (org.eclipse.xsd.XSDSimpleTypeDefinition)46 ArrayList (java.util.ArrayList)39 XSDParticle (org.eclipse.xsd.XSDParticle)36 XSDModelGroup (org.eclipse.xsd.XSDModelGroup)32 Iterator (java.util.Iterator)26 XSDSchema (org.eclipse.xsd.XSDSchema)26 List (java.util.List)22 XSDAttributeDeclaration (org.eclipse.xsd.XSDAttributeDeclaration)17 EList (org.eclipse.emf.common.util.EList)16 TreeObject (com.amalto.workbench.models.TreeObject)14 XSDIdentityConstraintDefinition (org.eclipse.xsd.XSDIdentityConstraintDefinition)14 XSDAttributeGroupDefinition (org.eclipse.xsd.XSDAttributeGroupDefinition)13 XSDTerm (org.eclipse.xsd.XSDTerm)13 XSDFactory (org.eclipse.xsd.XSDFactory)12 XSDConcreteComponent (org.eclipse.xsd.XSDConcreteComponent)11 XSDAnnotation (org.eclipse.xsd.XSDAnnotation)10 XSDComplexTypeContent (org.eclipse.xsd.XSDComplexTypeContent)10