示例#1
0
        public void PostWork()
        {
            foreach (RegisteredItem item in items.Values)
            {
                bool completeLoss = false;

                int    itemType = AchsenUpdateConflict.ItemTypeFromClass(item.abschnittGISBase);
                string name     = item.abschnittGISBase.DisplayName;

                if (item.abschnittGISBase.ReferenzGruppe.AchsenReferenzen.Count == 0)
                {
                    completeLoss = true;
                    session.Delete(item.abschnittGISBase.ReferenzGruppe);
                    session.Delete(item.abschnittGISBase);

                    statistics.ReportRemoved(item.abschnittGISBase);
                }
                else
                {
                    UpdateGeometryFromReferences(item.abschnittGISBase);

                    statistics.ReportUpdated(item.abschnittGISBase);
                }

                foreach (AchsenUpdateConflict conflict in item.conflicts)
                {
                    if (completeLoss)
                    {
                        conflict.ConflictType |= 16;
                    }
                    conflict.Name     = name;
                    conflict.ItemType = itemType;
                    conflict.ItemId   = item.abschnittGISBase.Id;
                    session.Persist(conflict);
                }
            }
        }