private MetadataFactory loadSchema(VDBMetaData vdb, Properties p, String name, QueryParser parser) { ModelMetaData mmd = new ModelMetaData(); mmd.setName(name); vdb.addModel(mmd); InputStream is = SystemMetadata.class.getClassLoader().getResourceAsStream("org/teiid/metadata/"+name+".sql"); //$NON-NLS-1$ //$NON-NLS-2$ try { MetadataFactory factory = new MetadataFactory(vdb.getName(), vdb.getVersion(), name, typeMap, p, null); parser.parseDDL(factory, new InputStreamReader(is, Charset.forName("UTF-8"))); //$NON-NLS-1$ for (Table t : factory.getSchema().getTables().values()) { t.setSystem(true); } return factory; } finally { try { is.close(); } catch (IOException e) { throw new TeiidRuntimeException(e); } } }
private MetadataFactory loadSchema(VDBMetaData vdb, Properties p, String name, QueryParser parser) { ModelMetaData mmd = new ModelMetaData(); mmd.setName(name); vdb.addModel(mmd); InputStream is = SystemMetadata.class.getClassLoader().getResourceAsStream("org/teiid/metadata/"+name+".sql"); //$NON-NLS-1$ //$NON-NLS-2$ try { MetadataFactory factory = new MetadataFactory(vdb.getName(), vdb.getVersion(), name, typeMap, p, null); parser.parseDDL(factory, new InputStreamReader(is, Charset.forName("UTF-8"))); //$NON-NLS-1$ for (Table t : factory.getSchema().getTables().values()) { t.setSystem(true); } return factory; } finally { try { is.close(); } catch (IOException e) { throw new TeiidRuntimeException(e); } } }
private MetadataFactory loadSchema(VDBMetaData vdb, Properties p, String name, QueryParser parser) { ModelMetaData mmd = new ModelMetaData(); mmd.setName(name); vdb.addModel(mmd); InputStream is = SystemMetadata.class.getClassLoader().getResourceAsStream("org/teiid/metadata/"+name+".sql"); //$NON-NLS-1$ //$NON-NLS-2$ try { MetadataFactory factory = new MetadataFactory(vdb.getName(), vdb.getVersion(), name, typeMap, p, null); parser.parseDDL(factory, new InputStreamReader(is, Charset.forName("UTF-8"))); //$NON-NLS-1$ for (Table t : factory.getSchema().getTables().values()) { t.setSystem(true); } return factory; } finally { try { is.close(); } catch (IOException e) { throw new TeiidRuntimeException(e); } } }
ModelMetaData buildModel(String name) { ModelMetaData model = new ModelMetaData(); model.setName(name); model.setModelType(Model.Type.PHYSICAL); model.setVisible(true); return model; }
@Test public void testCorrectName() { ModelMetaData mmd = new ModelMetaData(); mmd.setName("foo"); HashMap<String, Datatype> types = new HashMap<String, Datatype>(); Datatype value = new Datatype(); value.setName("string"); types.put("string", value); MetadataFactory factory = new MetadataFactory("x", 1, types, mmd); Table x = factory.addTable("x"); Column c = factory.addColumn("a.b", "string", x); assertEquals("a_b", c.getName()); }
public static ModelMetaData createModel(String name, boolean source) { ModelMetaData model = new ModelMetaData(); model.setName(name); if (source) { model.setModelType(Model.Type.PHYSICAL); } else { model.setModelType(Model.Type.VIRTUAL); } model.setVisible(true); model.setSupportsMultiSourceBindings(false); model.addSourceMapping(name, name, null); return model; }
@Test public void testMinimalDataNoColumns() throws Exception { ModelMetaData model = new ModelMetaData(); model.setName("x"); vdb.addModel(model); MetadataFactory mf = new MetadataFactory("myVDB",1, "x", TestDDLParser.getDataTypes(), new Properties(), null); mf.addTable("y"); mf.mergeInto(store); buildTransformationMetadata(); ValidatorReport report = new MetadataValidator().validate(this.vdb, this.store); assertTrue(printError(report), report.hasItems()); }
@Test public void testNameFormat() { ModelMetaData mmd = new ModelMetaData(); mmd.setName("foo"); mmd.addProperty("importer.nameFormat", "x_%s_y"); HashMap<String, Datatype> types = new HashMap<String, Datatype>(); MetadataFactory factory = new MetadataFactory("x", 1, types, mmd); Table x = factory.addTable("x"); assertEquals("x_x_y", x.getName()); Procedure p = factory.addProcedure("a%b.c"); assertEquals("x_a%b.c_y", p.getName()); }
public static ModelMetaData buildModel(String modelName, boolean physical, VDBMetaData vdb, MetadataStore store, String ddl) throws Exception { ModelMetaData model = new ModelMetaData(); model.setName(modelName); model.setModelType(physical?Model.Type.PHYSICAL:Model.Type.VIRTUAL); vdb.addModel(model); DDLMetadataRepository repo = new DDLMetadataRepository(); MetadataFactory mf = new MetadataFactory("myVDB",1, modelName, TestDDLParser.getDataTypes(), new Properties(), ddl); mf.setParser(QueryParser.getQueryParser()); mf.getSchema().setPhysical(physical); repo.loadMetadata(mf, null, null, ddl); mf.mergeInto(store); model.addAttchment(MetadataFactory.class, mf); return model; }
@Test public void testDuplicateColumns() { ModelMetaData mmd = new ModelMetaData(); mmd.setName("foo"); mmd.addProperty("importer.renameDuplicateColumns", "true"); HashMap<String, Datatype> types = new HashMap<String, Datatype>(); Datatype value = new Datatype(); value.setName("string"); types.put("string", value); MetadataFactory factory = new MetadataFactory("x", 1, types, mmd); Table x = factory.addTable("x"); Column c = factory.addColumn("a_b", "string", x); assertEquals("a_b", c.getName()); c = factory.addColumn("a_B", "string", x); assertEquals("a_B_1", c.getName()); }
@Test public void testSchemaProperties() { ModelMetaData mmd = new ModelMetaData(); mmd.setName("foo"); mmd.addProperty("teiid_rel:data-ttl", "1"); MetadataFactory mf = new MetadataFactory("x", 1, Collections.EMPTY_MAP, mmd); Schema s = mf.getSchema(); assertEquals("foo", s.getName()); String val = s.getProperty(DataModifiable.DATA_TTL, false); assertEquals("1", val); }
@Test public void testDuplicateTables() { ModelMetaData mmd = new ModelMetaData(); mmd.setName("foo"); mmd.addProperty("importer.renameDuplicateTables", "true"); HashMap<String, Datatype> types = new HashMap<String, Datatype>(); Datatype value = new Datatype(); value.setName("string"); types.put("string", value); MetadataFactory factory = new MetadataFactory("x", 1, types, mmd); Table x = factory.addTable("x"); assertEquals("x", x.getName()); Table x1 = factory.addTable("X"); assertEquals("X_1", x1.getName()); Table x2 = factory.addTable("X"); assertEquals("X_2", x2.getName()); }
@Test public void testDuplicateProcedure() { ModelMetaData mmd = new ModelMetaData(); mmd.setName("foo"); mmd.addProperty("importer.renameAllDuplicates", "true"); HashMap<String, Datatype> types = new HashMap<String, Datatype>(); Datatype value = new Datatype(); value.setName("string"); types.put("string", value); MetadataFactory factory = new MetadataFactory("x", 1, types, mmd); Procedure x = factory.addProcedure("x"); assertEquals("x", x.getName()); Procedure x1 = factory.addProcedure("X"); assertEquals("X_1", x1.getName()); Procedure x2 = factory.addProcedure("X"); assertEquals("X_2", x2.getName()); }
@Test public void testOptionalFKFail() throws Exception { String ddl = "CREATE FOREIGN TABLE G1(g1e1 integer, g1e2 varchar);\n" + "CREATE FOREIGN TABLE G2( g2e1 integer, g2e2 varchar, PRIMARY KEY(g2e1, g2e2)," + "FOREIGN KEY (g2e1, g2e2) REFERENCES G1)"; MetadataFactory s = helpParse(ddl, "model"); Map<String, Table> tableMap = s.getSchema().getTables(); assertEquals(2, tableMap.size()); assertTrue("Table not found", tableMap.containsKey("G1")); assertTrue("Table not found", tableMap.containsKey("G2")); Table table = tableMap.get("G2"); ForeignKey fk = table.getForeignKeys().get(0); assertEquals(fk.getColumns(), table.getColumns()); assertEquals("G1", fk.getReferenceTableName()); VDBMetaData vdb = new VDBMetaData(); vdb.setName("myVDB"); //$NON-NLS-1$ ModelMetaData modelOne = new ModelMetaData(); modelOne.setName("model"); //$NON-NLS-1$ vdb.addModel(modelOne); ValidatorReport report = new MetadataValidator().validate(vdb, s.asMetadataStore()); assertTrue(report.hasItems()); }
private ModelMetaData buildSourceTableWithPK() { ModelMetaData model = new ModelMetaData(); model.setName("source"); model.setModelType(Model.Type.PHYSICAL); MetadataFactory target = new MetadataFactory(VDBNAME, VDBVERSION, SystemMetadata.getInstance().getRuntimeTypeMap(), model); Table t = target.addTable("Person"); target.addColumn("id", "integer", t); target.addColumn("name", "string", t); target.addColumn("dob", "date", t); target.addPrimaryKey("PK", Arrays.asList("id"), t); Table addr = target.addTable("address"); target.addColumn("id", "integer", addr); target.addColumn("street", "string", addr); target.addColumn("pid", "integer", addr); target.addPrimaryKey("PK", Arrays.asList("id"), addr); target.addForeignKey("FK", Arrays.asList("pid"), Arrays.asList("id"), "Person", addr); String ddl = DDLStringVisitor.getDDLString(target.getSchema(), null, null); model.addSourceMetadata("ddl", ddl); model.addAttchment(MetadataFactory.class, target); return model; }
@Test public void testOptionalFK() throws Exception { String ddl = "CREATE FOREIGN TABLE G1(g1e1 integer, g1e2 varchar, PRIMARY KEY(g1e1, g1e2));\n" + "CREATE FOREIGN TABLE G2( g2e1 integer, g2e2 varchar, PRIMARY KEY(g2e1, g2e2)," + "FOREIGN KEY (g2e1, g2e2) REFERENCES G1)"; MetadataFactory s = helpParse(ddl, "model"); Map<String, Table> tableMap = s.getSchema().getTables(); assertEquals(2, tableMap.size()); assertTrue("Table not found", tableMap.containsKey("G1")); assertTrue("Table not found", tableMap.containsKey("G2")); Table table = tableMap.get("G2"); ForeignKey fk = table.getForeignKeys().get(0); assertEquals(fk.getColumns(), table.getColumns()); assertEquals("G1", fk.getReferenceTableName()); VDBMetaData vdb = new VDBMetaData(); vdb.setName("myVDB"); //$NON-NLS-1$ ModelMetaData modelOne = new ModelMetaData(); modelOne.setName("model"); //$NON-NLS-1$ vdb.addModel(modelOne); ValidatorReport report = new MetadataValidator().validate(vdb, s.asMetadataStore()); assertFalse(report.hasItems()); assertEquals(fk.getReferenceKey().getColumns(), tableMap.get("G1").getColumns()); }
public static VDBMetaData exampleMultiBindingVDB() { VDBMetaData vdb = new VDBMetaData(); vdb.setName("exampleMultiBinding"); vdb.setVersion(1); ModelMetaData model = new ModelMetaData(); model.setName("MultiModel"); model.setModelType(Model.Type.PHYSICAL); model.setVisible(true); model.setSupportsMultiSourceBindings(true); vdb.addModel(model); vdb.addModel(RealMetadataFactory.createModel("Virt", false)); return vdb; }
private ModelMetaData buildSourceTableWithCompositePK() { ModelMetaData model = new ModelMetaData(); model.setName("source"); model.setModelType(Model.Type.PHYSICAL); MetadataFactory target = new MetadataFactory(VDBNAME, VDBVERSION, SystemMetadata.getInstance().getRuntimeTypeMap(), model); Table t = target.addTable("Person"); target.addColumn("id", "integer", t); target.addColumn("name", "string", t); target.addColumn("dob", "date", t); target.addPrimaryKey("PK", Arrays.asList("id", "name"), t); String ddl = DDLStringVisitor.getDDLString(target.getSchema(), null, null); model.addSourceMetadata("ddl", ddl); model.addAttchment(MetadataFactory.class, target); return model; }
private ModelMetaData buildSourceTable() { ModelMetaData model = new ModelMetaData(); model.setName("source"); model.setModelType(Model.Type.PHYSICAL); MetadataFactory target = new MetadataFactory(VDBNAME, VDBVERSION, SystemMetadata.getInstance().getRuntimeTypeMap(), model); Table t = target.addTable("Person"); target.addColumn("id", "integer", t); target.addColumn("name", "string", t); target.addColumn("dob", "date", t); model.addAttchment(MetadataFactory.class, target); String ddl = DDLStringVisitor.getDDLString(target.getSchema(), null, null); model.addSourceMetadata("ddl", ddl); return model; }
@Test public void testSkipDocumentModel() throws Exception { ModelMetaData model = new ModelMetaData(); model.setName("xmlstuff"); model.setModelType(Model.Type.VIRTUAL); vdb.addModel(model); MetadataFactory mf = new MetadataFactory("myVDB",1, "xmlstuff", TestDDLParser.getDataTypes(), new Properties(), null); mf.getSchema().setPhysical(false); Table t = mf.addTable("xmldoctable"); t.setTableType(Table.Type.Document); mf.addColumn("c1", "string", t); t.setSelectTransformation("some dummy stuff, should not be validated"); t.setVirtual(true); Table t2 = mf.addTable("xmldoctable2"); t2.setTableType(Table.Type.XmlMappingClass); mf.addColumn("c1", "string", t2); t2.setSelectTransformation("some dummy stuff, should not be validated"); t2.setVirtual(true); mf.mergeInto(store); buildTransformationMetadata(); ValidatorReport report = new MetadataValidator().validate(this.vdb, this.store); assertFalse(printError(report), report.hasItems()); }