Search in sources :

Example 36 with XSDModelGroup

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

the class UtilTest method testGetTopParent.

@Test
public void testGetTopParent() {
    // 
    List<Object> topParent = Util.getTopParent(null);
    assertNull(topParent);
    XSDFactory factory = XSDFactory.eINSTANCE;
    // 
    XSDElementDeclaration concept = factory.createXSDElementDeclaration();
    topParent = Util.getTopParent(concept);
    assertNull(topParent);
    // concept with three children
    // $NON-NLS-1$
    String element1 = "Id";
    // $NON-NLS-1$
    String element2 = "code";
    // $NON-NLS-1$
    String element3 = "address";
    XSDSchema xsdSchema = factory.createXSDSchema();
    xsdSchema.getContents().add(concept);
    XSDComplexTypeDefinition xsdComplexTypeDef = factory.createXSDComplexTypeDefinition();
    xsdComplexTypeDef.setBaseTypeDefinition(// $NON-NLS-1$
    xsdSchema.resolveComplexTypeDefinition(xsdSchema.getSchemaForSchemaNamespace(), "anyType"));
    concept.setAnonymousTypeDefinition(xsdComplexTypeDef);
    XSDParticle xsdParticle = factory.createXSDParticle();
    xsdComplexTypeDef.setContent(xsdParticle);
    XSDModelGroup xsdModelGroup = factory.createXSDModelGroup();
    xsdParticle.setContent(xsdModelGroup);
    XSDParticle childParticle1 = factory.createXSDParticle();
    XSDElementDeclaration childElement1 = factory.createXSDElementDeclaration();
    childElement1.setName(element1);
    childParticle1.setContent(childElement1);
    XSDParticle childParticle2 = factory.createXSDParticle();
    XSDElementDeclaration childElement2 = factory.createXSDElementDeclaration();
    childElement2.setName(element2);
    childParticle2.setContent(childElement2);
    XSDParticle childParticle3 = factory.createXSDParticle();
    XSDElementDeclaration childElement3 = factory.createXSDElementDeclaration();
    childElement3.setName(element3);
    childParticle3.setContent(childElement3);
    xsdModelGroup.getContents().add(childParticle1);
    xsdModelGroup.getContents().add(childParticle2);
    xsdModelGroup.getContents().add(childParticle3);
    XSDIdentityConstraintDefinition xsdIdConsDef = factory.createXSDIdentityConstraintDefinition();
    concept.getIdentityConstraintDefinitions().add(xsdIdConsDef);
    XSDXPathDefinition xsdXPathDefinition1 = factory.createXSDXPathDefinition();
    xsdXPathDefinition1.setValue(element1);
    XSDXPathDefinition xsdXPathDefinition2 = factory.createXSDXPathDefinition();
    xsdXPathDefinition2.setValue(element2);
    xsdIdConsDef.getFields().add(xsdXPathDefinition1);
    xsdIdConsDef.getFields().add(xsdXPathDefinition2);
    // complex type with one child
    XSDComplexTypeDefinition xsdComplexTypeDef2 = factory.createXSDComplexTypeDefinition();
    xsdComplexTypeDef2.setBaseTypeDefinition(// $NON-NLS-1$
    xsdSchema.resolveComplexTypeDefinition(xsdSchema.getSchemaForSchemaNamespace(), "anyType"));
    XSDParticle xsdParticle2 = factory.createXSDParticle();
    xsdComplexTypeDef2.setContent(xsdParticle2);
    XSDModelGroup xsdModelGroup2 = factory.createXSDModelGroup();
    xsdParticle2.setContent(xsdModelGroup2);
    XSDParticle childParticle_2 = factory.createXSDParticle();
    XSDElementDeclaration childElement_2 = factory.createXSDElementDeclaration();
    childElement_2.setName(element1);
    childParticle_2.setContent(childElement_2);
    xsdModelGroup2.getContents().add(childParticle_2);
    xsdSchema.getContents().add(xsdComplexTypeDef2);
    // 
    topParent = Util.getTopParent(childElement1);
    assertNotNull(topParent);
    assertTrue(topParent.size() == 2);
    // 
    topParent = Util.getTopParent(childElement_2);
    assertNull(topParent);
}
Also used : XSDFactory(org.eclipse.xsd.XSDFactory) XSDModelGroup(org.eclipse.xsd.XSDModelGroup) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) XSDIdentityConstraintDefinition(org.eclipse.xsd.XSDIdentityConstraintDefinition) XSDComplexTypeDefinition(org.eclipse.xsd.XSDComplexTypeDefinition) XSDXPathDefinition(org.eclipse.xsd.XSDXPathDefinition) XSDParticle(org.eclipse.xsd.XSDParticle) XSDSchema(org.eclipse.xsd.XSDSchema) Test(org.junit.Test)

