Search in sources :

Example 21 with Type

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;
            }
        }
    }
}
Also used : PolylineType(ch.interlis.ili2c.metamodel.PolylineType) Type(ch.interlis.ili2c.metamodel.Type) ReferenceType(ch.interlis.ili2c.metamodel.ReferenceType) SurfaceOrAreaType(ch.interlis.ili2c.metamodel.SurfaceOrAreaType) SurfaceType(ch.interlis.ili2c.metamodel.SurfaceType) CompositionType(ch.interlis.ili2c.metamodel.CompositionType) EnumerationType(ch.interlis.ili2c.metamodel.EnumerationType) NumericType(ch.interlis.ili2c.metamodel.NumericType) ObjectType(ch.interlis.ili2c.metamodel.ObjectType) CoordType(ch.interlis.ili2c.metamodel.CoordType) Table(ch.interlis.ili2c.metamodel.Table) Iterator(java.util.Iterator) IomObject(ch.interlis.iom.IomObject) AttributeDef(ch.interlis.ili2c.metamodel.AttributeDef) AbstractClassDef(ch.interlis.ili2c.metamodel.AbstractClassDef) CompositionType(ch.interlis.ili2c.metamodel.CompositionType) HashSet(java.util.HashSet)

Example 22 with Type

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;
}
Also used : CompositionType(ch.interlis.ili2c.metamodel.CompositionType) Type(ch.interlis.ili2c.metamodel.Type) Table(ch.interlis.ili2c.metamodel.Table) CompositionType(ch.interlis.ili2c.metamodel.CompositionType)

Example 23 with Type

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;
}
Also used : CompositionType(ch.interlis.ili2c.metamodel.CompositionType) Type(ch.interlis.ili2c.metamodel.Type) Table(ch.interlis.ili2c.metamodel.Table) CompositionType(ch.interlis.ili2c.metamodel.CompositionType)

Example 24 with Type

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;
}
Also used : CompositionType(ch.interlis.ili2c.metamodel.CompositionType) Type(ch.interlis.ili2c.metamodel.Type) Table(ch.interlis.ili2c.metamodel.Table) CompositionType(ch.interlis.ili2c.metamodel.CompositionType)

Example 25 with Type

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);
            }
        }
    }
}
Also used : Evaluable(ch.interlis.ili2c.metamodel.Evaluable) PolylineType(ch.interlis.ili2c.metamodel.PolylineType) Type(ch.interlis.ili2c.metamodel.Type) BasketType(ch.interlis.ili2c.metamodel.BasketType) ReferenceType(ch.interlis.ili2c.metamodel.ReferenceType) SurfaceOrAreaType(ch.interlis.ili2c.metamodel.SurfaceOrAreaType) SurfaceType(ch.interlis.ili2c.metamodel.SurfaceType) CompositionType(ch.interlis.ili2c.metamodel.CompositionType) TextType(ch.interlis.ili2c.metamodel.TextType) EnumerationType(ch.interlis.ili2c.metamodel.EnumerationType) NumericType(ch.interlis.ili2c.metamodel.NumericType) BlackboxType(ch.interlis.ili2c.metamodel.BlackboxType) AreaType(ch.interlis.ili2c.metamodel.AreaType) ObjectType(ch.interlis.ili2c.metamodel.ObjectType) CoordType(ch.interlis.ili2c.metamodel.CoordType)

Aggregations

Type (ch.interlis.ili2c.metamodel.Type)27 CompositionType (ch.interlis.ili2c.metamodel.CompositionType)26 EnumerationType (ch.interlis.ili2c.metamodel.EnumerationType)19 SurfaceType (ch.interlis.ili2c.metamodel.SurfaceType)19 AttributeDef (ch.interlis.ili2c.metamodel.AttributeDef)18 CoordType (ch.interlis.ili2c.metamodel.CoordType)18 SurfaceOrAreaType (ch.interlis.ili2c.metamodel.SurfaceOrAreaType)18 PolylineType (ch.interlis.ili2c.metamodel.PolylineType)17 ObjectType (ch.interlis.ili2c.metamodel.ObjectType)16 ReferenceType (ch.interlis.ili2c.metamodel.ReferenceType)15 ViewableTransferElement (ch.interlis.ili2c.metamodel.ViewableTransferElement)13 AreaType (ch.interlis.ili2c.metamodel.AreaType)12 BlackboxType (ch.interlis.ili2c.metamodel.BlackboxType)12 NumericType (ch.interlis.ili2c.metamodel.NumericType)12 Iterator (java.util.Iterator)12 Table (ch.interlis.ili2c.metamodel.Table)11 ViewableWrapper (ch.ehi.ili2db.mapping.ViewableWrapper)8 AssociationDef (ch.interlis.ili2c.metamodel.AssociationDef)8 RoleDef (ch.interlis.ili2c.metamodel.RoleDef)8 Viewable (ch.interlis.ili2c.metamodel.Viewable)7