Exemple #1
0
        private void ExtraireCabListing(string listingCabFtp, ITaskObserver taskObserver)
        {
            taskObserver.NotifyProgress(this, 0);

            Func <int, int> reportProgress =
                progress =>
            {
                taskObserver.NotifyProgress(this, progress);
                return(progress);
            };

            var matches = _RegexCab.Matches(listingCabFtp);

            var compteur         = 0;
            int total            = matches.Count;
            var donnéesCabRacine =
                from Match mCab in matches
                let doProgressSideEffect = reportProgress((compteur++ *100) / total)
                                           let donnéesBrutes = CréerDonnéesBrutes(mCab)
                                                               where donnéesBrutes != null
                                                               let cab = CréerCab(donnéesBrutes)
                                                                         where cab != null
                                                                         select cab;

            _listeDonnéesCab = new List <ICab>(donnéesCabRacine);
            taskObserver.NotifyProgress(this, 100);
        }
Exemple #2
0
        private void ChargerDossiersPao(ITaskObserver observer)
        {
            observer.NotifyIsIndeterminate(this);

            var dossiers = Directory.GetDirectories(_racinePao, "*.*",
                                                    SearchOption.TopDirectoryOnly);

            observer.NotifyProgress(this, 0);

            var dossiersParutions =
                (from dossier in observer.InSlice(0, 10).EnumerableProgressTracker(this, dossiers)
                 let parution = Parution(dossier)
                                where parution != null
                                select new { Parution = parution, Dossier = dossier }).ToList();


            _dossiersParutions = dossiersParutions.ToLookup(dp => dp.Parution, dp => dp.Dossier);

            var cabs =
                from dossierParution in observer.InSlice(15, 100).EnumerableProgressTracker(this, dossiersParutions)
                let fi = ExtraireCabFileInfo(dossierParution.Dossier, dossierParution.Parution)
                         where fi != null
                         let cab = CréerCab(fi, dossierParution.Parution)
                                   where cab != null
                                   select cab;

            _listeDonnéesCab = new List <ICab>(cabs);

            observer.NotifyProgress(this, 100);
        }
Exemple #3
0
        private IEnumerable <ICab> CabsPourPage(string page, TypeEditeur éditeur, ITaskObserver observer)
        {
            observer.NotifyProgress(this, 0);
            var cabs    = new List <ICab>();
            var matches = _RegexCab.Matches(page);

            using (var steps = observer.GetSteps(matches.Count).GetEnumerator())
            {
                foreach (Match mCab in matches)
                {
                    observer.NotifyProgress(this, steps.Current);
                    var donnéesBrutes = CréerDonnéesBrutes(mCab, éditeur);
                    if (donnéesBrutes != null)
                    {
                        var cab = CréerCab(donnéesBrutes);
                        if (cab != null)
                        {
                            cabs.Add(cab);
                        }
                    }
                    steps.MoveNext();
                }
            }
            observer.NotifyProgress(this, 100);
            return(cabs);
        }
Exemple #4
0
        private IEnumerable <ICab> CabsPourCompte(CompteCab compte, ITaskObserver observer)
        {
            observer.NotifyProgress(this, 0);
            var cabs = new List <ICab>();

            string pageRacine = OuvrirPage(RequêteDossierRacine(compte), observer.InSlice(0, 7));

            cabs.AddRange(CabsPourPage(pageRacine, compte.Editeur, observer.InSlice(7, 10)));

            ITaskObserver loopObs = observer.InSlice(10, 100);
            var           matches = _RegexDossier.Matches(pageRacine);
            var           slices  = loopObs.GetSlices(matches.Count).GetEnumerator();

            foreach (Match mDossier in matches)
            {
                ITaskObserver sliceObs = loopObs.InSlice(slices.Current);
                var           gDossier = mDossier.Groups["url_rep"];
                if (gDossier != null && !String.IsNullOrEmpty(gDossier.Value))
                {
                    string dossier     = gDossier.Value;
                    string pageDossier = OuvrirPage(RequêteDossier(compte, dossier), sliceObs.InSlice(0, 70));
                    if (!String.IsNullOrEmpty(pageDossier))
                    {
                        cabs.AddRange(CabsPourPage(pageDossier, compte.Editeur, sliceObs.InSlice(70, 100)));
                    }
                }
                slices.MoveNext();
            }
            observer.NotifyProgress(this, 100);
            return(cabs);
        }
