@Test public void testSelfJoin() throws Exception { ODataMetadataProcessor processor = new ODataMetadataProcessor(); MetadataFactory mf = new MetadataFactory( "vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null); CsdlEntityType g1Entity = entityType("g1"); CsdlNavigationProperty navProperty = new CsdlNavigationProperty(); navProperty.setName("self"); navProperty.setType("Collection(namespace.g1)"); navProperty.setNullable(false); navProperty.setPartner("PartnerPath"); navProperty.setCollection(true); g1Entity.setNavigationProperties(Arrays.asList(navProperty)); CsdlEntitySet g1Set = createES("G1", "namespace.g1"); CsdlNavigationPropertyBinding navBinding = new CsdlNavigationPropertyBinding(); navBinding.setPath("self"); navBinding.setTarget("G1"); g1Set.setNavigationPropertyBindings(Arrays.asList(navBinding)); XMLMetadata metadata = buildXmlMetadata(g1Entity, g1Set); processor.getMetadata(mf, metadata); Table g1 = mf.getSchema().getTable("G1_self"); assertNotNull(g1); assertEquals("self", g1.getForeignKeys().get(0).getName()); assertNotNull(g1.getForeignKeys().get(0).getColumnByName("G1_e1")); assertEquals("self", g1.getNameInSource()); }
static MetadataFactory oneToManyRelationMetadata() throws TranslatorException { ODataMetadataProcessor processor = new ODataMetadataProcessor(); MetadataFactory mf = new MetadataFactory( "vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null); CsdlEntityType g1Entity = entityType("g1"); CsdlEntityType g2Entity = multipleKeyEntityType("g2"); CsdlNavigationProperty navProperty = new CsdlNavigationProperty(); navProperty.setName("one_2_many"); navProperty.setType("Collection(namespace.g2)"); navProperty.setNullable(false); navProperty.setPartner("PartnerPath"); navProperty.setCollection(true); 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_many"); navBinding.setTarget("G2"); g1Set.setNavigationPropertyBindings(Arrays.asList(navBinding)); XMLMetadata metadata = buildXmlMetadata(g1Entity, g1Set, g2Entity, g2Set); processor.getMetadata(mf, metadata); return mf; }