/// <summary> /// Zakończ budowę bieżącego komponentu znajdującego się na stosie oraz zmień kontekst. /// Zmienia kontekst bieżącego komponentu, poprzez zdjęcie aktualnego komponentu ze stosu. /// </summary> /// <remarks> /// Trzeba podać poprawny/zgodny terminator komponentu. /// </remarks> /// <param name="terminator"></param> /// <returns>Zwraca stary kontekst/komponent.</returns> /// <exception cref="System.InvalidOperationException">Jeżeli nieprawidłowy terminator.</exception> private KomponentBase EndTop(KomponentBase terminator) { KontrolerKontekstu.Zapewnij(_aktualneKomponenty.Count > 0, "Nieoczekiwany terminator dokumentu."); KomponentBase top = _aktualneKomponenty.Pop(); //[top != null] top.End(terminator); return(top); }
/// <summary> /// Koniec konstrukcji komponentu. /// </summary> /// <param name="terminator"></param> public void End(KomponentBase terminator) { KontrolerKontekstu.Zapewnij(terminator.JestTerminatorem(this), string.Format("{0} nie jest terminatorem {1}", terminator, this)); if (_closed) { throw new InvalidOperationException( string.Format("Komponent {0} został już domknięty.", this)); } _closed = true; }
/// <summary> /// Dodaj rekord so sekcji. /// </summary> /// <param name="rekord"></param> /// <exception cref="ArgumentException"> /// Jeżeli, unikatowy identyfikator dla rekordu został powtórzony w ramach sekcji. /// </exception> private void DodajRekord(RekordSwdeBase rekord) { KontrolerKontekstu.Zapewnij(_identyfikatory.Add(rekord.Identyfikator), "Nie można dodać rekordu z tym samym identyfikatorem."); //Pomiń puste Idr. if (_indeksRekordow.Dodaj(rekord)) { //Pomiń puste Id. if (_indeksTabel.DodajRekord(rekord)) { _rekordy.Add(rekord); } } }
private void ZapewnijNotNull(PozycjaSwde komponent) { KontrolerKontekstu.Zapewnij(komponent != null, "Pozycja rekordu punktowego nie może być pusta."); }
public virtual void DodajMetadane(MetadaneSwde komponent) { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(komponent.GetType())); }
public virtual void DodajWezelKoncowy() { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(typeof(WezelKoncowySwde))); }
public virtual void DodajWiazanie(WiazanieSwdeBase komponent) { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(komponent.GetType())); }
public virtual void DodajRekordObszarowy(RekordObszarowySwde komponent) { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(komponent.GetType())); }
/// <summary> /// Zwróć bieżący komponent swde, ale nie zdejmuj go ze stosu. /// </summary> /// <returns>Zwraca aktualny komponent.</returns> private KomponentBase GetTop() { KontrolerKontekstu.Zapewnij(_aktualneKomponenty.Count > 0, "Brak nadrzędnego komponentu."); return(_aktualneKomponenty.Peek()); }
public void ZacznijBudowacSwde() { KontrolerKontekstu.Zapewnij(_aktualneKomponenty.Count == 0, "Nagłówek dokumentu można zdefiniować tylko raz."); _aktualneKomponenty.Push(_dokument); }
private void ZapewnijFormatStObj() { Regex regex = new Regex("[0-2][0-2]"); //przynależność, wersja KontrolerKontekstu.Zapewnij(regex.IsMatch(_st_obj), ""); }
private void ZapewnijNotNull(KomponentBase komponent) { KontrolerKontekstu.Zapewnij(komponent != null, "Nie można dodać pustego komponentu do rekordu."); }
private void ZapewnijTylkoJedenKontur() { KontrolerKontekstu.Zapewnij(!_konturZewnetrzny.HasValue, "Kontur można ustawić tylko raz."); }
private void ZapewnijJedenWezelKoncowy() { KontrolerKontekstu.Zapewnij(_wezelKoncowy.HasValue, "Obszar musi mieć węzeł końcowy."); }
private void ZapewnijTylkoJedenPunkt() { KontrolerKontekstu.Zapewnij(_pozycja == null, "Można dodać tylko jeden punkt do rekordu punktowego."); }
public virtual void DodajDefinicjaTypu(DefinicjaTypuSwde komponent) { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(komponent.GetType())); }
protected void ZapewnijMinimalneSegmenty(int minimalCount = 2) { KontrolerKontekstu.Zapewnij(_segmenty.Count >= minimalCount, string.Format("Linia lub obszar musi składać się z co najmniej {0} segmentów.", minimalCount)); }
public virtual void DodajAtrybut(AtrybutSwde komponent) { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(komponent.GetType())); }
private void ZapewnijTylkoJedenWezelKoncowy() { KontrolerKontekstu.Zapewnij(!_wezelKoncowy.HasValue, "Węzeł końcowy można dodać tylko raz."); }
public virtual RekordLiniaSwde DodajLiniaLubObszar() { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(typeof(RekordLiniaSwde))); return(null); }
/// <summary> /// Zapewnij, aby dodać węzeł końcowy, musi być już jakaś pozycja. /// </summary> private void ZapewnijCoNajmniejJeden() { KontrolerKontekstu.Zapewnij(_segmenty.Count > 0, "Nie można dodać wezła końcowego jeżeli nie ma punktu początkowego."); }
public virtual void DodajKonturWew() { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(typeof(KonturWewnetrzny))); }
private void ZapewnijNotNull(SekcjaSwdeBase komponent) { KontrolerKontekstu.Zapewnij(komponent != null, "Nie można dodać pustej sekcji do dokumentu."); }
public virtual void DodajSekcjaObiektow(SekcjaObiektowSwde komponent) { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(komponent.GetType())); }
private void ZapewnijTylkoJednaSekcjaDanegoTypu(SekcjaSwdeBase sekcja, SekcjaSwdeBase aktualnaSekcja) { KontrolerKontekstu.Zapewnij(aktualnaSekcja == null, string.Format("Można dodać tylko jedną sekcję typu {0}.", sekcja)); }
protected void ZapewnijIstniejeRelacja() { KontrolerKontekstu.Zapewnij(_rekord != null, string.Format("Wiązanie do rekordu nie istnieje ({0}).", ToString())); }
public SwdeReader(BudowniczySwde budowniczy) { KontrolerKontekstu.Zapewnij(budowniczy != null, "Do wczytania pliku swde potrzebny jest budowniczy."); _budowniczy = budowniczy; }