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;
}
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);
}
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);
}
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();
}
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);
}
}
Aggregations