use of ch.interlis.ili2c.metamodel.ObjectType in project ili2db by claeis.
the class ReduceToBaseModel method translateObject.
private void translateObject(IomObject iomObj) {
Element modelElement = (Element) tag2class.get(iomObj.getobjecttag());
Element destModelEle = getTranslatedElement(modelElement);
if (destModelEle == modelElement) {
// no translation required
return;
}
Viewable aclass = (Viewable) modelElement;
Viewable destClass = (Viewable) destModelEle;
String destName = destClass.getScopedName();
iomObj.setobjecttag(destName);
// handle attrs
Iterator iter = aclass.getAttributesAndRoles2();
while (iter.hasNext()) {
ViewableTransferElement srcProp = (ViewableTransferElement) iter.next();
ViewableTransferElement destProp = (ViewableTransferElement) srctag2destElement.get(((Element) srcProp.obj).getScopedName());
if (destProp == null) {
iomObj.setattrundefined(((Element) srcProp.obj).getName());
} else {
if (srcProp.obj instanceof AttributeDef) {
AttributeDef attr = (AttributeDef) srcProp.obj;
if (!attr.isTransient()) {
Type proxyType = attr.getDomain();
if (proxyType != null && (proxyType instanceof ObjectType)) {
// skip implicit particles (base-viewables) of views
} else {
translateAttrValue(iomObj, attr);
}
}
}
}
}
}
use of ch.interlis.ili2c.metamodel.ObjectType in project ili2db by claeis.
the class FromXtfRecordConverter method getIomObjectAttrs.
public HashSet getIomObjectAttrs(Viewable aclass) {
HashSet ret = new HashSet();
Iterator iter = aclass.getAttributesAndRoles2();
while (iter.hasNext()) {
ViewableTransferElement obj = (ViewableTransferElement) iter.next();
if (obj.obj instanceof AttributeDef) {
AttributeDef attr = (AttributeDef) obj.obj;
if (!attr.isTransient()) {
Type proxyType = attr.getDomain();
if (proxyType != null && (proxyType instanceof ObjectType)) {
// skip implicit particles (base-viewables) of views
} else {
AttributeDef base = (AttributeDef) attr.getExtending();
while (base != null) {
attr = base;
base = (AttributeDef) attr.getExtending();
}
ret.add(attr);
}
}
}
if (obj.obj instanceof RoleDef) {
RoleDef role = (RoleDef) obj.obj;
if (role.getExtending() == null) {
// a role of an embedded association?
if (obj.embedded) {
AssociationDef roleOwner = (AssociationDef) role.getContainer();
if (roleOwner.getDerivedFrom() == null) {
RoleDef base = (RoleDef) role.getExtending();
while (base != null) {
role = base;
base = (RoleDef) role.getExtending();
}
ret.add(role);
}
} else {
RoleDef base = (RoleDef) role.getExtending();
while (base != null) {
role = base;
base = (RoleDef) role.getExtending();
}
ret.add(role);
}
}
}
}
return ret;
}
use of ch.interlis.ili2c.metamodel.ObjectType in project ili2db by claeis.
the class FromXtfRecordConverter method writeRecord.
public void writeRecord(long basketSqlId, IomObject iomObj, Viewable iomClass, StructWrapper structEle, ViewableWrapper aclass, String sqlType, long sqlId, boolean updateObj, PreparedStatement ps, ArrayList structQueue) throws SQLException, ConverterException {
int valuei = 1;
if (updateObj) {
// if update, t_id is last param
// ps.setInt(valuei, sqlId);
// valuei++;
} else {
ps.setLong(valuei, sqlId);
valuei++;
}
if (createBasketCol) {
ps.setLong(valuei, basketSqlId);
valuei++;
}
if (createDatasetCol) {
ps.setString(valuei, datasetName);
valuei++;
}
if (!aclass.isSecondaryTable()) {
if (aclass.getExtending() == null) {
if (createTypeDiscriminator || aclass.includesMultipleTypes()) {
ps.setString(valuei, sqlType);
valuei++;
}
// if class
if (structEle == null) {
if (!updateObj) {
if (!aclass.isStructure()) {
if (createIliTidCol || aclass.getOid() != null) {
// import TID from transfer file
if (AbstractRecordConverter.isUuidOid(td, aclass.getOid())) {
Object toInsertUUID = geomConv.fromIomUuid(iomObj.getobjectoid());
ps.setObject(valuei, toInsertUUID);
} else {
ps.setString(valuei, iomObj.getobjectoid());
}
valuei++;
}
}
}
}
// if struct, add ref to parent
if (structEle != null) {
ps.setLong(valuei, structEle.getParentSqlId());
valuei++;
if (createGenericStructRef) {
ps.setString(valuei, structEle.getParentSqlType());
valuei++;
// T_ParentAttr
ps.setString(valuei, structEle.getParentSqlAttr());
valuei++;
}
// T_Seq
ps.setInt(valuei, structEle.getStructi());
valuei++;
}
}
}
HashSet attrs = getIomObjectAttrs(iomClass);
Iterator iter = aclass.getAttrIterator();
while (iter.hasNext()) {
ViewableTransferElement obj = (ViewableTransferElement) iter.next();
if (obj.obj instanceof AttributeDef) {
AttributeDef attr = (AttributeDef) obj.obj;
if (attrs.contains(attr)) {
if (!attr.isTransient()) {
Type proxyType = attr.getDomain();
if (proxyType != null && (proxyType instanceof ObjectType)) {
// skip implicit particles (base-viewables) of views
} else {
valuei = addAttrValue(iomObj, sqlType, sqlId, aclass.getSqlTablename(), ps, valuei, attr, structQueue);
}
}
}
}
if (obj.obj instanceof RoleDef) {
RoleDef role = (RoleDef) obj.obj;
if (role.getExtending() == null) {
if (attrs.contains(role)) {
String refoid = null;
String roleName = role.getName();
// a role of an embedded association?
if (obj.embedded) {
AssociationDef roleOwner = (AssociationDef) role.getContainer();
if (roleOwner.getDerivedFrom() == null) {
// not just a link?
IomObject structvalue = iomObj.getattrobj(roleName, 0);
if (roleOwner.getAttributes().hasNext() || roleOwner.getLightweightAssociations().iterator().hasNext()) {
// TODO handle attributes of link
}
if (structvalue != null) {
refoid = structvalue.getobjectrefoid();
long orderPos = structvalue.getobjectreforderpos();
if (orderPos != 0) {
// refoid,orderPos
// ret.setStringAttribute(roleName, refoid);
// ret.setStringAttribute(roleName+".orderPos", Long.toString(orderPos));
} else {
// refoid
// ret.setStringAttribute(roleName, refoid);
}
} else {
refoid = null;
}
}
} else {
IomObject structvalue = iomObj.getattrobj(roleName, 0);
refoid = structvalue.getobjectrefoid();
long orderPos = structvalue.getobjectreforderpos();
if (orderPos != 0) {
// refoid,orderPos
// ret.setStringAttribute(roleName, refoid);
// ret.setStringAttribute(roleName+".orderPos", Long.toString(orderPos));
} else {
// refoid
// ret.setStringAttribute(roleName, refoid);
}
}
Holder<Integer> valueiRef = new Holder<Integer>(valuei);
setReferenceColumn(ps, role.getDestination(), refoid, valueiRef);
valuei = valueiRef.value;
}
}
}
}
if (createStdCols) {
// T_LastChange
ps.setTimestamp(valuei, today);
valuei++;
// T_CreateDate
if (!updateObj) {
ps.setTimestamp(valuei, today);
valuei++;
}
// T_User
ps.setString(valuei, dbusr);
valuei++;
}
if (updateObj) {
// if update, t_id is last param
ps.setLong(valuei, sqlId);
valuei++;
} else {
// if insert, t_id is first param
// ps.setInt(valuei, sqlId);
// valuei++;
}
}
Aggregations