Ejemplo n.º 1
0
        // синхронизация объектов
        void syncFE(FC.FeatureCatalogue catalog, int mode)
        {
            if ((mode & 1) != 0) __log("объекты...");
            else			     __log("связи...");

            __progress(0,catalog.FeatureTypes.Count);

            var roles = fobj.GetRoles;

            IList<FC.FeatureType> ftlist=catalog.GetFeatureTypesInHierarchicalOrder();

            if (ftlist != null)
            foreach(var ft in ftlist) {
                if (!ft.IsDataType()) {
                    string key=ft.Code;
                    if (convert.IsString(key)) {

                        if ((mode & 1) != 0) {

                            int loc=0;
                            var c = ft.ConstrainedBy.GetConstraint(typeof(GeometryConstraint)) as GeometryConstraint;
                            if (c != null) {
                                if (c.Pt) loc+=1;
                                if (c.Ln) loc+=2;
                                if (c.Pl) loc+=4;
                            }

                            string capt=ft.TypeName;
                            int rc;	fobj.sync(key,loc,capt,out rc);

                            if (rc == 1) fobjUpdCount++; else
                            if (rc == 2) fobjNewCount++; else
                            if (rc != 0) __err();

                            fobjCount++; syncDT(ft);
                        }

                        if ((mode & 2) != 0) {
                            if (roles != null) syncRoles(ft,roles);
                        }
                    }
                }

                Application.DoEvents();
                __progress(-1,0);
            }

            __log("^");
        }