Esempio n. 1
0
        // синхронизация бланка
        int syncDT(FC.FeatureType dt)
        {
            int rc=0;

            string key=dt.Code;
            if (convert.IsString(key))

            if (fdtList.Contains(key)) {
                rc=1;
                if (fdtList0.Contains(key)) rc=0;
            }
            else
            if (!fdtList.Contains(key)) {
                fdtList.Add(key);

                var blank = fobj.GetBlank;
                if (blank == null)
                    __err();
                else {
                    string t=key;
                    if (dt.IsDataType())
                    t+="/"+dt.TypeName;
                    blank.beginUpdate(t);

                    rc=syncParentDT(blank,dt);

                    foreach (var binding in dt.Bindings)
                    if (syncAttr(blank,binding)) rc++;

                    if (rc > 0) {
                        var es = dt.ConstrainedBy.GetConstraint( typeof(AttributeValueConstraint) ) as AttributeValueConstraint;

                        int rc1;

                        if (es != null)
                        foreach(var e in es.ValidationRules) {
                            blank.logic(e.ОграничениеПоСемантике,
                                        e.Комментарий,out rc1);
                            if (rc1 < 0) __err();
                        }

                        if (dt.IsDataType())
                            blank.endUpdate(key,"",out rc1);
                        else
                            blank.endUpdate("",key,out rc1);

                        if (rc1 == 1) fdtUpdCount++; else
                        if (rc1 == 2) fdtNewCount++; else
                        if (rc1 != 0) __err();

                        if (rc1 >= 0) fdtCount++;
                    }
                }

                if (rc == 0) fdtList0.Add(key);

            }

            return rc;
        }