public static bool uległaZmianie(this Działka staraDzialka, Działka nowaDzialka) { if (!nowaDzialka.Powierzchnia.Equals(staraDzialka.Powierzchnia)) { return(true); //niezgodna powierzchnia działki } if (nowaDzialka.Count() != staraDzialka.Count()) { return(true); //niezgodna liczba użytków } var użytki = staraDzialka.UnionUżytki(nowaDzialka); foreach (var użytek in użytki) { Klasoużytek stary = staraDzialka.SzukajUżytku(użytek); Klasoużytek nowy = nowaDzialka.SzukajUżytku(użytek); if (stary == null || nowy == null) { return(true); //dodany/usunięty użytek } Powierzchnia stara = stary.powierzchnia(); Powierzchnia nowa = nowy.powierzchnia(); if (!nowa.Equals(stara)) { return(true); //inna powierzchnia użytków } //if (nowa.powyzejOdchylki(stara)) return true; //powyżej odchyłki Kontrakt.assert(stary.Equals(nowy), "Różne oznaczenie użytku: " + stary.ToString()); } return(false); }
int WczytajKlasoużytki(DokumentSwde swde) { var użytki = swde.GetObiektyKlasy("G5KLU"); foreach (var klu in użytki) { string g5ofu = klu.GetAtrybut("G5OFU"); string g5ozu = klu.GetAtrybut("G5OZU"); string g5ozk = klu.GetAtrybut("G5OZK"); string g5pew = klu.GetAtrybut("G5PEW"); Powierzchnia powierzchnia = Powierzchnia.ParsujMetry(g5pew); Klasoużytek klasouzytek = new Klasoużytek(g5ofu, g5ozu, g5ozk, powierzchnia); var dze = klu.GetRelacja("G5RDZE"); string g5idd = dze.GetAtrybut("G5IDD"); IdentyfikatorDziałki identyfikator = IdentyfikatorDziałki.ParsujIdG5(g5idd); var id = identyfikator.ToString(); if (_indeksDziałek.ContainsKey(id)) { _indeksDziałek[id].DodajUżytek(klasouzytek); } else { Logger.ostrzeżenie("nie można dodać użytku " + klasouzytek.ToString() + " do działki " + id); } } return(użytki.Count()); }
Klasoużytek ParsujKlasoużytek(string linia) { var pola = linia.Split(new [] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries); var ozn = pola.First(); var powierzchnia = Powierzchnia.ParsujMetry(pola[1]); var oznaczenie = _słownik.SzukajOznaczenia(ozn); var użytek = new Klasoużytek(oznaczenie.ofu, oznaczenie.ozu, oznaczenie.ozk, powierzchnia); //Kontrakt.ensures(oznaczenie.Equals(ozn), // "Odtworzenie oznaczenia nie jest możliwe: " + oznaczenie + " z " + // użytek.ToString() + " = " + ozn); return(użytek); }