use of org.teiid.metadata.Schema in project teiid by teiid.
the class FakeTranslationFactory method getYahooTranslationUtility.
public TranslationUtility getYahooTranslationUtility() {
MetadataStore metadataStore = new MetadataStore();
// Create models
// $NON-NLS-1$
Schema yahoo = RealMetadataFactory.createPhysicalModel("Yahoo", metadataStore);
// Create physical groups
// $NON-NLS-1$
Table quotes = RealMetadataFactory.createPhysicalGroup("Yahoo.QuoteServer", yahoo);
// Create physical elements
String[] elemNames = new String[] { // $NON-NLS-1$ //$NON-NLS-2$
"TickerSymbol", // $NON-NLS-1$ //$NON-NLS-2$
"LastTrade", // $NON-NLS-1$ //$NON-NLS-2$
"LastTradeDate", // $NON-NLS-1$ //$NON-NLS-2$
"LastTradeTime", // $NON-NLS-1$ //$NON-NLS-2$
"PercentageChange", // $NON-NLS-1$ //$NON-NLS-2$
"TickerSymbol2", // $NON-NLS-1$ //$NON-NLS-2$
"DaysHigh", // $NON-NLS-1$ //$NON-NLS-2$
"DaysLow", // $NON-NLS-1$
"TotalVolume" };
String[] elemTypes = new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.DOUBLE, DataTypeManager.DefaultDataTypes.DATE, DataTypeManager.DefaultDataTypes.TIME, DataTypeManager.DefaultDataTypes.DOUBLE, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.DOUBLE, DataTypeManager.DefaultDataTypes.DOUBLE, DataTypeManager.DefaultDataTypes.BIG_INTEGER };
List<Column> cols = RealMetadataFactory.createElements(quotes, elemNames, elemTypes);
// Set name in source on each column
String[] nameInSource = new String[] { "Symbol", "Last", "Date", "Time", "Change", "Symbol2", "High", "Low", "Volume" };
for (int i = 0; i < nameInSource.length; i++) {
cols.get(i).setNameInSource(nameInSource[i]);
}
// Set column-specific properties
cols.get(0).setSelectable(false);
cols.get(0).setSearchType(SearchType.Unsearchable);
return new TranslationUtility(RealMetadataFactory.createTransformationMetadata(metadataStore, "yahoo"));
}
use of org.teiid.metadata.Schema in project teiid by teiid.
the class DocumentNode method findTable.
static Table findTable(EdmEntityType entityType, MetadataStore store) {
FullQualifiedName fqn = entityType.getFullQualifiedName();
// remove the vdb name
String withoutVDB = fqn.getNamespace().substring(fqn.getNamespace().lastIndexOf('.') + 1);
Schema schema = store.getSchema(withoutVDB);
return schema.getTable(entityType.getName());
}
use of org.teiid.metadata.Schema in project teiid by teiid.
the class RestASMBasedWebArchiveBuilder method hasRestMetadata.
@Override
public boolean hasRestMetadata(VDBMetaData vdb) {
// $NON-NLS-1$
String generate = vdb.getPropertyValue(REST_NAMESPACE + "auto-generate");
if (generate == null || !Boolean.parseBoolean(generate)) {
return false;
}
// $NON-NLS-1$
String securityType = vdb.getPropertyValue(REST_NAMESPACE + "security-type");
if (securityType != null && !securityType.equalsIgnoreCase("none") && !securityType.equalsIgnoreCase("httpbasic")) {
// $NON-NLS-1$ //$NON-NLS-2$
return false;
}
MetadataStore metadataStore = vdb.getAttachment(TransformationMetadata.class).getMetadataStore();
for (ModelMetaData model : vdb.getModelMetaDatas().values()) {
Schema schema = metadataStore.getSchema(model.getName());
if (schema == null) {
// OTHER type, which does not have a corresponding Teiid schema
continue;
}
Collection<Procedure> procedures = schema.getProcedures().values();
for (Procedure procedure : procedures) {
// $NON-NLS-1$
String uri = procedure.getProperty(REST_NAMESPACE + "URI", false);
// $NON-NLS-1$
String method = procedure.getProperty(REST_NAMESPACE + "METHOD", false);
if (uri != null && method != null) {
return true;
}
}
}
return false;
}
use of org.teiid.metadata.Schema in project teiid by teiid.
the class TestRestWebArchiveBuilder method testBuildArchiveSwagger.
@Test
public void testBuildArchiveSwagger() throws Exception {
VDBMetaData vdb = getTestVDBMetaData();
RestASMBasedWebArchiveBuilder builder = new RestASMBasedWebArchiveBuilder();
MetadataStore metadataStore = vdb.getAttachment(TransformationMetadata.class).getMetadataStore();
for (ModelMetaData model : vdb.getModelMetaDatas().values()) {
Schema schema = metadataStore.getSchema(model.getName());
byte[] viewContents = builder.getViewClass(vdb.getName(), vdb.getVersion(), model.getName(), schema, false);
if (viewContents != null) {
Class<?> cls = ASMUtilities.defineClass("org.teiid.jboss.rest.View", viewContents);
Set<Annotation> annotationSet = new HashSet<Annotation>();
for (Annotation annotation : cls.getAnnotations()) {
annotationSet.add(annotation);
}
assertEquals(2, annotationSet.size());
for (Method m : cls.getMethods()) {
if (m.getName().equals("g1Tableapplication_xml")) {
ApiOperation annotation = m.getAnnotation(ApiOperation.class);
assertEquals("g1Table", annotation.value());
} else if (m.getName().equals("sqlQueryxml")) {
ApiOperation annotation = m.getAnnotation(ApiOperation.class);
assertEquals("xml", annotation.value());
} else if (m.getName().equals("sqlQueryjson")) {
ApiOperation annotation = m.getAnnotation(ApiOperation.class);
assertEquals("json", annotation.value());
}
}
}
}
}
use of org.teiid.metadata.Schema in project teiid by teiid.
the class CompositeVDB method metadataLoadFinished.
public void metadataLoadFinished(boolean allowEnv) {
if (this.metadataloadFinished) {
return;
}
this.metadataloadFinished = true;
MetadataStore mergedStore = getMetadataStore();
// the order of the models is important for resolving ddl
// TODO we might consider not using the intermediate MetadataStore
List<Schema> schemas = mergedStore.getSchemaList();
schemas.clear();
for (ModelMetaData model : this.vdb.getModelMetaDatas().values()) {
Schema s = mergedStore.getSchema(model.getName());
if (s != null) {
schemas.add(s);
} else {
mergedStore.getSchemas().remove(model.getName());
}
}
if (this.children != null && !this.children.isEmpty()) {
for (CompositeVDB child : this.children.values()) {
MetadataStore childStore = child.getMetadataStore();
if (childStore != null) {
mergedStore.merge(childStore);
}
}
}
TransformationMetadata metadata = buildTransformationMetaData(mergedVDB, getVisibilityMap(), mergedStore, getUDF(), systemFunctions, this.additionalStores, allowEnv);
QueryMetadataInterface qmi = metadata;
Map<String, String> multiSourceModels = MultiSourceMetadataWrapper.getMultiSourceModels(mergedVDB);
if (multiSourceModels != null && !multiSourceModels.isEmpty()) {
qmi = new MultiSourceMetadataWrapper(metadata, multiSourceModels);
}
mergedVDB.addAttchment(QueryMetadataInterface.class, qmi);
mergedVDB.addAttchment(TransformationMetadata.class, metadata);
mergedVDB.addAttchment(MetadataStore.class, mergedStore);
}
Aggregations