示例#1
0
        private static ObiektSwde[] GetPunktyGraniczne(DokumentSwde dokument, RekordLiniowySwde rekordLiniowy, out int punktyNiegraniczne)
        {
            List <ObiektSwde>  punktyGraniczne = new List <ObiektSwde>();
            HashSet <RekordId> rekordyDodane   = new HashSet <RekordId>();

            punktyNiegraniczne = 0;
            foreach (var linia in rekordLiniowy.Linie)
            {
                foreach (var pozycja in linia.Segmenty)
                {
                    if (pozycja is PozycjaIdSwde || pozycja is PozycjaIdrSwde)
                    {
                        RekordSwdeBase rekord = pozycja.Rekord;

                        if (rekordyDodane.Add(rekord.Identyfikator))
                        {
                            punktyGraniczne.Add(dokument.createObiekt(rekord));
                        }
                    }
                    else
                    {
                        punktyNiegraniczne++;
                    }
                }
            }
            return(punktyGraniczne.ToArray());
        }
示例#2
0
        /// <summary>
        /// Zwraca obiekty będące w danej relacji z tym obiektem.
        /// </summary>
        /// <param name="nazwa">Nazwa/kod relacji (bez prefiksu).</param>
        public IEnumerable <ObiektSwde> GetRelacjaWielokrotna(string nazwa)
        {
            nazwa = RekordSwdeG5.NormalizujPrefiksAtrybutu(nazwa);

            IEnumerable <WiazanieSwdeBase> wiazania = _rekord.Wiazania.Where(r => r.Pole == nazwa);

            List <ObiektSwde> obiekty = new List <ObiektSwde>();

            foreach (WiazanieSwdeBase wiazanie in wiazania)
            {
                RekordSwdeBase rekord = wiazanie.Rekord;
                //Obiekt odpowiadający rekordowi powinien już istnieć i dokument powinien posiadać instancję tego obiektu.
                obiekty.Add(_dokument.createObiekt(rekord));
            }

            return(obiekty);
        }