use of org.teiid.metadata.Column in project teiid by teiid.
the class SimpleDBUpdateVisitor method visit.
@Override
public void visit(SetClause obj) {
Column column = obj.getSymbol().getMetadataObject();
if (obj.getValue() instanceof Literal) {
try {
Literal l = (Literal) obj.getValue();
this.attributes.put(SimpleDBMetadataProcessor.getName(column), SimpleDBDataTypeManager.convertToSimpleDBType(l.getValue(), column.getJavaType()));
} catch (TranslatorException e) {
this.exceptions.add(e);
}
} else if (obj.getValue() instanceof Array) {
try {
Array array = (Array) obj.getValue();
String[] result = SimpleDBInsertVisitor.getValuesArray(array);
this.attributes.put(SimpleDBMetadataProcessor.getName(column), result);
} catch (TranslatorException e) {
this.exceptions.add(e);
}
} else {
this.exceptions.add(new TranslatorException(SimpleDBPlugin.Event.TEIID24001, SimpleDBPlugin.Util.gs(SimpleDBPlugin.Event.TEIID24001)));
}
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class TestMetaDataProcessor method examplePrivatePhysicalModel.
public static TransformationMetadata examplePrivatePhysicalModel() {
MetadataStore metadataStore = new MetadataStore();
// Create models
// $NON-NLS-1$
Schema pm1 = RealMetadataFactory.createPhysicalModel("pm1", metadataStore);
// $NON-NLS-1$
Schema vm1 = RealMetadataFactory.createVirtualModel("vm1", metadataStore);
// Create physical groups
// $NON-NLS-1$
Table pm1g1 = RealMetadataFactory.createPhysicalGroup("g1", pm1);
// $NON-NLS-1$ //$NON-NLS-2$
QueryNode vm1g1n1 = new QueryNode("SELECT * FROM pm1.g1");
// $NON-NLS-1$
Table vm1g1 = RealMetadataFactory.createVirtualGroup("g1", vm1, vm1g1n1);
// $NON-NLS-1$
Table pm1g2 = RealMetadataFactory.createPhysicalGroup("g2", pm1);
// Create physical elements
RealMetadataFactory.createElements(pm1g1, // $NON-NLS-1$
new String[] { "e1" }, new String[] { DataTypeManager.DefaultDataTypes.SHORT });
// Create physical elements
List<Column> pm1g2e = RealMetadataFactory.createElements(pm1g2, // $NON-NLS-1$
new String[] { "e1" }, new String[] { DataTypeManager.DefaultDataTypes.BIG_DECIMAL });
Column e1 = pm1g2e.get(0);
e1.setPrecision(19);
e1.setLength(21);
e1.setScale(4);
RealMetadataFactory.createElements(vm1g1, // $NON-NLS-1$
new String[] { "e1" }, new String[] { DataTypeManager.DefaultDataTypes.STRING });
// Create the facade from the store
return RealMetadataFactory.createTransformationMetadata(metadataStore, "example");
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class ODataSQLBuilder method update.
public Update update(EdmEntityType entityType, Entity entity, boolean prepared) throws TeiidException {
Update update = new Update();
update.setGroup(this.context.getGroupSymbol());
int i = 0;
for (Property property : entity.getProperties()) {
EdmProperty edmProperty = (EdmProperty) entityType.getProperty(property.getName());
Column column = this.context.getColumnByName(edmProperty.getName());
ElementSymbol symbol = new ElementSymbol(column.getName(), this.context.getGroupSymbol());
boolean add = true;
for (String c : this.context.getKeyColumnNames()) {
if (c.equals(column.getName())) {
add = false;
break;
}
}
if (add) {
if (prepared) {
update.addChange(symbol, new Reference(i++));
this.params.add(asParam(edmProperty, property.getValue()));
} else {
update.addChange(symbol, new Constant(asParam(edmProperty, property.getValue()).getValue()));
}
}
}
update.setCriteria(this.context.getCriteria());
return update;
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class ODataSQLBuilder method selectWithEntityKey.
// TODO: allow the generated key building.
public Query selectWithEntityKey(EdmEntityType entityType, Entity entity, Map<String, Object> generatedKeys, List<ExpandNode> expand) throws TeiidException {
Table table = findTable(entityType.getName(), this.metadata);
DocumentNode resource = new DocumentNode(table, new GroupSymbol(table.getFullName()), entityType);
resource.setFromClause(new UnaryFromClause(new GroupSymbol(table.getFullName())));
resource.addAllColumns(false);
this.context = resource;
Query query = this.context.buildQuery();
processExpand(expand, resource, query, 1);
Criteria criteria = null;
KeyRecord pk = ODataSchemaBuilder.getIdentifier(table);
for (Column c : pk.getColumns()) {
Property prop = entity.getProperty(c.getName());
Constant right = null;
if (prop != null) {
right = new Constant(ODataTypeManager.convertToTeiidRuntimeType(c.getJavaType(), prop.getValue(), null));
} else {
Object value = generatedKeys.get(c.getName());
if (value == null) {
throw new TeiidProcessingException(ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16016, entityType.getName()));
}
right = new Constant(value);
}
ElementSymbol left = new ElementSymbol(c.getName(), this.context.getGroupSymbol());
if (criteria == null) {
criteria = new CompareCriteria(left, AbstractCompareCriteria.EQ, right);
} else {
CompareCriteria rightCC = new CompareCriteria(left, AbstractCompareCriteria.EQ, right);
criteria = new CompoundCriteria(CompoundCriteria.AND, criteria, rightCC);
}
}
query.setCriteria(criteria);
return query;
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class ODataSchemaBuilder method addForwardNavigation.
private static void addForwardNavigation(Map<String, CsdlEntityType> entityTypes, Map<String, CsdlEntitySet> entitySets, Table table, ForeignKey fk, boolean onetoone) {
CsdlNavigationProperty navigaton = null;
CsdlNavigationPropertyBinding navigationBinding = null;
String entityTypeName = table.getName();
navigaton = buildNavigation(fk);
navigationBinding = buildNavigationBinding(fk);
if (onetoone) {
navigaton.setNullable(false);
} else {
for (Column c : fk.getColumns()) {
if (c.getNullType() == NullType.No_Nulls) {
navigaton.setNullable(false);
break;
}
}
}
List<CsdlReferentialConstraint> constraints = new ArrayList<CsdlReferentialConstraint>();
KeyRecord key = fk.getReferenceKey();
for (int i = 0; i < key.getColumns().size(); i++) {
constraints.add(new CsdlReferentialConstraint().setReferencedProperty(key.getColumns().get(i).getName()).setProperty(fk.getColumns().get(i).getName()));
}
navigaton.setReferentialConstraints(constraints);
CsdlEntityType entityType = entityTypes.get(entityTypeName);
entityType.getNavigationProperties().add(navigaton);
CsdlEntitySet entitySet = entitySets.get(entityTypeName);
entitySet.getNavigationPropertyBindings().add(navigationBinding);
}
Aggregations