Example 37 with XSDModelGroup

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

the class UtilTest method testIsSimpleTypedParticle.

@Test
public void testIsSimpleTypedParticle() {
    boolean isSimpleTypedParticle = Util.isSimpleTypedParticle(null);
    assertFalse(isSimpleTypedParticle);
    XSDFactory factory = XSDFactory.eINSTANCE;
    XSDParticle particle = factory.createXSDParticle();
    isSimpleTypedParticle = Util.isSimpleTypedParticle(particle);
    assertFalse(isSimpleTypedParticle);
    XSDElementDeclaration elementDeclaration = factory.createXSDElementDeclaration();
    elementDeclaration.setTypeDefinition(factory.createXSDSimpleTypeDefinition());
    particle.setContent(elementDeclaration);
    isSimpleTypedParticle = Util.isSimpleTypedParticle(particle);
    assertTrue(isSimpleTypedParticle);
    XSDModelGroup modelGroup = factory.createXSDModelGroup();
    particle.setContent(modelGroup);
    isSimpleTypedParticle = Util.isSimpleTypedParticle(particle);
    assertFalse(isSimpleTypedParticle);
}
Also used : XSDFactory(org.eclipse.xsd.XSDFactory) XSDModelGroup(org.eclipse.xsd.XSDModelGroup) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) XSDParticle(org.eclipse.xsd.XSDParticle) Test(org.junit.Test)

Example 38 with XSDModelGroup

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

the class XSDUtilTest method testIsFirstLevelChild.

@Test
public void testIsFirstLevelChild() throws Exception {
    // $NON-NLS-1$
    String fileName = "Product_0.1.xsd";
    // $NON-NLS-1$
    String elementName = "Product";
    String xsdString = TestUtil.readTestResource(XSDUtilTest.this.getClass(), fileName);
    assertNotNull(xsdString);
    XSDSchema xsdSchema = Util.getXSDSchema(xsdString);
    XSDElementDeclaration decl = null;
    for (XSDElementDeclaration element : xsdSchema.getElementDeclarations()) {
        if (element.getName().equals(elementName)) {
            decl = element;
        }
    }
    if (decl != null) {
        XSDComplexTypeDefinition ctypeDefinition = (XSDComplexTypeDefinition) decl.getTypeDefinition();
        XSDComplexTypeContent content = ctypeDefinition.getContent();
        if (content instanceof XSDParticle) {
            XSDParticle xsdParticle = (XSDParticle) content;
            XSDParticleContent particleContent = xsdParticle.getContent();
            if (particleContent instanceof XSDModelGroup) {
                XSDModelGroup modelGroup = (XSDModelGroup) particleContent;
                EList<XSDParticle> contents = modelGroup.getContents();
                for (XSDParticle particle : contents) {
                    assertTrue(XSDUtil.isFirstLevelChild(particle));
                    if (particle.getTerm() instanceof XSDElementDeclaration) {
                        XSDElementDeclaration xsdElementDecl = (XSDElementDeclaration) particle.getTerm();
                        XSDTypeDefinition typeDefinition = xsdElementDecl.getTypeDefinition();
                        if (typeDefinition instanceof XSDComplexTypeDefinition) {
                            XSDParticle childPart = (XSDParticle) ((XSDComplexTypeDefinition) typeDefinition).getContent();
                            XSDModelGroup childModelGroup = (XSDModelGroup) childPart.getContent();
                            for (XSDParticle childParticle : childModelGroup.getContents()) {
                                assertFalse(XSDUtil.isFirstLevelChild(childParticle));
                            }
                        }
                    }
                }
            }
        }
    }
}
Also used : XSDComplexTypeContent(org.eclipse.xsd.XSDComplexTypeContent) XSDModelGroup(org.eclipse.xsd.XSDModelGroup) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) XSDParticleContent(org.eclipse.xsd.XSDParticleContent) XSDComplexTypeDefinition(org.eclipse.xsd.XSDComplexTypeDefinition) XSDParticle(org.eclipse.xsd.XSDParticle) XSDSchema(org.eclipse.xsd.XSDSchema) XSDTypeDefinition(org.eclipse.xsd.XSDTypeDefinition) Test(org.junit.Test)

