Пример #1
0
 private void RegisterConflict(AchsenReferenz achsRef, AchsenUpdateConflict conflict)
 {
     if (Register(achsRef))
     {
         items[GetAbschnittGISBase(achsRef)].conflicts.Add(conflict);
     }
 }
Пример #2
0
 public void AfterCreateSegment(AchsenSegment segment)
 {
     if (segment.ImpNr > 1)  // incremental update, we suppress those warnings for full updates
     {
         AchsenUpdateConflict conflict = CreateConflict(AchsenUpdateConflict.CONFLICTTYPE_NEWSEGMENT, segment.Id, segment.Shape);
         conflict.ItemType = AchsenUpdateConflict.ITEMTYPE_SEGMENT;
         conflict.ItemId   = segment.Id;
         conflict.Name     = segment.Name;
         session.Persist(conflict);
     }
 }
Пример #3
0
        private AchsenUpdateConflict CreateConflict(int conflictType, Guid segmentID, IGeometry shape)
        {
            AchsenUpdateConflict conflict = new AchsenUpdateConflict();

            conflict.Mandant          = erfPeriod.Mandant;
            conflict.ErfassungsPeriod = erfPeriod;
            conflict.ConflictType     = conflictType;
            conflict.SegmentId        = segmentID;
            conflict.Shape            = shape;
            return(conflict);
        }
Пример #4
0
        public void BeforeDeleteSegment(AchsenSegment segment)
        {
            if (segment.AchsenReferenzen.Count > 0)
            {
                // Delete References and Strabs and ZustandsAbs...
                foreach (AchsenReferenz achsRef in new List <AchsenReferenz>(segment.AchsenReferenzen))
                {
                    RegisterConflict(achsRef, CreateConflict(AchsenUpdateConflict.CONFLICTTYPE_PARTIAL_SEGMENT_DELETED, segment.Id, achsRef.Shape));
                    RemoveReference(achsRef);
                }
            }

            AchsenUpdateConflict conflict = CreateConflict(AchsenUpdateConflict.CONFLICTTYPE_PARTIAL_SEGMENT_DELETED, segment.Id, segment.Shape);

            conflict.ItemType = AchsenUpdateConflict.ITEMTYPE_SEGMENT;
            conflict.ItemId   = segment.Id;
            conflict.Name     = segment.Name;
            session.Persist(conflict);
        }
Пример #5
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);
                }
            }
        }