Esempio n. 1
0
        private IEnumerable <IInfosOpérationDépôt> TéléchargerCabs(IEnumerable <IParution> parutionsCiblées,
                                                                   IDépôtCabPao dépôtCabPao,
                                                                   IDépôtCab dépôtCabExterne,
                                                                   IOptionsTéléchargementCabs optionsTéléchargement,
                                                                   IAfficheurTâches afficheurTâches)
        {
            var observer = _taskObserverFactory.CreateTaskObserver();

            afficheurTâches.AjouterTâche($"Téléchargement des Cabs depuis [{dépôtCabExterne}]",
                                         observer);
            try
            {
                observer.NotifyStarted(this);
                observer.NotifyProgress(this, 0);

                var résultat =
                    TéléchargerCabsCore(parutionsCiblées, dépôtCabPao, dépôtCabExterne,
                                        optionsTéléchargement.ConvertirCabVersTiff, observer);

                observer.NotifyProgress(this, 100);
                observer.NotifyCompleted(this);

                return(résultat);
            }
            catch (Exception exception)
            {
                observer.NotifyError(this, exception.DetailedMessage());
                observer.NotifyAborted(this, "Interruption causée par une erreur");
                throw;
            }
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
 public OpérateurPrincipal(IDépôtParutions dépôtParutions, IDépôtCabPao dépôtCabPao, IDépôtCabMlp dépôtCabMlp,
                           IDépôtCabNmpp dépôtCabNmpp, ITaskObserverFactory taskObserverFactory,
                           IInfosOpérationDépôtFactory infosOpérationDépôtFactory,
                           IGénérateurRapportMail générateurRapportMail, IMailer mailer)
 {
     _dépôtParutions             = dépôtParutions ?? throw new ArgumentNullException(nameof(dépôtParutions));
     _dépôtCabPao                = dépôtCabPao ?? throw new ArgumentNullException(nameof(dépôtCabPao));
     _dépôtCabMlp                = dépôtCabMlp ?? throw new ArgumentNullException(nameof(dépôtCabMlp));
     _dépôtCabNmpp               = dépôtCabNmpp ?? throw new ArgumentNullException(nameof(dépôtCabNmpp));
     _taskObserverFactory        = taskObserverFactory ?? throw new ArgumentNullException(nameof(taskObserverFactory));
     _infosOpérationDépôtFactory = infosOpérationDépôtFactory ?? throw new ArgumentNullException(nameof(infosOpérationDépôtFactory));
     _générateurRapportMail      = générateurRapportMail ?? throw new ArgumentNullException(nameof(générateurRapportMail));
     _mailer = mailer;
 }
Esempio n. 4
0
 private IInfosOpérationDépôt TéléchargerCabSiNécessaireCore(IParution p, IDépôtCab dépôtCabExterne,
                                                             IDépôtCabPao dépôtCabPao,
                                                             bool conversionVerstiff, ITaskObserver observer)
 {
     try
     {
         var cabExterne = dépôtCabExterne.Cab(p);
         var cabPao     = dépôtCabPao.Cab(p);
         if (cabExterne != null)
         {
             if (cabPao == null || cabExterne.DateCréation > cabPao.DateCréation)
             {
                 if (cabExterne.EstCompatible)
                 {
                     observer.NotifyInfo(this, $"Téléchargement nécessaire du cab de [{p}] ([{cabExterne.LibelléLong}]).");
                     return(_infosOpérationDépôtFactory.CréerInfosOpérationDépôt(cabExterne,
                                                                                 dépôtCabPao.Déposer(cabExterne,
                                                                                                     conversionVerstiff,
                                                                                                     observer),
                                                                                 cabPao, EtatCabOnline.Téléchargé, p));
                 }
                 return(_infosOpérationDépôtFactory.CréerInfosOpérationDépôt(cabExterne, null, cabPao,
                                                                             EtatCabOnline.Incompatible, p));
             }
             else
             {
                 return(_infosOpérationDépôtFactory.CréerInfosOpérationDépôt(cabExterne, null, cabPao,
                                                                             EtatCabOnline.PasPlusRécent, p));
             }
         }
         else
         {
             return(_infosOpérationDépôtFactory.CréerInfosOpérationDépôt(null, null, cabPao,
                                                                         EtatCabOnline.Indisponible, p));
         }
     }
     catch (Exception exception)
     {
         observer.NotifyWarning(this,
                                $"Echec dans la recherche de Cab pour [{p}] ({exception.DetailedMessage()})");
         return(null);
     }
 }