Search in sources :

Example 11 with Model

use of ch.interlis.ili2c.metamodel.Model in project ili2db by claeis.

the class TransferToXtf method doBasket.

private boolean doBasket(String filename, IoxWriter iomFile, Topic topic, Long basketSqlId, String basketXtfId) throws IoxException {
    Model model = (Model) topic.getContainer();
    boolean referrs = false;
    StartBasketEvent iomBasket = null;
    delayedObjects = new ArrayList<FixIomObjectRefs>();
    // for all Viewables
    Iterator iter = null;
    if (iomFile instanceof ItfWriter) {
        ArrayList itftablev = ModelUtilities.getItfTables(td, model.getName(), topic.getName());
        iter = itftablev.iterator();
    } else {
        iter = topic.getViewables().iterator();
    }
    while (iter.hasNext()) {
        Object obj = iter.next();
        if (obj instanceof Viewable) {
            if ((obj instanceof View) && !TransferFromIli.isTransferableView(obj)) {
            // skip it
            } else if (!suppressViewable((Viewable) obj)) {
                Viewable aclass = (Viewable) obj;
                if (languageFilter != null) {
                    aclass = (Viewable) aclass.getTranslationOfOrSame();
                }
                ViewableWrapper wrapper = class2wrapper.get(aclass);
                // get sql name
                DbTableName sqlName = recConv.getSqlType(wrapper.getViewable());
                // if table exists?
                if (DbUtility.tableExists(conn, sqlName)) {
                    // dump it
                    EhiLogger.logState(aclass.getScopedName(null) + "...");
                    if (iomBasket == null) {
                        iomBasket = new StartBasketEvent(topic.getScopedName(null), basketXtfId);
                        if (languageFilter != null) {
                            iomBasket = (StartBasketEvent) languageFilter.filter(iomBasket);
                        }
                        if (exportBaseModelFilter != null) {
                            iomBasket = (StartBasketEvent) exportBaseModelFilter.filter(iomBasket);
                        }
                        if (validator != null)
                            validator.validate(iomBasket);
                        iomFile.write(iomBasket);
                    }
                    dumpObject(iomFile, aclass, basketSqlId);
                } else {
                    // skip it
                    EhiLogger.traceUnusualState(aclass.getScopedName(null) + "...skipped; no table " + sqlName + " in db");
                }
            }
        } else if (obj instanceof AttributeDef) {
            if (iomFile instanceof ItfWriter) {
                AttributeDef attr = (AttributeDef) obj;
                // get sql name
                DbTableName sqlName = getSqlTableNameItfLineTable(attr);
                // if table exists?
                if (DbUtility.tableExists(conn, sqlName)) {
                    // dump it
                    EhiLogger.logState(attr.getContainer().getScopedName(null) + "_" + attr.getName() + "...");
                    if (iomBasket == null) {
                        iomBasket = new StartBasketEvent(topic.getScopedName(null), topic.getScopedName(null));
                        if (languageFilter != null) {
                            iomBasket = (StartBasketEvent) languageFilter.filter(iomBasket);
                        }
                        if (exportBaseModelFilter != null) {
                            iomBasket = (StartBasketEvent) exportBaseModelFilter.filter(iomBasket);
                        }
                        if (validator != null)
                            validator.validate(iomBasket);
                        iomFile.write(iomBasket);
                    }
                    dumpItfTableObject(iomFile, attr, basketSqlId);
                } else {
                    // skip it
                    EhiLogger.traceUnusualState(attr.getScopedName(null) + "...skipped; no table " + sqlName + " in db");
                }
            }
        }
    }
    if (iomBasket != null) {
        // fix forward references
        for (FixIomObjectRefs fixref : delayedObjects) {
            boolean skipObj = false;
            for (IomObject ref : fixref.getRefs()) {
                long sqlid = fixref.getTargetSqlid(ref);
                if (sqlidPool.containsSqlid(sqlid)) {
                    // fix it
                    ref.setobjectrefoid(sqlidPool.getXtfid(sqlid));
                } else {
                    // object in another basket
                    Viewable aclass = fixref.getTargetClass(ref);
                    // read object
                    String tid = readObjectTid(aclass, sqlid);
                    if (tid == null) {
                        EhiLogger.logError("unknown referenced object " + aclass.getScopedName(null) + " sqlid " + fixref.getTargetSqlid(ref) + " referenced from " + fixref.getRoot().getobjecttag() + " TID " + fixref.getRoot().getobjectoid());
                        referrs = true;
                        skipObj = true;
                    } else {
                        // fix reference
                        ref.setobjectrefoid(tid);
                    }
                }
            }
            if (!skipObj) {
                ObjectEvent objEvent = new ObjectEvent(fixref.getRoot());
                if (languageFilter != null) {
                    objEvent = (ObjectEvent) languageFilter.filter(objEvent);
                }
                if (exportBaseModelFilter != null) {
                    objEvent = (ObjectEvent) exportBaseModelFilter.filter(objEvent);
                }
                if (objEvent != null) {
                    if (validator != null)
                        validator.validate(objEvent);
                    iomFile.write(objEvent);
                }
            }
        }
        EndBasketEvent endBasket = new EndBasketEvent();
        if (languageFilter != null) {
            endBasket = (EndBasketEvent) languageFilter.filter(endBasket);
        }
        if (exportBaseModelFilter != null) {
            endBasket = (EndBasketEvent) exportBaseModelFilter.filter(endBasket);
        }
        if (validator != null)
            validator.validate(endBasket);
        iomFile.write(endBasket);
        saveObjStat(iomBasket.getBid(), basketSqlId, filename, iomBasket.getType());
    }
    return referrs;
}
Also used : ObjectEvent(ch.interlis.iox_j.ObjectEvent) ArrayList(java.util.ArrayList) ViewableWrapper(ch.ehi.ili2db.mapping.ViewableWrapper) View(ch.interlis.ili2c.metamodel.View) EndBasketEvent(ch.interlis.iox_j.EndBasketEvent) IomObject(ch.interlis.iom.IomObject) ReduceToBaseModel(ch.interlis.iox_j.filter.ReduceToBaseModel) PredefinedModel(ch.interlis.ili2c.metamodel.PredefinedModel) TypeModel(ch.interlis.ili2c.metamodel.TypeModel) Model(ch.interlis.ili2c.metamodel.Model) Iterator(java.util.Iterator) Viewable(ch.interlis.ili2c.metamodel.Viewable) StartBasketEvent(ch.interlis.iox_j.StartBasketEvent) Iom_jObject(ch.interlis.iom_j.Iom_jObject) IomObject(ch.interlis.iom.IomObject) AttributeDef(ch.interlis.ili2c.metamodel.AttributeDef) ItfWriter(ch.interlis.iom_j.itf.ItfWriter) DbTableName(ch.ehi.sqlgen.repository.DbTableName)

