Search in sources :

Example 76 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class IQueryToLdapSearchParser method getElementsFromSelectSymbols.

/**
 * Method to get SELECT Element list from the supplied query
 * @param query the supplied Query
 * @return the list of SELECT elements
 */
private ArrayList<Column> getElementsFromSelectSymbols(Select query) {
    ArrayList<Column> selectElementList = new ArrayList<Column>();
    Iterator<DerivedColumn> selectSymbolItr = query.getDerivedColumns().iterator();
    while (selectSymbolItr.hasNext()) {
        Column e = getElementFromSymbol(selectSymbolItr.next());
        selectElementList.add(e);
    }
    return selectElementList;
}
Also used : Column(org.teiid.metadata.Column) ArrayList(java.util.ArrayList)

Example 77 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class IQueryToLdapSearchParser method buildRequest.

public LDAPSearchDetails buildRequest(String query) throws TranslatorException {
    ArrayList<String> attributes = new ArrayList<String>();
    ArrayList<Column> columns = new ArrayList<Column>();
    String contextName = null;
    // $NON-NLS-1$
    String criteria = "";
    String searchScope = this.executionFactory.getSearchDefaultScope().name();
    int timeLimit = 0;
    long countLimit = -1;
    List<String> parts = StringUtil.tokenize(query, ';');
    for (String var : parts) {
        int index = var.indexOf('=');
        if (index == -1) {
            throw new TranslatorException(LDAPPlugin.Util.gs(LDAPPlugin.Event.TEIID12013, var));
        }
        String key = var.substring(0, index).trim();
        String value = var.substring(index + 1).trim();
        if (key.equalsIgnoreCase(CONTEXT_NAME)) {
            contextName = value;
        } else if (key.equalsIgnoreCase(CRITERIA)) {
            criteria = value;
        } else if (key.equalsIgnoreCase(SEARCH_SCOPE)) {
            searchScope = value;
        } else if (key.equalsIgnoreCase(TIMEOUT)) {
            timeLimit = Integer.parseInt(value);
        } else if (key.equalsIgnoreCase(COUNT_LIMIT)) {
            countLimit = Long.parseLong(value);
        } else if (key.equalsIgnoreCase(ATTRIBUTES)) {
            // $NON-NLS-1$
            StringTokenizer attrTokens = new StringTokenizer(value, ",");
            while (attrTokens.hasMoreElements()) {
                String name = attrTokens.nextToken().trim();
                attributes.add(name);
                Column column = new Column();
                column.setName(name);
                Datatype type = new Datatype();
                type.setName(TypeFacility.RUNTIME_NAMES.OBJECT);
                type.setJavaClassName(Object.class.getCanonicalName());
                column.setDatatype(type, true);
                columns.add(column);
            }
        } else {
            throw new TranslatorException(LDAPPlugin.Util.gs(LDAPPlugin.Event.TEIID12013, var));
        }
    }
    int searchScopeInt = buildSearchScope(searchScope);
    return new LDAPSearchDetails(contextName, searchScopeInt, criteria, null, countLimit, columns, timeLimit);
}
Also used : StringTokenizer(java.util.StringTokenizer) Column(org.teiid.metadata.Column) ArrayList(java.util.ArrayList) TranslatorException(org.teiid.translator.TranslatorException) Datatype(org.teiid.metadata.Datatype)

Example 78 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class PhoenixSQLConversionVisitor method visit.

@Override
public void visit(Update update) {
    // use an upsert
    List<ColumnReference> cols = new ArrayList<ColumnReference>();
    List<Expression> vals = new ArrayList<Expression>();
    for (SetClause set : update.getChanges()) {
        cols.add(set.getSymbol());
        vals.add(set.getValue());
    }
    Insert insert = null;
    if (update.getWhere() == null) {
        insert = new Insert(update.getTable(), cols, new ExpressionValueSource(vals));
    } else {
        List<DerivedColumn> select = new ArrayList<DerivedColumn>();
        Set<Column> columns = new HashSet<Column>();
        for (ColumnReference col : cols) {
            columns.add(col.getMetadataObject());
        }
        for (Expression val : vals) {
            select.add(new DerivedColumn(null, val));
        }
        KeyRecord pk = update.getTable().getMetadataObject().getPrimaryKey();
        if (pk != null) {
            for (Column c : pk.getColumns()) {
                if (!columns.contains(c)) {
                    ColumnReference cr = new ColumnReference(update.getTable(), c.getName(), c, c.getJavaType());
                    select.add(new DerivedColumn(null, cr));
                    cols.add(cr);
                }
            }
        }
        Select query = new Select(select, false, Arrays.asList((TableReference) update.getTable()), update.getWhere(), null, null, null);
        insert = new Insert(update.getTable(), cols, query);
    }
    append(insert);
}
Also used : ArrayList(java.util.ArrayList) KeyRecord(org.teiid.metadata.KeyRecord) Column(org.teiid.metadata.Column) HashSet(java.util.HashSet)

