Search in sources :

Example 81 with Schema

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"));
}
Also used : MetadataStore(org.teiid.metadata.MetadataStore) Table(org.teiid.metadata.Table) Column(org.teiid.metadata.Column) Schema(org.teiid.metadata.Schema) TranslationUtility(org.teiid.cdk.api.TranslationUtility)

Example 82 with Schema

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());
}
Also used : FullQualifiedName(org.apache.olingo.commons.api.edm.FullQualifiedName) Schema(org.teiid.metadata.Schema)

Example 83 with Schema

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;
}
Also used : MetadataStore(org.teiid.metadata.MetadataStore) TransformationMetadata(org.teiid.query.metadata.TransformationMetadata) Schema(org.teiid.metadata.Schema) Procedure(org.teiid.metadata.Procedure) ModelMetaData(org.teiid.adminapi.impl.ModelMetaData)

Example 84 with Schema

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());
                }
            }
        }
    }
}
Also used : TransformationMetadata(org.teiid.query.metadata.TransformationMetadata) Schema(org.teiid.metadata.Schema) Method(java.lang.reflect.Method) Annotation(java.lang.annotation.Annotation) ModelMetaData(org.teiid.adminapi.impl.ModelMetaData) MetadataStore(org.teiid.metadata.MetadataStore) VDBMetaData(org.teiid.adminapi.impl.VDBMetaData) ApiOperation(io.swagger.annotations.ApiOperation) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 85 with Schema

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);
}
Also used : CompositeMetadataStore(org.teiid.query.metadata.CompositeMetadataStore) MetadataStore(org.teiid.metadata.MetadataStore) MultiSourceMetadataWrapper(org.teiid.dqp.internal.process.multisource.MultiSourceMetadataWrapper) TransformationMetadata(org.teiid.query.metadata.TransformationMetadata) Schema(org.teiid.metadata.Schema) QueryMetadataInterface(org.teiid.query.metadata.QueryMetadataInterface) ModelMetaData(org.teiid.adminapi.impl.ModelMetaData)

Aggregations

Schema (org.teiid.metadata.Schema)92 MetadataStore (org.teiid.metadata.MetadataStore)47 TransformationMetadata (org.teiid.query.metadata.TransformationMetadata)37 Table (org.teiid.metadata.Table)35 Test (org.junit.Test)34 QueryNode (org.teiid.query.mapping.relational.QueryNode)20 FakeCapabilitiesFinder (org.teiid.query.optimizer.capabilities.FakeCapabilitiesFinder)19 Column (org.teiid.metadata.Column)18 BasicSourceCapabilities (org.teiid.query.optimizer.capabilities.BasicSourceCapabilities)18 Procedure (org.teiid.metadata.Procedure)16 QueryMetadataInterface (org.teiid.query.metadata.QueryMetadataInterface)11 List (java.util.List)10 ArrayList (java.util.ArrayList)9 VDBMetaData (org.teiid.adminapi.impl.VDBMetaData)8 ProcedureParameter (org.teiid.metadata.ProcedureParameter)8 ModelMetaData (org.teiid.adminapi.impl.ModelMetaData)7 FunctionMethod (org.teiid.metadata.FunctionMethod)6 TempMetadataStore (org.teiid.query.metadata.TempMetadataStore)6 CompositeMetadataStore (org.teiid.query.metadata.CompositeMetadataStore)5 DefaultCapabilitiesFinder (org.teiid.query.optimizer.capabilities.DefaultCapabilitiesFinder)5