Example 39 with XSDModelGroup

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

the class UtilMockTest method testGetComplexChilds.

@Test
public void testGetComplexChilds() {
    // $NON-NLS-1$
    String methodToExecute = "getComplexChilds";
    // $NON-NLS-1$
    String method_getChildElements = "getChildElements";
    // $NON-NLS-1$
    String parentxpath = "";
    // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    String[] names = { "simpleA", "complexB", "simpleC", "complexD" };
    // $NON-NLS-1$ //$NON-NLS-2$
    String[] childpath = { "child/aa", "child/bb" };
    boolean onlyTopLevel = false;
    Set<Object> visited = new HashSet<Object>();
    XSDFactory factory = XSDFactory.eINSTANCE;
    XSDComplexTypeDefinition complexTypeDef = factory.createXSDComplexTypeDefinition();
    PowerMockito.mockStatic(Util.class);
    try {
        PowerMockito.when(Util.class, methodToExecute, anyString(), any(XSDComplexTypeDefinition.class), anyBoolean(), anySet()).thenCallRealMethod();
        Map<String, XSDParticle> complexChilds = Whitebox.invokeMethod(Util.class, methodToExecute, parentxpath, complexTypeDef, true, null);
        assertNotNull(complexChilds);
        assertTrue(complexChilds.isEmpty());
        // 
        Map<String, XSDParticle> childElements1 = new HashMap<String, XSDParticle>();
        XSDParticle childParticle1 = factory.createXSDParticle();
        XSDParticle childParticle2 = factory.createXSDParticle();
        childElements1.put(childpath[0], childParticle1);
        childElements1.put(childpath[1], childParticle2);
        PowerMockito.when(Util.class, method_getChildElements, anyString(), any(XSDComplexTypeDefinition.class), anyBoolean(), anySet()).thenReturn(childElements1);
        XSDModelGroup group = factory.createXSDModelGroup();
        for (int i = 0; i < names.length; i++) {
            XSDParticle particle = factory.createXSDParticle();
            XSDElementDeclaration elementDecl = factory.createXSDElementDeclaration();
            XSDTypeDefinition xsdType = factory.createXSDSimpleTypeDefinition();
            if (i % 2 != 0) {
                xsdType = factory.createXSDComplexTypeDefinition();
            }
            elementDecl.setTypeDefinition(xsdType);
            elementDecl.setName(names[i]);
            particle.setTerm(elementDecl);
            group.getParticles().add(particle);
        }
        XSDParticle typeParticle = factory.createXSDParticle();
        typeParticle.setTerm(group);
        complexTypeDef.setContent(typeParticle);
        complexChilds = Whitebox.invokeMethod(Util.class, methodToExecute, parentxpath, complexTypeDef, onlyTopLevel, visited);
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("simpleA"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("simpleC"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("//complexB"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("//complexD"));
        if (complexChilds.size() == 6) {
            assertTrue(complexChilds.keySet().contains(childpath[0]));
            assertTrue(complexChilds.keySet().contains(childpath[1]));
        }
        onlyTopLevel = true;
        complexChilds = Whitebox.invokeMethod(Util.class, methodToExecute, parentxpath, complexTypeDef, onlyTopLevel, visited);
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("simpleA"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("simpleC"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("//complexB"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("//complexD"));
        // 
        // $NON-NLS-1$
        parentxpath = "parentXPath";
        onlyTopLevel = false;
        visited.clear();
        complexChilds = Whitebox.invokeMethod(Util.class, methodToExecute, parentxpath, complexTypeDef, onlyTopLevel, visited);
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("parentXPath/simpleA"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("parentXPath/simpleC"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("parentXPath//complexB"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("parentXPath//complexD"));
        if (complexChilds.size() == 6) {
            assertTrue(complexChilds.keySet().contains(childpath[0]));
            assertTrue(complexChilds.keySet().contains(childpath[1]));
        }
        // 
        onlyTopLevel = true;
        visited.clear();
        complexChilds = Whitebox.invokeMethod(Util.class, methodToExecute, parentxpath, complexTypeDef, onlyTopLevel, visited);
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("parentXPath/simpleA"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("parentXPath/simpleC"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("parentXPath//complexB"));
        // $NON-NLS-1$
        assertTrue(complexChilds.keySet().contains("parentXPath//complexD"));
    } catch (Exception e) {
        log.error(e.getMessage(), e);
    }
}
Also used : XSDFactory(org.eclipse.xsd.XSDFactory) HashMap(java.util.HashMap) XSDModelGroup(org.eclipse.xsd.XSDModelGroup) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) XSDTypeDefinition(org.eclipse.xsd.XSDTypeDefinition) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) XSDComplexTypeDefinition(org.eclipse.xsd.XSDComplexTypeDefinition) XSDParticle(org.eclipse.xsd.XSDParticle) HashSet(java.util.HashSet) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 40 with XSDModelGroup

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

the class UtilMockTest method testIsReferrenced.

@Test
public void testIsReferrenced() {
    PowerMockito.mockStatic(Util.class);
    try {
        // $NON-NLS-1$
        String method_isReferenced = "isReferrenced";
        PowerMockito.when(Util.class, method_isReferenced, Mockito.any(XSDElementDeclaration.class), Mockito.any(XSDElementDeclaration.class)).thenCallRealMethod();
        XSDElementDeclaration xsdElementDeclaration1 = XSDFactory.eINSTANCE.createXSDElementDeclaration();
        XSDElementDeclaration xsdElementDeclaration2 = XSDFactory.eINSTANCE.createXSDElementDeclaration();
        // 
        boolean isReferenced = Whitebox.invokeMethod(Util.class, method_isReferenced, xsdElementDeclaration1, xsdElementDeclaration1);
        assertTrue(isReferenced);
        // 
        isReferenced = Whitebox.invokeMethod(Util.class, method_isReferenced, xsdElementDeclaration1, xsdElementDeclaration2);
        assertFalse(isReferenced);
        // 
        // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        XSDParticle xsdParticle = buildXSDParticleWithChildren(3, new String[] { "a", "b", "c" });
        XSDComplexTypeDefinition xsdComplexTypeDefinition = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
        xsdComplexTypeDefinition.setContent(xsdParticle);
        xsdElementDeclaration2.setTypeDefinition(xsdComplexTypeDefinition);
        isReferenced = Whitebox.invokeMethod(Util.class, method_isReferenced, xsdElementDeclaration1, xsdElementDeclaration2);
        assertFalse(isReferenced);
        // 
        XSDParticle xsdParticle1 = XSDFactory.eINSTANCE.createXSDParticle();
        xsdParticle1.setTerm(xsdElementDeclaration1);
        XSDModelGroup modelGroup = ((XSDModelGroup) xsdParticle.getTerm());
        modelGroup.getContents().add(xsdParticle1);
        isReferenced = Whitebox.invokeMethod(Util.class, method_isReferenced, xsdElementDeclaration1, xsdElementDeclaration2);
        assertTrue(isReferenced);
    } catch (Exception e) {
        log.error(e.getMessage(), e);
    }
}
Also used : XSDModelGroup(org.eclipse.xsd.XSDModelGroup) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) XSDComplexTypeDefinition(org.eclipse.xsd.XSDComplexTypeDefinition) XSDParticle(org.eclipse.xsd.XSDParticle) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Aggregations

XSDModelGroup (org.eclipse.xsd.XSDModelGroup)119 XSDParticle (org.eclipse.xsd.XSDParticle)93 XSDElementDeclaration (org.eclipse.xsd.XSDElementDeclaration)87 XSDComplexTypeDefinition (org.eclipse.xsd.XSDComplexTypeDefinition)76 ArrayList (java.util.ArrayList)33 XSDTypeDefinition (org.eclipse.xsd.XSDTypeDefinition)32 XSDTerm (org.eclipse.xsd.XSDTerm)28 XSDFactory (org.eclipse.xsd.XSDFactory)26 XSDSimpleTypeDefinition (org.eclipse.xsd.XSDSimpleTypeDefinition)26 Test (org.junit.Test)25 XSDSchema (org.eclipse.xsd.XSDSchema)23 XSDComplexTypeContent (org.eclipse.xsd.XSDComplexTypeContent)22 EList (org.eclipse.emf.common.util.EList)21 XSDAnnotation (org.eclipse.xsd.XSDAnnotation)20 XSDModelGroupDefinition (org.eclipse.xsd.XSDModelGroupDefinition)19 List (java.util.List)18 XSDIdentityConstraintDefinition (org.eclipse.xsd.XSDIdentityConstraintDefinition)18 Iterator (java.util.Iterator)16 XSDWildcard (org.eclipse.xsd.XSDWildcard)16 TreeObject (com.amalto.workbench.models.TreeObject)15