Example 79 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class PrestoDBMetadataProcessor method addTable.

private void addTable(String tableName, Connection conn, String catalog, String schema, MetadataFactory metadataFactory) throws SQLException {
    Table table = addTable(metadataFactory, null, null, tableName, null, tableName);
    if (table == null) {
        return;
    }
    // $NON-NLS-1$ //$NON-NLS-2$
    String nis = catalog + "." + schema + "." + tableName;
    table.setNameInSource(nis);
    Statement stmt = conn.createStatement();
    // $NON-NLS-1$
    ResultSet rs = stmt.executeQuery("SHOW COLUMNS FROM " + nis);
    while (rs.next()) {
        String name = rs.getString(1);
        if (this.trimColumnNames) {
            name = name.trim();
        }
        String type = rs.getString(2);
        if (type != null) {
            type = type.trim();
        }
        String runtimeType = getRuntimeType(type);
        NullType nt = Boolean.valueOf(rs.getString(3)) ? NullType.Nullable : NullType.No_Nulls;
        Column column = metadataFactory.addColumn(name, runtimeType, table);
        column.setNameInSource(name);
        column.setUpdatable(true);
        column.setNullType(nt);
    }
    rs.close();
}
Also used : Table(org.teiid.metadata.Table) Column(org.teiid.metadata.Column) Statement(java.sql.Statement) ResultSet(java.sql.ResultSet) NullType(org.teiid.metadata.BaseColumn.NullType)

Example 80 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class JPQLUpdateExecution method handleInsert.

private Object handleInsert(Insert insert) throws TranslatorException {
    try {
        String entityClassName = insert.getTable().getMetadataObject().getProperty(JPAMetadataProcessor.ENTITYCLASS, false);
        Object entity = ReflectionHelper.create(entityClassName, null, this.executionContext.getCommandContext().getVDBClassLoader());
        List<ColumnReference> columns = insert.getColumns();
        List<Expression> values = ((ExpressionValueSource) insert.getValueSource()).getValues();
        if (columns.size() != values.size()) {
            throw new TranslatorException(JPAPlugin.Util.gs(JPAPlugin.Event.TEIID14007));
        }
        for (int i = 0; i < columns.size(); i++) {
            Column column = columns.get(i).getMetadataObject();
            Object value = values.get(i);
            // do not add the derived columns
            String name = column.getProperty(JPAMetadataProcessor.KEY_ASSOSIATED_WITH_FOREIGN_TABLE, false);
            if (name == null) {
                if (value instanceof Literal) {
                    Literal literalValue = (Literal) value;
                    PropertiesUtils.setBeanProperty(entity, column.getName(), literalValue.getValue());
                } else {
                    PropertiesUtils.setBeanProperty(entity, column.getName(), value);
                }
            }
        }
        return entity;
    } catch (TeiidException e) {
        throw new TranslatorException(e);
    }
}
Also used : Expression(org.teiid.language.Expression) Column(org.teiid.metadata.Column) Literal(org.teiid.language.Literal) TranslatorException(org.teiid.translator.TranslatorException) ColumnReference(org.teiid.language.ColumnReference) ExpressionValueSource(org.teiid.language.ExpressionValueSource) TeiidException(org.teiid.core.TeiidException)

Aggregations

Column (org.teiid.metadata.Column)210 Table (org.teiid.metadata.Table)72 ArrayList (java.util.ArrayList)47 TranslatorException (org.teiid.translator.TranslatorException)47 Test (org.junit.Test)39 TransformationMetadata (org.teiid.query.metadata.TransformationMetadata)21 MetadataFactory (org.teiid.metadata.MetadataFactory)20 ElementSymbol (org.teiid.query.sql.symbol.ElementSymbol)19 KeyRecord (org.teiid.metadata.KeyRecord)18 Schema (org.teiid.metadata.Schema)18 MetadataStore (org.teiid.metadata.MetadataStore)17 Procedure (org.teiid.metadata.Procedure)14 RealMetadataFactory (org.teiid.query.unittest.RealMetadataFactory)14 ColumnReference (org.teiid.language.ColumnReference)12 DerivedColumn (org.teiid.language.DerivedColumn)12 Expression (org.teiid.language.Expression)12 Literal (org.teiid.language.Literal)10 QueryNode (org.teiid.query.mapping.relational.QueryNode)9 Connection (java.sql.Connection)7 ResultSet (java.sql.ResultSet)7