private void DeleteAchsenReferenz(AchsenReferenz referenz) { ISession session = transactionScopeProvider.CurrentTransactionScope.Session; referenz.ReferenzGruppe.AchsenReferenzen.Remove(referenz); referenz.AchsenSegment.AchsenReferenzen.Remove(referenz); session.Delete(referenz); IAbschnittGISBase abschnitt = this.GetAbschnittGISBase(referenz); if (abschnitt == null) { Loggers.ApplicationLogger.Warn(String.Format("No Abschnitt found for Referenzgruppe id: {0}", referenz.ReferenzGruppe.Id.ToString())); } else { if (referenz.ReferenzGruppe.AchsenReferenzen.Count < 1) { session.Delete(referenz.ReferenzGruppe); ZustandsabschnittGIS zab = abschnitt as ZustandsabschnittGIS; if (zab != null) { zab.StrassenabschnittGIS.Zustandsabschnitten.Remove(zab); } session.Delete(abschnitt); } else { this.UpdateAbschnitt(abschnitt); } } }
private void CheckIfLocked(IAbschnittGISBase abschnittGISBase) { if (abschnittGISBase is StrassenabschnittGIS) { StrassenabschnittGIS straGis = (StrassenabschnittGIS)abschnittGISBase; if (straGis.IsLocked) { throw new AchsenUpdateAbschnittLockedException(); } } }
private void UpdateAchsenReferenz(AchsenReferenz referenz, ILineString iLineString) { referenz.Shape = iLineString; IAbschnittGISBase abschnitt = this.GetAbschnittGISBase(referenz); if (abschnitt == null) { Loggers.ApplicationLogger.Warn(String.Format("No Abschnitt found for Referenzgruppe id: {0}", referenz.ReferenzGruppe.Id.ToString())); } else { this.UpdateAbschnitt(abschnitt); } }
public string GenerateGeoJsonStringFromEntity(IAbschnittGISBase entity) { if (entity == null) { return("{ \"type\": \"FeatureCollection\", \"features\": []}"); } FeatureWithID feature = getFeatureWithId(entity); TextWriter sw = new StringWriter(); GeoJSONWriter.WriteWithID(feature, sw); string geoJSONstring = sw.ToString(); return(geoJSONstring); }
private void UpdateGeometryFromReferences(IAbschnittGISBase abschnittGISBase) { IGeometry newShape = null; foreach (AchsenReferenz achsRef in abschnittGISBase.ReferenzGruppe.AchsenReferenzen) { if (newShape == null) { newShape = achsRef.Shape; } else { newShape = newShape.Union(achsRef.Shape); } } abschnittGISBase.Shape = newShape; }
public void ReportUpdated(IAbschnittGISBase item) { if (item is StrassenabschnittGIS) { UpdatedStrassenabschnitts++; } if (item is ZustandsabschnittGIS) { UpdatedZustandsabschnitts++; } if (item is KoordinierteMassnahmeGIS) { UpdatedKoordinierteMassnahmen++; } if (item is MassnahmenvorschlagTeilsystemeGIS) { UpdatedMassnahmenvorschlagTeilsysteme++; } }
private void UpdateAbschnitt(IAbschnittGISBase abschnitt) { IGeometry shape = null; foreach (AchsenReferenz aref in abschnitt.ReferenzGruppe.AchsenReferenzen) { if (shape != null) { shape = shape.Union(aref.Shape); } else { shape = aref.Shape; } } abschnitt.Shape = shape; abschnitt.Laenge = (decimal)Math.Round(shape.Length * 10) / 10; this.transactionScopeProvider.CurrentTransactionScope.Session.Update(abschnitt); }
private bool Register(AchsenReferenz achsRef) { IAbschnittGISBase abschnittGISBase = GetAbschnittGISBase(achsRef); if (abschnittGISBase == null) { return(false); } CheckIfLocked(abschnittGISBase); if (items.ContainsKey(abschnittGISBase)) { return(true); } RegisteredItem rItem = new RegisteredItem(); rItem.abschnittGISBase = abschnittGISBase; rItem.originalGeometry = abschnittGISBase.Shape; items.Add(abschnittGISBase, rItem); return(true); }
public const int CONFLICTTYPE_COMPLETELOSS_REFERENCE_TOOSHORT = 16 | 4; // 20 public static int ItemTypeFromClass(IAbschnittGISBase item) { if (item is StrassenabschnittGIS) { return(AchsenUpdateConflict.ITEMTYPE_STRASSENABSCHNITT); } if (item is ZustandsabschnittGIS) { return(AchsenUpdateConflict.ITEMTYPE_ZUSTAND); } if (item is KoordinierteMassnahmeGIS) { return(AchsenUpdateConflict.ITEMTYPE_KOORDINIERTEMASSNAHME); } if (item is MassnahmenvorschlagTeilsystemeGIS) { return(AchsenUpdateConflict.ITEMTYPE_MASSNVORSCHLAGTEILSYSTEM); } if (item is RealisierteMassnahmeGIS) { return(AchsenUpdateConflict.ITEMTYPE_REALISIERTEMASSNAHME); } return(-1); }
private FeatureWithID getFeatureWithId(IAbschnittGISBase entity) { List <AchsenReferenz> achsenreferenzListe = achsenReferenzService.GetAchsenReferenzGruppe(entity.ReferenzGruppe.Id); //create geojson List <FeatureWithID> featuresListChilds = new List <FeatureWithID>(); FeatureWithID feature = new FeatureWithID(); IAttributesTable attribute = new AttributesTable(); feature.Id = entity.Id.ToString(); feature.Geometry = entity.Shape; //GEOJSON PROPERTIES: Childs (= Achsenreferenzen) foreach (AchsenReferenz ar in achsenreferenzListe) { FeatureWithID feat = new FeatureWithID(); IAttributesTable attributes = new AttributesTable(); feat.Id = ar.Id.ToString(); feat.Geometry = ar.Shape; attributes.AddAttribute(geoJSONAttribute_AchsenSegmentId, ar.AchsenSegment.Id); attributes.AddAttribute(geoJSONAttribute_IsInverted, ar.AchsenSegment.IsInverted); feat.Attributes = attributes; featuresListChilds.Add(feat); } attribute.AddAttribute(geoJSONAttribute_childs, featuresListChilds); if (entity is KoordinierteMassnahmeGIS) { attribute.AddAttribute("Name", ((KoordinierteMassnahmeGIS)entity).Projektname); } if (entity is MassnahmenvorschlagTeilsystemeGIS) { attribute.AddAttribute("Name", ((MassnahmenvorschlagTeilsystemeGIS)entity).Projektname); attribute.AddAttribute("System", localizationService.GetLocalizedEnum <TeilsystemTyp>(((MassnahmenvorschlagTeilsystemeGIS)entity).Teilsystem)); } //GEOJSON PROPERTIES: ZUSTANDSABSCHNITTE if (entity is StrassenabschnittGIS) { List <FeatureWithID> featuresListZustandsabschnitte = new List <FeatureWithID>(); List <ZustandsabschnittGIS> zustandsabschnitte = transactionScopeProvider.Queryable <ZustandsabschnittGIS>().Where(za => za.StrassenabschnittGIS.Id == entity.Id).ToList(); foreach (ZustandsabschnittGIS zustandsabschnitt in zustandsabschnitte) { FeatureWithID feat = new FeatureWithID(); IAttributesTable att = new AttributesTable(); feat.Id = zustandsabschnitt.Id.ToString(); feat.Geometry = zustandsabschnitt.Shape; feat.Attributes = att; featuresListZustandsabschnitte.Add(feat); } var sa = entity as StrassenabschnittGIS; attribute.AddAttribute(geoJSONAttribute_Zustandsabschnitte, featuresListZustandsabschnitte); attribute.AddAttribute(geoJSONAttribute_IsLocked, sa.IsLocked); if (sa.InspektionsRtStrAbschnitte.Count > 0) { attribute.AddAttribute(geoJSONAttribute_InspektionsrouteID, sa.InspektionsRtStrAbschnitte.SingleOrDefault().InspektionsRouteGIS.Id); } else { attribute.AddAttribute(geoJSONAttribute_InspektionsrouteID, ""); } } else { if (entity is ZustandsabschnittGIS) { attribute.AddAttribute(geoJSONAttribute_StrassenabschnittsID, ((ZustandsabschnittGIS)entity).StrassenabschnittGIS.Id); var za = entity as ZustandsabschnittGIS; attribute.AddAttribute(geoJSONAttribute_IsLocked, za.IsLocked); } } feature.Attributes = attribute; return(feature); }