Exemple #1
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);
     }
 }
Exemple #2
0
        public virtual ICab Déposer(ICab cab, bool créerFichierTiff, ITaskObserver observer)
        {
            if (cab == null)
            {
                throw new ArgumentNullException(nameof(cab));
            }
            if (observer == null)
            {
                throw new ArgumentNullException(nameof(observer));
            }

            observer.NotifyInfo(this,
                                $"Début du téléchargement du Cab [{cab}] pour [{cab.ParutionCible}] depuis [{cab.Dépôt}] vers [{this}]");

            if (cab.Dépôt == this)
            {
                observer.NotifyWarning(this,
                                       $"Tentative de téléchargement d'un Cab vers lui-même : [{cab.Url}], opération ignorée");
                return(cab);
            }

            string cheminDossierCab = CheminDossierCab(cab);

            if (String.IsNullOrWhiteSpace(cheminDossierCab))
            {
                throw new Exception(
                          $"Impossible de trouver le dossier [{cheminDossierCab}] pour y déposer le Cab [{cab}]");
            }

            string nomFichierCab    = NomFichierCab(cab);
            string cheminFichierCab = Path.Combine(cheminDossierCab, nomFichierCab);

            string nomFichierTiff    = Path.GetFileNameWithoutExtension(nomFichierCab) + ".tif";
            string cheminFichierTiff = Path.Combine(cheminDossierCab, nomFichierTiff);

            EffacerFichiersCab(cab, cheminDossierCab, observer);

            TéléchargerCab(cab, cheminFichierCab, observer);

            Task conversionTask;

            if (créerFichierTiff)
            {
                conversionTask = ConvertirVersTiffAsync(cheminFichierCab, cheminFichierTiff, observer);
            }
            else
            {
                conversionTask = null;
            }


            var newCab = IntégrerCabTéléchargé(cab, cheminFichierCab, observer);

            if (conversionTask != null)
            {
                try
                {
                    conversionTask.Wait();
                }
                catch (Exception exception)
                {
                    observer.NotifyWarning(this,
                                           $"Echec de la conversion en Tiff de [{cheminFichierCab}] vers [{cheminFichierTiff}] : {exception.DetailedMessage()}");
                }
            }

            observer.NotifyInfo(this,
                                $"Fin du téléchargement du Cab [{cab}] pour [{cab.ParutionCible}] depuis [{cab.Dépôt}] vers [{this}]");
            return(newCab);
        }