コード例 #1
0
ファイル: Rozliczenie.cs プロジェクト: damianhintz/WykazZmian
        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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
 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.");
 }
コード例 #4
0
        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);
        }
コード例 #5
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);
        }
コード例 #6
0
        public void dodajPunkt(PunktGraniczny punkt)
        {
            Kontrakt.requires(punkt != null);
            int countPrzed = countPunkty();

            _punkty.Add(punkt);
            int countPo = countPunkty();

            Kontrakt.ensures(countPrzed + 1 == countPo);
        }
コード例 #7
0
 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);
 }
コード例 #8
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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
 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));
 }
コード例 #11
0
        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));
        }
コード例 #12
0
 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));
 }
コード例 #13
0
ファイル: RodzajeDzialek.cs プロジェクト: promwand00/swde
        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);
        }
コード例 #14
0
ファイル: Powierzchnia.cs プロジェクト: promwand00/swde
        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);
        }
コード例 #15
0
        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);
        }
コード例 #16
0
ファイル: Powierzchnia.cs プロジェクト: promwand00/swde
        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);
        }
コード例 #17
0
ファイル: RozliczenieWriter.cs プロジェクト: promwand00/swde
 protected RozliczenieWriter(Rozliczenie rozliczenie)
 {
     Kontrakt.requires(rozliczenie != null);
     _rozliczenie = rozliczenie;
     Kontrakt.ensures(rozliczenie.Equals(_rozliczenie));
 }