Exemple #5
0
        private IEnumerable <IInfosOpérationDépôt> TéléchargerCabsCore(IEnumerable <IParution> parutionsCiblées,
                                                                       IDépôtCabPao dépôtCabPao,
                                                                       IDépôtCab dépôtCabExterne,
                                                                       bool conversionVersTiff,
                                                                       ITaskObserver observer)
        {
            observer.NotifyProgress(this, 0);

            var i     = 0;
            int total = parutionsCiblées.Count();
            var téléchargementTasks =
                (from p in parutionsCiblées
                 select Task.Factory.StartNew(
                     () => TéléchargerCabSiNécessaireCore(p, dépôtCabExterne, dépôtCabPao, conversionVersTiff, observer),
                     TaskCreationOptions.AttachedToParent)
                 .ContinueWith(
                     t =>
            {
                int step = Interlocked.Increment(ref i);
                observer.NotifyProgress(this, step * 100 / total);
                return(t.Result);
            },
                     TaskContinuationOptions.AttachedToParent
                     )).ToList();


            var résultat = (from task in téléchargementTasks where task.Result != null select task.Result).ToList();

            observer.NotifyProgress(this, 100);

            return(résultat);
        }
Exemple #6
0
        protected string OuvrirPage(WebRequest request, ITaskObserver observer)
        {
            string page;

            observer.NotifyProgress(this, 0);

            var response = request.GetResponse();

            try
            {
                using (var responseStream = response.GetResponseStream())
                {
                    try
                    {
                        var responseReader = new StreamReader(responseStream, Encoding.UTF8);
                        try
                        {
                            page = responseReader.ReadToEnd();
                        }
                        finally
                        {
                            responseReader.Close();
                        }
                    }
                    finally
                    {
                        responseStream.Close();
                    }
                }
            }
            finally
            {
                response.Close();
                observer.NotifyProgress(this, 100);
            }

            return(page);
        }
