use of org.teiid.metadata.Column in project teiid by teiid.
the class JPAMetadataProcessor method addSingularAttributes.
private void addSingularAttributes(MetadataFactory mf, Metamodel model, ManagedType<?> entity, Table entityTable) throws TranslatorException {
for (Attribute<?, ?> attr : entity.getAttributes()) {
if (!attr.isCollection()) {
boolean simpleType = isSimpleType(attr.getJavaType());
if (simpleType) {
Column column = addColumn(mf, attr.getName(), TypeFacility.getDataTypeName(getJavaDataType(attr.getJavaType())), entityTable);
if (((SingularAttribute) attr).isOptional()) {
column.setDefaultValue(null);
}
} else {
boolean classFound = false;
// this tables columns
for (EmbeddableType<?> embeddable : model.getEmbeddables()) {
if (embeddable.getJavaType().equals(attr.getJavaType())) {
addSingularAttributes(mf, model, embeddable, entityTable);
classFound = true;
break;
}
}
if (!classFound) {
// table, then add that column as FK
for (EntityType et : model.getEntities()) {
if (et.getJavaType().equals(attr.getJavaType())) {
Table attributeTable = addEntity(mf, model, et);
KeyRecord pk = attributeTable.getPrimaryKey();
if (pk != null) {
// TODO: entities must have PK, so this check is not needed.
ArrayList<String> keys = new ArrayList<String>();
for (Column column : pk.getColumns()) {
addColumn(mf, column.getName(), column.getDatatype().getRuntimeTypeName(), entityTable);
keys.add(column.getName());
}
if (!foreignKeyExists(keys, entityTable)) {
addForeignKey(mf, attr.getName(), keys, attributeTable.getName(), entityTable);
}
} else {
throw new TranslatorException(JPAPlugin.Util.gs(JPAPlugin.Event.TEIID14001, attributeTable.getName()));
}
classFound = true;
break;
}
}
}
if (!classFound) {
throw new TranslatorException(JPAPlugin.Util.gs(JPAPlugin.Event.TEIID14002, attr.getName()));
}
}
}
}
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class Create method clone.
/**
* @see org.teiid.query.sql.lang.Command#clone()
* @since 5.5
*/
public Object clone() {
Create copy = new Create();
GroupSymbol copyTable = table.clone();
copy.setTable(copyTable);
copy.columns = new ArrayList<Column>(columns.size());
for (Column column : columns) {
Column copyColumn = new Column();
copyColumn.setName(column.getName());
copyColumn.setRuntimeType(column.getRuntimeType());
copyColumn.setAutoIncremented(column.isAutoIncremented());
copyColumn.setNullType(column.getNullType());
copy.columns.add(copyColumn);
}
copy.primaryKey = LanguageObject.Util.deepClone(primaryKey, ElementSymbol.class);
copyMetadataState(copy);
copy.setTableMetadata(this.tableMetadata);
copy.on = this.on;
copy.commitAction = this.commitAction;
return copy;
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class Create method getColumnSymbols.
/**
* Derived ElementSymbol list. Do not modify without also modifying the columns.
* @return
*/
public List<ElementSymbol> getColumnSymbols() {
if (columnSymbols == null) {
columnSymbols = new ArrayList<ElementSymbol>(columns.size());
for (Column column : columns) {
ElementSymbol es = new ElementSymbol(column.getName());
es.setType(DataTypeManager.getDataTypeClass(column.getRuntimeType()));
es.setGroupSymbol(table);
columnSymbols.add(es);
}
}
return columnSymbols;
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class Create method equals.
public boolean equals(Object obj) {
// Quick same object test
if (this == obj) {
return true;
}
// Quick fail tests
if (!(obj instanceof Create)) {
return false;
}
Create other = (Create) obj;
if (other.columns.size() != this.columns.size()) {
return false;
}
for (int i = 0; i < this.columns.size(); i++) {
Column c = this.columns.get(i);
Column o = other.columns.get(i);
if (!c.getName().equalsIgnoreCase(o.getName()) || DataTypeManager.getDataTypeClass(c.getRuntimeType().toLowerCase()) != DataTypeManager.getDataTypeClass(o.getRuntimeType().toLowerCase()) || c.isAutoIncremented() != o.isAutoIncremented() || c.getNullType() != o.getNullType()) {
return false;
}
}
return this.commitAction == other.commitAction && EquivalenceUtil.areEqual(getTable(), other.getTable()) && EquivalenceUtil.areEqual(getPrimaryKey(), other.getPrimaryKey()) && EquivalenceUtil.areEqual(this.on, other.on) && // metadata equality methods are basically identity based, so we need a better check
((tableMetadata == null && other.tableMetadata == null) || (tableMetadata != null && other.tableMetadata != null && this.toString().equals(other.toString())));
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class Create method setElementSymbolsAsColumns.
public void setElementSymbolsAsColumns(List<ElementSymbol> columns) {
this.columns.clear();
for (ElementSymbol elementSymbol : columns) {
Column c = new Column();
c.setName(elementSymbol.getShortName());
c.setRuntimeType(DataTypeManager.getDataTypeName(elementSymbol.getType()));
c.setNullType(NullType.Nullable);
this.columns.add(c);
}
}
Aggregations