use of ch.interlis.ili2c.metamodel.Type in project ili2db by claeis.
the class TransferFromXtf method getStructs_Helper.
private void getStructs_Helper(AbstractClassDef aclass, HashSet<AbstractClassDef> accu) {
if (accu.contains(aclass)) {
return;
}
java.util.Set seed = null;
if (aclass instanceof Table && !((Table) aclass).isIdentifiable()) {
// STRUCTURE
seed = aclass.getExtensions();
} else {
// CLASS
seed = new HashSet();
seed.add(aclass);
}
for (Object defo : seed) {
AbstractClassDef def = (AbstractClassDef) defo;
if (accu.contains(def)) {
continue;
}
if (def instanceof Table && !((Table) def).isIdentifiable()) {
accu.add(def);
}
while (def != null) {
Iterator attri = def.iterator();
while (attri.hasNext()) {
Object attro = attri.next();
if (attro instanceof AttributeDef) {
AttributeDef attr = (AttributeDef) attro;
Type type = attr.getDomain();
if (type instanceof CompositionType) {
CompositionType compType = (CompositionType) type;
getStructs_Helper(compType.getComponentType(), accu);
Iterator resti = compType.iteratorRestrictedTo();
while (resti.hasNext()) {
AbstractClassDef rest = (AbstractClassDef) resti.next();
getStructs_Helper(rest, accu);
}
}
}
}
// base viewable
def = (AbstractClassDef) def.getExtending();
if (accu.contains(def)) {
def = null;
}
}
}
}
use of ch.interlis.ili2c.metamodel.Type in project ili2db by claeis.
the class Ili2cUtility method isPureChbaseMultiSuface.
public static boolean isPureChbaseMultiSuface(TransferDescription td, AttributeDef attr) {
Type typeo = attr.getDomain();
if (typeo instanceof CompositionType) {
CompositionType type = (CompositionType) typeo;
Table struct = type.getComponentType();
Table root = (Table) struct.getRootExtending();
if (root == null) {
root = struct;
}
String containerQName = root.getContainer().getScopedName(null);
if (containerQName.equals(IliNames.CHBASE1_GEOMETRYCHLV03) || containerQName.equals(IliNames.CHBASE1_GEOMETRYCHLV95)) {
if (root.getName().equals(IliNames.CHBASE1_GEOMETRY_MULTISURFACE)) {
java.util.Iterator it = struct.getAttributesAndRoles2();
int c = 0;
while (it.hasNext()) {
it.next();
c++;
}
if (c == 1) {
// only one attribute
return true;
}
}
}
}
return false;
}
use of ch.interlis.ili2c.metamodel.Type in project ili2db by claeis.
the class Ili2cUtility method isPureChbaseMultilingualText.
private static boolean isPureChbaseMultilingualText(TransferDescription td, AttributeDef attr, String textType) {
Type typeo = attr.getDomain();
if (typeo instanceof CompositionType) {
CompositionType type = (CompositionType) typeo;
Table struct = type.getComponentType();
Table base = null;
if (struct.getContainer().getScopedName(null).equals(IliNames.CHBASE1_LOCALISATIONCH)) {
base = struct;
} else {
base = (Table) struct.getExtending();
if (base == null) {
base = struct;
}
while (base != null && !base.getContainer().getScopedName(null).equals(IliNames.CHBASE1_LOCALISATIONCH)) {
base = (Table) base.getExtending();
}
}
if (base == null) {
return false;
}
// ASSERT: base.getContainer().getScopedName(null).equals("LocalisationCH_V1"))
if (base.getName().equals(textType)) {
java.util.Iterator it = struct.getAttributesAndRoles2();
int c = 0;
while (it.hasNext()) {
it.next();
c++;
}
if (c == 1) {
// only one attribute LocalisedText
return true;
}
}
}
return false;
}
use of ch.interlis.ili2c.metamodel.Type in project ili2db by claeis.
the class Ili2cUtility method isPureChbaseMultiLine.
public static boolean isPureChbaseMultiLine(TransferDescription td, AttributeDef attr) {
Type typeo = attr.getDomain();
if (typeo instanceof CompositionType) {
CompositionType type = (CompositionType) typeo;
Table struct = type.getComponentType();
Table root = (Table) struct.getRootExtending();
if (root == null) {
root = struct;
}
String containerQName = root.getContainer().getScopedName(null);
if (containerQName.equals(IliNames.CHBASE1_GEOMETRYCHLV03) || containerQName.equals(IliNames.CHBASE1_GEOMETRYCHLV95)) {
if (root.getName().equals(IliNames.CHBASE1_GEOMETRY_MULTILINE) || root.getName().equals(IliNames.CHBASE1_GEOMETRY_MULTIDIRECTEDLINE)) {
java.util.Iterator it = struct.getAttributesAndRoles2();
int c = 0;
while (it.hasNext()) {
it.next();
c++;
}
if (c == 1) {
// only one attribute
return true;
}
}
}
}
return false;
}
use of ch.interlis.ili2c.metamodel.Type in project ili2db by claeis.
the class FromIliRecordConverter method setNullable.
public void setNullable(Viewable aclass, AttributeDef attr, DbColumn dbCol) {
if (sqlEnableNull) {
dbCol.setNotNull(false);
} else {
Type type = attr.getDomain();
if (type == null) {
Evaluable[] ev = (((LocalAttribute) attr).getBasePaths());
type = ((ObjectPath) ev[0]).getType();
}
if (type.isMandatoryConsideringAliases()) {
// attr not defined in sub-class
if (attr.getContainer() == aclass || aclass.isExtending(attr.getContainer())) {
dbCol.setNotNull(true);
}
}
}
}
Aggregations