@Test public void testMultipleEnititySetWithSameComplexType() throws Exception { ODataMetadataProcessor processor = new ODataMetadataProcessor(); MetadataFactory mf = new MetadataFactory( "vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null); CsdlComplexType address = complexType("Address"); XMLMetadata metadata = buildXmlMetadata( createES("Persons", "namespace.Person"), buildPersonEntity(address), address, createES("Corporate", "namespace.Business"), buildBusinessEntity(address)); processor.getMetadata(mf, metadata); assertEquals(5, mf.getSchema().getTables().size()); assertNotNull(mf.getSchema().getTable("Persons")); assertNotNull(mf.getSchema().getTable("Corporate")); assertNotNull(mf.getSchema().getTable("Persons_address")); assertNotNull(mf.getSchema().getTable("Corporate_address")); Table personTable = mf.getSchema().getTable("Persons"); assertEquals(2, personTable.getColumns().size()); Table personAddress = mf.getSchema().getTable("Persons_address"); assertEquals(4, personAddress.getColumns().size()); ForeignKey fk = personAddress.getForeignKeys().get(0); assertNotNull(fk.getColumnByName("ssn")); Table businessTable = mf.getSchema().getTable("Corporate"); assertEquals(1, businessTable.getColumns().size()); Table corporateAddress = mf.getSchema().getTable("Corporate_address"); assertEquals(4, corporateAddress.getColumns().size()); fk = corporateAddress.getForeignKeys().get(0); assertNotNull(fk.getColumnByName("name")); }
@Test public void testOneToManyAssosiation() throws Exception { MetadataFactory mf = oneToManyRelationMetadata(); Table g1 = mf.getSchema().getTable("G1"); Table g2 = mf.getSchema().getTable("G2"); ForeignKey fk = g2.getForeignKeys().get(0); assertEquals("one_2_many", fk.getName()); assertNotNull(fk.getColumnByName("e1")); }
@Test public void testAssosiationWithReferentialContriant() throws Exception { ODataMetadataProcessor processor = new ODataMetadataProcessor(); MetadataFactory mf = new MetadataFactory( "vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null); CsdlEntityType g1Entity = entityType("g1"); g1Entity.getProperties().add(createProperty("g2e2", EdmPrimitiveTypeKind.String)); g1Entity.setKey(Arrays.asList(new CsdlPropertyRef().setName("g2e2"))); CsdlEntityType g2Entity = entityType("g2"); CsdlNavigationProperty navProperty = new CsdlNavigationProperty(); navProperty.setName("one_2_one"); navProperty.setType("namespace.g2"); navProperty.setNullable(false); navProperty.setPartner("PartnerPath"); navProperty.setReferentialConstraints( Arrays.asList( new CsdlReferentialConstraint().setProperty("g2e2").setReferencedProperty("e2"))); g1Entity.setNavigationProperties(Arrays.asList(navProperty)); CsdlEntitySet g1Set = createES("G1", "namespace.g1"); CsdlEntitySet g2Set = createES("G2", "namespace.g2"); CsdlNavigationPropertyBinding navBinding = new CsdlNavigationPropertyBinding(); navBinding.setPath("one_2_one"); navBinding.setTarget("G2"); g1Set.setNavigationPropertyBindings(Arrays.asList(navBinding)); XMLMetadata metadata = buildXmlMetadata(g1Entity, g1Set, g2Entity, g2Set); processor.getMetadata(mf, metadata); Table g1 = mf.getSchema().getTable("G1"); Table g2 = mf.getSchema().getTable("G2"); assertNotNull(g1); assertNotNull(g2); ForeignKey fk = g2.getForeignKeys().get(0); assertEquals("one_2_one", fk.getName()); assertNotNull(fk.getColumnByName("e2")); assertEquals("g2e2", fk.getReferenceColumns().get(0)); }