private void RegisterConflict(AchsenReferenz achsRef, AchsenUpdateConflict conflict) { if (Register(achsRef)) { items[GetAbschnittGISBase(achsRef)].conflicts.Add(conflict); } }
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); } }
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); }
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); }
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); } } }