Example 12 with Model

use of ch.interlis.ili2c.metamodel.Model in project ili2db by claeis.

the class Ili2db method getModels.

public static List<Model> getModels(String modelNames, TransferDescription td) {
    List<Model> models = new ArrayList<Model>();
    if (modelNames == null) {
        return models;
    }
    String[] modelNamev = getModelNames(modelNames);
    for (String modelName : modelNamev) {
        Model model = (Model) td.getElement(Model.class, modelName);
        if (model == null) {
            throw new IllegalArgumentException("unknown model <" + modelName + ">");
        }
        models.add(model);
    }
    return models;
}
Also used : Model(ch.interlis.ili2c.metamodel.Model) ArrayList(java.util.ArrayList)

Example 13 with Model

use of ch.interlis.ili2c.metamodel.Model in project ili2db by claeis.

the class ModelElementSelector method visitStructsInScope.

private void visitStructsInScope(HashSet<Element> accu, HashSet<Model> accuScope, Config config) {
    Iterator<Model> modeli = accuScope.iterator();
    while (modeli.hasNext()) {
        Model scope = modeli.next();
        if (config.getVer4_translation() || config.getIli1Translation() != null) {
            scope = (Model) scope.getTranslationOfOrSame();
        }
        Iterator topici = scope.iterator();
        while (topici.hasNext()) {
            Object tObj = topici.next();
            if (tObj instanceof Table && !((Table) tObj).isIdentifiable()) {
                Table root = (Table) ((Table) tObj).getRootExtending();
                if (root != null && accu.contains(root)) {
                    // if tObj is an extension of a known structure, add it
                    visitViewable(accu, accuScope, (Table) tObj);
                }
            }
        }
    }
}
Also used : Table(ch.interlis.ili2c.metamodel.Table) Model(ch.interlis.ili2c.metamodel.Model) Iterator(java.util.Iterator)

Aggregations

Model (ch.interlis.ili2c.metamodel.Model)13 Iterator (java.util.Iterator)11 Topic (ch.interlis.ili2c.metamodel.Topic)8 Viewable (ch.interlis.ili2c.metamodel.Viewable)6 IomObject (ch.interlis.iom.IomObject)6 ArrayList (java.util.ArrayList)5 Ili2dbException (ch.ehi.ili2db.base.Ili2dbException)4 ViewableWrapper (ch.ehi.ili2db.mapping.ViewableWrapper)4 AttributeDef (ch.interlis.ili2c.metamodel.AttributeDef)4 PredefinedModel (ch.interlis.ili2c.metamodel.PredefinedModel)4 TypeModel (ch.interlis.ili2c.metamodel.TypeModel)4 View (ch.interlis.ili2c.metamodel.View)4 Iom_jObject (ch.interlis.iom_j.Iom_jObject)4 ReduceToBaseModel (ch.interlis.iox_j.filter.ReduceToBaseModel)4 DbTableName (ch.ehi.sqlgen.repository.DbTableName)3 Domain (ch.interlis.ili2c.metamodel.Domain)3 HashSet (java.util.HashSet)3 EnumerationType (ch.interlis.ili2c.metamodel.EnumerationType)2 Table (ch.interlis.ili2c.metamodel.Table)2 ItfWriter (ch.interlis.iom_j.itf.ItfWriter)2