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