Search in sources :

Example 1 with EdmEntitySet

use of org.odata4j.edm.EdmEntitySet in project teiid by teiid.

the class TestODataMetadataProcessor method testManytoManyAssosiation.

@Test
public void testManytoManyAssosiation() throws Exception {
    ODataMetadataProcessor processor = new ODataMetadataProcessor();
    MetadataFactory mf = new MetadataFactory("vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null);
    EdmEntityType.Builder g1Entity = entityType("g1");
    EdmEntityType.Builder g2Entity = entityType("g2");
    EdmAssociationEnd.Builder aend1 = EdmAssociationEnd.newBuilder().setRole("source").setType(g1Entity).setMultiplicity(EdmMultiplicity.MANY);
    EdmAssociationEnd.Builder aend2 = EdmAssociationEnd.newBuilder().setRole("target").setType(g2Entity).setMultiplicity(EdmMultiplicity.MANY);
    EdmAssociation.Builder assocition = EdmAssociation.newBuilder().setNamespace("namspace").setName("m_2_m").setEnds(aend2, aend1);
    EdmNavigationProperty.Builder navigation = EdmNavigationProperty.newBuilder("g1").setFromTo(aend2, aend1).setFromToName("source", "target").setRelationship(assocition);
    g2Entity.addNavigationProperties(navigation);
    EdmEntitySet g1Set = EdmEntitySet.newBuilder().setName("G1").setEntityType(g1Entity).build();
    EdmEntitySet g2Set = EdmEntitySet.newBuilder().setName("G2").setEntityType(g2Entity).build();
    processor.addEntitySetAsTable(mf, g1Set);
    processor.addEntitySetAsTable(mf, g2Set);
    processor.addNavigationRelations(mf, "G2", g2Entity.build());
    Table g1 = mf.getSchema().getTable("G1");
    Table g2 = mf.getSchema().getTable("G2");
    Table linkTable = mf.getSchema().getTable("m_2_m");
    assertEquals(1, linkTable.getColumns().size());
    assertEquals("e1", linkTable.getColumns().get(0).getName());
    assertNotNull(linkTable);
    assertEquals("G2,G1", linkTable.getProperty(ODataMetadataProcessor.LINK_TABLES, false));
    ForeignKey fk1 = linkTable.getForeignKeys().get(0);
    assertEquals("G2_FK", fk1.getName());
    assertNotNull(fk1.getColumnByName("e1"));
    ForeignKey fk2 = linkTable.getForeignKeys().get(1);
    assertEquals("G1_FK", fk2.getName());
    assertNotNull(fk2.getColumnByName("e1"));
}
Also used : EdmAssociationEnd(org.odata4j.edm.EdmAssociationEnd) Table(org.teiid.metadata.Table) EdmEntityType(org.odata4j.edm.EdmEntityType) EdmNavigationProperty(org.odata4j.edm.EdmNavigationProperty) Properties(java.util.Properties) ForeignKey(org.teiid.metadata.ForeignKey) RealMetadataFactory(org.teiid.query.unittest.RealMetadataFactory) MetadataFactory(org.teiid.metadata.MetadataFactory) EdmAssociation(org.odata4j.edm.EdmAssociation) EdmEntitySet(org.odata4j.edm.EdmEntitySet) Test(org.junit.Test)

Example 2 with EdmEntitySet

use of org.odata4j.edm.EdmEntitySet in project teiid by teiid.

the class TestODataMetadataProcessor method testManytoManyAssosiationWithReferntialConstraint.

@Test
public void testManytoManyAssosiationWithReferntialConstraint() throws Exception {
    ODataMetadataProcessor processor = new ODataMetadataProcessor();
    MetadataFactory mf = new MetadataFactory("vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null);
    EdmEntityType.Builder g1Entity = entityType("g1");
    g1Entity.addProperties(EdmProperty.newBuilder("g2e2").setType(EdmSimpleType.STRING).setNullable(false));
    EdmEntityType.Builder g2Entity = entityType("g2");
    EdmAssociationEnd.Builder aend1 = EdmAssociationEnd.newBuilder().setRole("source").setType(g1Entity).setMultiplicity(EdmMultiplicity.MANY);
    EdmAssociationEnd.Builder aend2 = EdmAssociationEnd.newBuilder().setRole("target").setType(g2Entity).setMultiplicity(EdmMultiplicity.MANY);
    EdmReferentialConstraint.Builder refContraint = EdmReferentialConstraint.newBuilder().addPrincipalReferences("e1").addDependentReferences("g2e2");
    EdmAssociation.Builder assocition = EdmAssociation.newBuilder().setNamespace("namspace").setName("m_2_m").setEnds(aend2, aend1).setRefConstraint(refContraint);
    EdmNavigationProperty.Builder navigation = EdmNavigationProperty.newBuilder("g1").setFromTo(aend2, aend1).setFromToName("source", "target").setRelationship(assocition);
    g2Entity.addNavigationProperties(navigation);
    EdmEntitySet g1Set = EdmEntitySet.newBuilder().setName("G1").setEntityType(g1Entity).build();
    EdmEntitySet g2Set = EdmEntitySet.newBuilder().setName("G2").setEntityType(g2Entity).build();
    processor.addEntitySetAsTable(mf, g1Set);
    processor.addEntitySetAsTable(mf, g2Set);
    processor.addNavigationRelations(mf, "G2", g2Entity.build());
    Table g1 = mf.getSchema().getTable("G1");
    Table g2 = mf.getSchema().getTable("G2");
    Table linkTable = mf.getSchema().getTable("m_2_m");
    assertEquals(2, linkTable.getColumns().size());
    assertEquals("e1", linkTable.getColumns().get(0).getName());
    assertEquals("g2e2", linkTable.getColumns().get(1).getName());
    assertNotNull(linkTable);
    assertEquals("G2,G1", linkTable.getProperty(ODataMetadataProcessor.LINK_TABLES, false));
    ForeignKey fk = linkTable.getForeignKeys().get(0);
    assertEquals("G2_FK", fk.getName());
    assertNotNull(fk.getColumnByName("e1"));
    ForeignKey fk2 = linkTable.getForeignKeys().get(1);
    assertEquals("G1_FK", fk2.getName());
    assertNotNull(fk2.getColumnByName("g2e2"));
}
Also used : EdmAssociationEnd(org.odata4j.edm.EdmAssociationEnd) Table(org.teiid.metadata.Table) EdmReferentialConstraint(org.odata4j.edm.EdmReferentialConstraint) EdmEntityType(org.odata4j.edm.EdmEntityType) EdmNavigationProperty(org.odata4j.edm.EdmNavigationProperty) Properties(java.util.Properties) ForeignKey(org.teiid.metadata.ForeignKey) RealMetadataFactory(org.teiid.query.unittest.RealMetadataFactory) MetadataFactory(org.teiid.metadata.MetadataFactory) EdmAssociation(org.odata4j.edm.EdmAssociation) EdmEntitySet(org.odata4j.edm.EdmEntitySet) Test(org.junit.Test)

Example 3 with EdmEntitySet

use of org.odata4j.edm.EdmEntitySet in project teiid by teiid.

the class TestODataMetadataProcessor method testEnititySetWithComplexType.

@Test
public void testEnititySetWithComplexType() throws Exception {
    ODataMetadataProcessor processor = new ODataMetadataProcessor();
    MetadataFactory mf = new MetadataFactory("vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null);
    EdmEntitySet es = EdmEntitySet.newBuilder().setName("Person").setEntityType(buildPersonEntity(buildAddressEntity().build())).build();
    processor.addEntitySetAsTable(mf, es);
    assertEquals(1, mf.getSchema().getTables().size());
    assertNotNull(mf.getSchema().getTable("Person"));
    Table personTable = mf.getSchema().getTable("Person");
    assertEquals(5, personTable.getColumns().size());
    assertNotNull(personTable.getColumnByName("address_street"));
}
Also used : Table(org.teiid.metadata.Table) RealMetadataFactory(org.teiid.query.unittest.RealMetadataFactory) MetadataFactory(org.teiid.metadata.MetadataFactory) EdmEntitySet(org.odata4j.edm.EdmEntitySet) Properties(java.util.Properties) Test(org.junit.Test)

Example 4 with EdmEntitySet

use of org.odata4j.edm.EdmEntitySet in project teiid by teiid.

the class TestODataMetadataProcessor method testOneToOneAssosiation.

@Test
public void testOneToOneAssosiation() throws Exception {
    ODataMetadataProcessor processor = new ODataMetadataProcessor();
    MetadataFactory mf = new MetadataFactory("vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null);
    EdmEntityType.Builder g1Entity = entityType("g1");
    EdmEntityType.Builder g2Entity = entityType("g2");
    EdmAssociationEnd.Builder aend1 = EdmAssociationEnd.newBuilder().setRole("source").setType(g1Entity).setMultiplicity(EdmMultiplicity.ONE);
    EdmAssociationEnd.Builder aend2 = EdmAssociationEnd.newBuilder().setRole("target").setType(g2Entity).setMultiplicity(EdmMultiplicity.ONE);
    EdmAssociation.Builder assocition = EdmAssociation.newBuilder().setNamespace("namspace").setName("one_2_one").setEnds(aend2, aend1);
    EdmNavigationProperty.Builder navigation = EdmNavigationProperty.newBuilder("g1").setFromTo(aend2, aend1).setFromToName("source", "target").setRelationship(assocition);
    g2Entity.addNavigationProperties(navigation);
    EdmEntitySet g1Set = EdmEntitySet.newBuilder().setName("G1").setEntityType(g1Entity).build();
    processor.addEntitySetAsTable(mf, g1Set);
    EdmEntitySet g2Set = EdmEntitySet.newBuilder().setName("G2").setEntityType(g2Entity).build();
    processor.addEntitySetAsTable(mf, g2Set);
    processor.addNavigationRelations(mf, "G2", g2Entity.build());
    Table g1 = mf.getSchema().getTable("G1");
    Table g2 = mf.getSchema().getTable("G2");
    ForeignKey fk = g1.getForeignKeys().get(0);
    assertEquals("one_2_one", fk.getName());
    assertNotNull(fk.getColumnByName("e1"));
}
Also used : EdmAssociationEnd(org.odata4j.edm.EdmAssociationEnd) Table(org.teiid.metadata.Table) EdmEntityType(org.odata4j.edm.EdmEntityType) EdmNavigationProperty(org.odata4j.edm.EdmNavigationProperty) Properties(java.util.Properties) ForeignKey(org.teiid.metadata.ForeignKey) RealMetadataFactory(org.teiid.query.unittest.RealMetadataFactory) MetadataFactory(org.teiid.metadata.MetadataFactory) EdmAssociation(org.odata4j.edm.EdmAssociation) EdmEntitySet(org.odata4j.edm.EdmEntitySet) Test(org.junit.Test)

Example 5 with EdmEntitySet

use of org.odata4j.edm.EdmEntitySet in project teiid by teiid.

the class TestODataMetadataProcessor method testMultipleEnititySetWithSameComplexType.

@Test
public void testMultipleEnititySetWithSameComplexType() throws Exception {
    ODataMetadataProcessor processor = new ODataMetadataProcessor();
    MetadataFactory mf = new MetadataFactory("vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null);
    EdmEntitySet es = EdmEntitySet.newBuilder().setName("Person").setEntityType(buildPersonEntity(buildAddressEntity().build())).build();
    processor.addEntitySetAsTable(mf, es);
    es = EdmEntitySet.newBuilder().setName("Business").setEntityType(buildBusinessEntity(buildAddressEntity().build())).build();
    processor.addEntitySetAsTable(mf, es);
    assertEquals(2, mf.getSchema().getTables().size());
    assertNotNull(mf.getSchema().getTable("Person"));
    assertNotNull(mf.getSchema().getTable("Business"));
    Table personTable = mf.getSchema().getTable("Person");
    assertEquals(5, personTable.getColumns().size());
    Table businessTable = mf.getSchema().getTable("Business");
    assertEquals(4, businessTable.getColumns().size());
    assertNotNull(personTable.getColumnByName("address_street"));
    assertNotNull(businessTable.getColumnByName("address_street"));
}
Also used : Table(org.teiid.metadata.Table) RealMetadataFactory(org.teiid.query.unittest.RealMetadataFactory) MetadataFactory(org.teiid.metadata.MetadataFactory) EdmEntitySet(org.odata4j.edm.EdmEntitySet) Properties(java.util.Properties) Test(org.junit.Test)

Aggregations

EdmEntitySet (org.odata4j.edm.EdmEntitySet)8 Properties (java.util.Properties)7 Test (org.junit.Test)7 MetadataFactory (org.teiid.metadata.MetadataFactory)7 Table (org.teiid.metadata.Table)7 RealMetadataFactory (org.teiid.query.unittest.RealMetadataFactory)7 EdmEntityType (org.odata4j.edm.EdmEntityType)5 EdmAssociation (org.odata4j.edm.EdmAssociation)4 EdmAssociationEnd (org.odata4j.edm.EdmAssociationEnd)4 EdmNavigationProperty (org.odata4j.edm.EdmNavigationProperty)4 ForeignKey (org.teiid.metadata.ForeignKey)4 EdmReferentialConstraint (org.odata4j.edm.EdmReferentialConstraint)2 StringWriter (java.io.StringWriter)1 ArrayList (java.util.ArrayList)1 EdmProperty (org.odata4j.edm.EdmProperty)1 Entry (org.odata4j.format.Entry)1 Column (org.teiid.metadata.Column)1 KeyRecord (org.teiid.metadata.KeyRecord)1