Exemple #7
0
        public void ChargerParutions(ITaskObserver taskObserver)
        {
            taskObserver.NotifyProgress(this, 0);

            _distributeurs = ((List <dynamic>)_db.Tiers.All()
                              .Where(_db.Tiers.TiersActivite.Activite.Libelle.Like(_ActivitéLibelléDistributeur))
                              .Select(_db.Tiers.IdTiers, _db.Tiers.LibelleCourt, _db.Tiers.RaisonSociale))
                             .Select(x => new { Id = (int)x.IdTiers, Libellé = (string)x.LibelleCourt, RaisonSociale = (string)x.RaisonSociale })
                             .ToDictionary(x => x.Id, x => new DistributeurBdi(x.Libellé, x.RaisonSociale));

            taskObserver.NotifyProgress(this, 5);

            _éditeurs = ((List <dynamic>)_db.Tiers.All()
                         .Where(_db.Tiers.TiersActivite.Activite.Libelle.Like(_ActivitéLibelléEditeur))
                         .Select(_db.Tiers.IdTiers, _db.Tiers.LibelleCourt, _db.Tiers.RaisonSociale))
                        .Select(x => new { Id = (int)x.IdTiers, Libellé = (string)x.LibelleCourt, RaisonSociale = (string)x.RaisonSociale })
                        .ToDictionary(x => x.Id, x => new EditeurBdi(x.Libellé, x.RaisonSociale));

            taskObserver.NotifyProgress(this, 10);

            _régulateurs = ((List <dynamic>)_db.Tiers.All()
                            .Where(_db.Tiers.TiersActivite.Activite.Libelle.Like(_ActivitéLibelléRégulateur))
                            .Select(_db.Tiers.IdTiers, _db.Tiers.LibelleCourt, _db.Tiers.RaisonSociale))
                           .Select(x => new { Id = (int)x.IdTiers, Libellé = (string)x.LibelleCourt, RaisonSociale = (string)x.RaisonSociale })
                           .ToDictionary(x => x.Id, x => x.RaisonSociale);

            taskObserver.NotifyProgress(this, 15);

            _périodicités = ((List <dynamic>)_db.Periodicite.All()
                             .Select(_db.Periodicite.IdPeriodicite, _db.Periodicite.Libelle, _db.Periodicite.ADefinir))
                            .Select(x => new { Id = (int)x.IdPeriodicite, Libellé = (string)x.Libelle, ADéfinir = (bool)x.ADefinir })
                            .ToDictionary(x => x.Id, x => new PériodicitéBdi(x.ADéfinir, x.Libellé));

            taskObserver.NotifyProgress(this, 20);

            _qualificationsRéseau = ((List <dynamic>)_db.QualificationReseau.All()
                                     .Select(_db.QualificationReseau.IdQualificationReseau, _db.QualificationReseau.Libelle))
                                    .Select(x => new { Id = (int)x.IdQualificationReseau, Libellé = (string)x.Libelle })
                                    .ToDictionary(x => x.Id, x => new QualificationRéseauBdi(x.Libellé));

            taskObserver.NotifyProgress(this, 30);

            Parutions = ((List <dynamic>)_db.MiseEnVente.All()
                         .Where(_db.MiseEnVente.FaitLivraison == false)
                         .Where(_db.MiseEnVente.IdDistributeur == _IdTiersMlp)
                         .Where(_db.MiseEnVente.Types == _IdTypeRevue)
                         .Where(_db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Principal == true)
                         .Select(_db.MiseEnVente.IdMiseEnVente.Distinct(),
                                 _db.MiseEnVente.IdDistributeur,
                                 _db.MiseEnVente.RefDistributeur,
                                 _db.MiseEnVente.IdQualificationReseau,
                                 _db.MiseEnVente.FaitSortie,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.IdElement,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.Titre,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.IdEditeur,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.Reference,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.PrixImprime,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.Numero,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.VDateDepartFab,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.DateDepartFab,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.SousPole.IdPole,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.Serie.StatutSerie.Libelle.As(
                                     "LibelleStatutSerie"),
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.ElementRevue.IdPeriodiciteExterne,
                                 _db.MiseEnVente.ProduitMiseEnVente.Produit.ProduitElement.Element.ElementRevue.IdRegulateur))
                        .Select(x => new
            {
                Distributeur        = _distributeurs[(int)x.IdDistributeur],
                RefDistributeur     = (string)x.RefDistributeur,
                QualificationRéseau = _qualificationsRéseau[(int)x.IdQualificationReseau],
                FaitSortie          = (bool)x.FaitSortie,
                Titre          = (string)x.Titre,
                Editeur        = _éditeurs[(int)x.IdEditeur],
                Référence      = (string)x.Reference,
                PrixImprimé    = (decimal?)x.PrixImprime,
                Numéro         = (int)x.Numero,
                VDateDépartFab = (DateTime?)x.VDateDepartFab,
                DateDépartFab  = (DateTime?)x.DateDepartFab,
                Pôle           = _pôles[(int)x.IdPole],
                StatutSérie    = (string)x.LibelleStatutSerie,
                Périodicité    = _périodicités[(int)x.IdPeriodiciteExterne],
                Régulateur     = _régulateurs[(int)x.IdRegulateur],
                FaitPao        = GetFaitPao((int)x.IdElement)
            })
                        .Select(
                x =>
                new ParutionBdi(x.Distributeur,
                                x.Editeur,
                                x.QualificationRéseau,
                                x.Pôle,
                                x.Périodicité,
                                x.RefDistributeur,
                                x.Titre,
                                x.Référence,
                                x.PrixImprimé,
                                x.Numéro,
                                x.VDateDépartFab,
                                x.DateDépartFab,
                                x.StatutSérie,
                                x.Régulateur,
                                x.FaitSortie,
                                x.FaitPao))
                        .ToList();

            taskObserver.NotifyProgress(this, 100);
        }