public void DodajDziałkę(Działka działka) { if (działka == null) { throw new ArgumentNullException(paramName: "działka", message: "Działka jest null."); } if (działka.Any() == false) { throw new InvalidOperationException(message: "Działka nie zawiera żadnych klasoużytków."); } if (SzukajIdDziałki(działka.Id) != null) { throw new InvalidOperationException("Rozliczenie zawiera już działkę " + działka.Id); } int dzialkiPrzed = _działki.Count; _działki.Add(działka); var id = działka.Id; _indeksDziałek.Add(id.ToString(), działka); int dzialkiPo = _działki.Count; Kontrakt.ensures(dzialkiPrzed + 1 == dzialkiPo); Kontrakt.ensures(SzukajIdDziałki(id) != null); }
public void Wczytaj(string fileName) { //_klu.read(Path.Combine(Path.GetDirectoryName(fileName), "uzytkiG5.csv")); var lines = File.ReadAllLines(path: fileName, encoding: _kodowanie); var header = lines.First(); Kontrakt.assert( header.Equals("Rozliczenie konturów klasyfikacyjnych na działkach [m^2]"), "Nieprawidłowy nagłówek pliku z rozliczeniem konturów."); var wczytaneDziałki = 0; var rekordDziałki = new List <string>(); for (int i = 1; i < lines.Length; i++) { var trimmedLine = lines[i].Trim(); if (KoniecRekorduDziałki(rekordDziałki, trimmedLine)) { WczytajRekordDziałki(_rozliczenie, rekordDziałki); wczytaneDziałki++; } else { //Kumulacja rekordu działki wraz z użytkami. if (!String.IsNullOrEmpty(trimmedLine)) { rekordDziałki.Add(trimmedLine); } } } Kontrakt.ensures(rekordDziałki.Count == 0, "Nieprawidłowo zakończony rekord działki"); Kontrakt.ensures(_rozliczenie.Any()); Kontrakt.ensures(wczytaneDziałki == _rozliczenie.Count()); }
public DokumentReader(string fileName) { Kontrakt.requires(File.Exists(fileName), "Plik SWDE nie istnieje: " + fileName); _budowniczy = new BudowniczySwde(this); _reader = new SwdeReader(_budowniczy); _reader.Read(fileName); Kontrakt.ensures(_budowniczy.CzyZbudowany, "Plik SWDE nie został prawidłowo wczytany."); }
private string _operat = string.Empty; //Sygnatura dokumentu. public PunktGraniczny(string zrodloDanych, string bladPolozenia) { _bladPolozenia = bladPolozenia; _zrodloDanych = zrodloDanych; _rodzaj = new RodzajPunktu(zrodloDanych, bladPolozenia); Kontrakt.ensures(_zrodloDanych.Equals(zrodloDanych)); Kontrakt.ensures(_rodzaj != null); Kontrakt.ensures(_operat.Length == 0); }
public DzialkaEwidencyjna dzialkaById(IdentyfikatorDzialki id) { Kontrakt.requires(id != null); Kontrakt.requires(zawieraId(id), "Rozliczenie nie zawiera działki " + id.ToString()); DzialkaEwidencyjna dzialka = _indeks[id.identyfikator()]; Kontrakt.ensures(dzialka != null); return(dzialka); }
public void dodajPunkt(PunktGraniczny punkt) { Kontrakt.requires(punkt != null); int countPrzed = countPunkty(); _punkty.Add(punkt); int countPo = countPunkty(); Kontrakt.ensures(countPrzed + 1 == countPo); }
public DzialkaEwidencyjna(IdentyfikatorDzialki idDzialki, Powierzchnia powDzialki) : base(powDzialki) { Kontrakt.requires(idDzialki != null); Kontrakt.requires(powDzialki != null); _identyfikator = idDzialki; Kontrakt.ensures(_identyfikator == idDzialki); Kontrakt.ensures(powierzchnia().Equals(powDzialki)); Kontrakt.ensures(_dzialkaDotychczasowa == null); Kontrakt.ensures(_dzialkiPodzielone.Count == 0); }
private Klasouzytek parseKlasouzytek(string linia) { string[] pola = linia.Split(new char[] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries); string oznaczenie = pola[0]; Powierzchnia powierzchnia = Powierzchnia.parseMetry(pola[1]); string[] klu = _klu.map(oznaczenie); Klasouzytek klasouzytek = new Klasouzytek(klu[0], klu[1], klu[2], powierzchnia); string ozn = klasouzytek.oznaczenie(_klu); Kontrakt.ensures(oznaczenie.Equals(ozn), "Odtworzenie oznaczenia nie jest możliwe: " + oznaczenie + " z " + klasouzytek.ToString() + " = " + ozn); return(klasouzytek); }
public void dodajKlasouzytek(Klasouzytek klasouzytek) { Kontrakt.requires(klasouzytek != null); int countPrzed = countKlasouzytki(); foreach (var uzytek in _klasouzytki) { Kontrakt.assert(!uzytek.Equals(klasouzytek), "W działce " + identyfikator().ToString() + " już jest klasoużytek " + klasouzytek); } _klasouzytki.Add(klasouzytek); int countPo = countKlasouzytki(); Kontrakt.ensures(countPrzed + 1 == countPo); }
public IdentyfikatorDzialki(string numerObrebu, string numerDzialki) { Kontrakt.requires(!String.IsNullOrEmpty(numerObrebu), "Numer obrębu jest pusty."); foreach (var c in numerObrebu) { Kontrakt.requires(char.IsDigit(c), "Numer obrębu nie składa się z cyfr:" + numerObrebu); } Kontrakt.requires(!String.IsNullOrEmpty(numerDzialki), "Numer działki jest pusty."); Kontrakt.requires(char.IsDigit(numerDzialki[0]), "Numer działki " + numerDzialki + " nie zaczyna się od cyfry."); _numerObrebu = numerObrebu; _numerDzialki = numerDzialki; Kontrakt.ensures(_numerObrebu.Equals(numerObrebu)); Kontrakt.ensures(_numerDzialki.Equals(numerDzialki)); }
public void dodajDzialka(DzialkaEwidencyjna dzialka) { Kontrakt.requires(dzialka != null); Kontrakt.requires(dzialka.countKlasouzytki() > 0, "Działka nie zawiera żadnych klasoużytków."); Kontrakt.requires(!zawieraId(dzialka.identyfikator()), "Rozliczenie zawiera już działkę " + dzialka.identyfikator()); int dzialkiPrzed = _dzialki.Count; _dzialki.Add(dzialka); IdentyfikatorDzialki id = dzialka.identyfikator(); _indeks.Add(id.identyfikator(), dzialka); int dzialkiPo = _dzialki.Count; Kontrakt.ensures(dzialkiPrzed + 1 == dzialkiPo); Kontrakt.ensures(zawieraId(id)); }
private JednostkaRejestrowa(string teryt, string obreb, string numer) { Kontrakt.requires(!String.IsNullOrEmpty(teryt), "Numer teryt jednostki rejestrowej jest pusty."); Kontrakt.requires(!String.IsNullOrEmpty(obreb), "Numer obrębu jednostki rejestrowej jest pusty."); Kontrakt.requires(teryt.Length.Equals(8), "Numer teryt jednostki rejestrowej jest nieprawidłowy: " + teryt); Kontrakt.requires(obreb.Length.Equals(4), "Numer obrębu jednostki rejestrowej jest nieprawidłowy: " + obreb); Kontrakt.requires(!String.IsNullOrEmpty(numer), "Numer jednostki rejestrowej jest pusty."); Kontrakt.requires(numer.StartsWith("G") || numer.StartsWith("B") || numer.StartsWith("L"), "Numer jednostki rejestrowej nie zaczyna się od G, B lub L: " + teryt + "." + obreb + "." + numer); Kontrakt.forAll(numer.Substring(2), char.IsDigit); //Numer jednostki rejestrowej powinien zawierać cyfry _teryt = teryt; _obreb = obreb; _numer = numer; Kontrakt.ensures(teryt.Equals(_teryt)); Kontrakt.ensures(obreb.Equals(_obreb)); Kontrakt.ensures(numer.Equals(_numer)); }
private void writeDzialka(DzialkaEwidencyjna dzialka) { string id = dzialka.identyfikator().ToString(); RodzajDzialki rodzaj = rozliczenie().rodzaj; bool nieznany = rodzaj.nieznany(dzialka); bool wektoryzacja = rodzaj.niepomierzona(dzialka); bool pomierzona = rodzaj.pomierzona(dzialka); var operaty = from pkt in dzialka.punkty() select "[" + pkt.zrodloDanych() + ", " + pkt.bladPolozenia() + ", " + pkt.operat() + "]"; string joinOperaty = string.Join(" ", operaty); if (nieznany) { _writer.WriteLine("{0,-16}{1,-16}{2}", id, "nieznany", joinOperaty); } if (wektoryzacja) { _writer.WriteLine("{0,-16}{1,-16}{2}", id, "wektoryzacja", joinOperaty); } if (pomierzona) { _writer.WriteLine("{0,-16}{1,-16}{2}", id, "pomiar", joinOperaty); } int count = 0; if (nieznany) { count++; } if (wektoryzacja) { count++; } if (pomierzona) { count++; } Kontrakt.ensures(count == 1, "Konflikt rodzaju działki: " + id); }
public static Powierzchnia parseMetry(string s) { Kontrakt.requires(!String.IsNullOrEmpty(s), "Powierzchnia jest pusta."); Powierzchnia pow = null; try { pow = new Powierzchnia(long.Parse(s)); } catch (FormatException) { Kontrakt.fail("Napis " + s + " nie reprezentuje powierzchni w m^2."); } catch (OverflowException) { Kontrakt.fail("Napis " + s + " reprezentuje powierzchnię poza zakresem dopuszczalnych wartości."); } Kontrakt.ensures(pow != null); return(pow); }
public override Rozliczenie read(string fileName) { _klu = new FabrykaKlasouzytku(); _klu.read(Path.Combine(Path.GetDirectoryName(fileName), "uzytkiG5.csv")); Kontrakt.requires(File.Exists(fileName)); string[] lines = File.ReadAllLines(fileName, Encoding.GetEncoding(1250)); string headerLine = lines[0]; Kontrakt.assert( headerLine.Equals("Rozliczenie konturów klasyfikacyjnych na działkach [m^2]"), "Nieprawidłowy nagłówek pliku z rozliczeniem konturów."); Rozliczenie rozliczenie = new Rozliczenie(_rodzajDzialki, _klu); int wczytaneDzialki = 0; List <string> rekordDzialki = new List <string>(); for (int i = 1; i < lines.Length; i++) { string linia = lines[i].Trim(); if (koniecRekorduDzialki(rekordDzialki, linia)) { readRekordDzialki(rozliczenie, rekordDzialki); wczytaneDzialki++; } else { //Kumulacja rekordu działki wraz z użytkami. if (!String.IsNullOrEmpty(linia)) { rekordDzialki.Add(linia); } } } Kontrakt.ensures(rozliczenie != null); Kontrakt.ensures(rekordDzialki.Count == 0, "Nieprawidłowo zakończony rekord działki"); Kontrakt.ensures(rozliczenie.Count() > 0); Kontrakt.ensures(wczytaneDzialki == rozliczenie.Count()); return(rozliczenie); }
public static Powierzchnia parseHektary(string s) { Kontrakt.requires(!String.IsNullOrEmpty(s)); Powierzchnia pow = null; try { double ha = double.Parse(s, CultureInfo.InvariantCulture); long m2 = (long)(ha * 10000.0); pow = new Powierzchnia(m2); } catch (FormatException) { Kontrakt.fail("Napis " + s + " nie reprezentuje powierzchni w ha."); } catch (OverflowException) { Kontrakt.fail("Napis " + s + " reprezentuje powierzchnię poza zakresem dopuszczalnych wartości."); } Kontrakt.ensures(pow != null); return(pow); }
protected RozliczenieWriter(Rozliczenie rozliczenie) { Kontrakt.requires(rozliczenie != null); _rozliczenie = rozliczenie; Kontrakt.ensures(rozliczenie.Equals(_rozliczenie)); }