static MetadataFactory oneToOneRelationMetadata() 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 = entityType("g2"); CsdlNavigationProperty navProperty = new CsdlNavigationProperty(); navProperty.setName("one_2_one"); navProperty.setType("namespace.g2"); navProperty.setNullable(false); navProperty.setPartner("PartnerPath"); 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); return mf; }
static MetadataFactory tripPinMetadata() throws TranslatorException { ODataMetadataProcessor processor = new ODataMetadataProcessor() { protected XMLMetadata getSchema(WSConnection conn) throws TranslatorException { try { ClientODataDeserializerImpl deserializer = new ClientODataDeserializerImpl(false, ContentType.APPLICATION_XML); XMLMetadata metadata = deserializer.toMetadata( new FileInputStream(UnitTestUtil.getTestDataFile("trippin.xml"))); return metadata; } catch (FileNotFoundException e) { e.printStackTrace(); } return null; } }; Properties props = new Properties(); props.setProperty("schemaNamespace", "Microsoft.OData.SampleService.Models.TripPin"); MetadataFactory mf = new MetadataFactory( "vdb", 1, "trippin", SystemMetadata.getInstance().getRuntimeTypeMap(), props, null); processor.process(mf, null); // String ddl = DDLStringVisitor.getDDLString(mf.getSchema(), null, null); // System.out.println(ddl); return mf; }
@Test public void testEnititySet() throws Exception { ODataMetadataProcessor processor = new ODataMetadataProcessor(); MetadataFactory mf = new MetadataFactory( "vdb", 1, "trippin", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null); ArrayList<CsdlProperty> properties = new ArrayList<CsdlProperty>(); properties.add( createProperty("name", EdmPrimitiveTypeKind.String).setMaxLength(25).setNullable(false)); properties.add(createProperty("dob", EdmPrimitiveTypeKind.DateTimeOffset).setNullable(true)); properties.add(createProperty("ssn", EdmPrimitiveTypeKind.Int64).setNullable(false)); CsdlEntityType entityType = new CsdlEntityType(); entityType.setName("Person"); entityType.setProperties(properties); entityType.setKey(Arrays.asList(new CsdlPropertyRef().setName("ssn"))); CsdlEntitySet es = createES("Persons", "namespace.Person"); XMLMetadata metadata = buildXmlMetadata(es, entityType); processor.getMetadata(mf, metadata); assertNotNull(mf.getSchema().getTable("Persons")); Table person = mf.getSchema().getTable("Persons"); assertEquals(3, person.getColumns().size()); assertNotNull(person.getColumnByName("name")); assertNotNull(person.getColumnByName("dob")); assertNotNull(person.getColumnByName("ssn")); Column name = person.getColumnByName("name"); Column dob = person.getColumnByName("dob"); Column ssn = person.getColumnByName("ssn"); assertEquals("string", name.getDatatype().getRuntimeTypeName()); assertEquals("timestamp", dob.getDatatype().getRuntimeTypeName()); assertEquals("long", ssn.getDatatype().getRuntimeTypeName()); assertTrue(name.getNullType() == NullType.No_Nulls); assertTrue(dob.getNullType() == NullType.Nullable); assertTrue(ssn.getNullType() == NullType.No_Nulls); assertEquals(25, name.getLength()); assertNotNull(person.getPrimaryKey()); assertEquals(1, person.getPrimaryKey().getColumns().size()); assertEquals("ssn", person.getPrimaryKey().getColumns().get(0).getName()); assertTrue(person.getForeignKeys().isEmpty()); }
@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)); }
static MetadataFactory multiplePKMetadata() throws TranslatorException { ODataMetadataProcessor processor = new ODataMetadataProcessor(); MetadataFactory mf = new MetadataFactory( "vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null); CsdlEntityType entityType = multipleKeyEntityType("g1"); CsdlEntitySet entitySet = createES("G1", "namespace.g1"); XMLMetadata metadata = buildXmlMetadata(entityType, entitySet); processor.getMetadata(mf, metadata); return mf; }
@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")); }
static MetadataFactory getEntityWithComplexProperty() throws TranslatorException { 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); processor.getMetadata(mf, metadata); return mf; }
@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 functionMetadata(String name, CsdlReturnType returnType, Object other) throws TranslatorException { ODataMetadataProcessor processor = new ODataMetadataProcessor(); MetadataFactory mf = new MetadataFactory( "vdb", 1, "northwind", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null); CsdlFunction func = function(name, returnType); CsdlFunctionImport funcImport = new CsdlFunctionImport(); funcImport.setFunction(new FullQualifiedName("namespace." + name)); funcImport.setName(name); XMLMetadata metadata = buildXmlMetadata(funcImport, func, other); processor.getMetadata(mf, metadata); return mf; }