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); }
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); }
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); }
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); }
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); }
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); }
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); }