Beispiel #1
0
        static void Main()
        {
            var entriesComparersTypes = GetTypesThatImplementsInterface(typeof(IEqualityComparer <Entry>));
            var firstComparer         = Activator.CreateInstance(entriesComparersTypes.First());

            //Aktualnie dumpy będą zapisywane w plikach
            IDumpsRepository dumpsRepository = new DumpFileRepository();

            IDziennikBaltyckiService dziennikBaltyckiService = new DziennikBaltyckiService();

            var webSiteIntegrationsTypes = GetTypesThatImplementsInterface(typeof(IWebSiteIntegration));

            foreach (var webSiteIntegrationType in webSiteIntegrationsTypes)
            {
                //Poniższa linijka kodu z pomocą refleksji tworzy instancje konkretnej integracji
                var webSiteIngegration = (IWebSiteIntegration)Activator.CreateInstance(
                    webSiteIntegrationType,
                    dumpsRepository,
                    firstComparer,
                    dziennikBaltyckiService);

                //Pobierz wszystkie dane dumpów, jednak bez konkretnych ofert by nie zaśmiecić pamięci
                var oldDumpsDetails = webSiteIngegration.DumpsRepository.GetAllDumpDetails(webSiteIngegration.WebPage);

                //Tu następuje wykonywanie zrzutu ze strony internetowej
                var newDump = webSiteIngegration.GenerateDump();

                foreach (var oldDumpDetails in oldDumpsDetails)
                {
                    //Załaduj całego dumpa z pamięci wraz z ofertami
                    var oldDump = webSiteIngegration.DumpsRepository.GetDump(oldDumpDetails);

                    //Znajdź wszystkie oferty w starych dumpach których nie ma w nowym dumpie...
                    foreach (var closedEntry in oldDump.Entries.Where(_ => _.OfferDetails.IsStillValid == true)
                             .Except(
                                 newDump.Entries,
                                 webSiteIngegration.EntriesComparer))
                    {
                        //...i oznacz je jako niekatualne
                        closedEntry.OfferDetails.IsStillValid = false;
                    }

                    //Zapisz zmiany w dumpach do repozytorium
                    webSiteIngegration.DumpsRepository.UpdateDump(oldDump);
                }

                //Zapisz nowy dump do repozytorium
                webSiteIngegration.DumpsRepository.InsertDump(newDump);
            }
        }
 public void SetUp()
 {
     _page = new Page();
     _dziennikBaltyckiService = new DziennikBaltyckiService();
 }