示例#1
0
 public InfosOpérationDépôt(ICab cabSource, ICab cabDestination, ICab cabExistant, EtatCabOnline étatCabOnline, IParution parutionCible)
 {
     _cabSource      = cabSource;
     _parutionCible  = parutionCible;
     _étatCabOnline  = étatCabOnline;
     _cabDestination = cabDestination;
     _cabExistant    = cabExistant;
 }
示例#2
0
        public virtual ICab Cab(IParution parution)
        {
            var donnéesCabParution = from dc in DonnéesCab()
                                     where (dc.Codif == parution.Codif) && (dc.Numéro == parution.Numéro)
                                     orderby dc.DateCréation descending
                                     select dc;

            return(donnéesCabParution.FirstOrDefault());
        }
示例#3
0
 public ICab CréerCab(IDépôtCab dépôtCab, string url, TypeEditeur éditeur,
                      TypeDistributeur distributeur, string codif, int?numéro, decimal?prix,
                      TypePériodicité périodicité, TypeQualificationRéseau qualif, DateTime dateCréation,
                      IParution parutionCible)
 {
     return(_factoryFunc(dépôtCab, url, _dépôtParutions.Editeur(éditeur),
                         _dépôtParutions.Distributeur(distributeur), codif, numéro, prix,
                         _dépôtParutions.Périodicité(périodicité),
                         _dépôtParutions.QualificationRéseau(qualif), dateCréation, parutionCible));
 }
示例#4
0
 public InfosTraitementParution(IParution parution, ICab cab, IInfosOpérationDépôt infosOpérationDépôt)
 {
     Parution            = parution ?? throw new ArgumentNullException(nameof(parution));
     Cab                 = cab;
     InfosOpérationDépôt = infosOpérationDépôt;
     if (cab != null)
     {
         _anomalies = cab.Anomalies.ToDictionary(a => a.Type);
     }
     else
     {
         _anomalies = new Dictionary <TypeAnomalieCab, IAnomalieCab>();
     }
 }
示例#5
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);
     }
 }
示例#6
0
        private static FileInfo ExtraireCabFileInfo(string dossier, IParution parution)
        {
            try
            {
                string cheminCab = Path.Combine(dossier, _NomDossierCab);
                if (!Directory.Exists(cheminCab))
                {
                    return(null);
                }

                var di          = new DirectoryInfo(cheminCab);
                var infoFichier = (from fileInfo in di.GetFiles("*.eps", SearchOption.TopDirectoryOnly)
                                   where fileInfo.Name.StartsWith(parution.CodeProduit)
                                   orderby fileInfo.CreationTime descending
                                   select fileInfo).FirstOrDefault();

                return(infoFichier);
            }
            catch (Exception)
            {
                // TODO: tracer l'exception
                return(null);
            }
        }
示例#7
0
 public override ICab Cab(IParution parution)
 {
     lock (_listeDonnéesCab)
         return(base.Cab(parution));
 }
示例#8
0
        private ICab CréerCab(FileInfo fiCab, IParution parutionCible)
        {
            try
            {
                string sDonnées = Path.GetFileNameWithoutExtension(fiCab.Name);
                if (sDonnées == null)
                {
                    return(null);
                }

                if (sDonnées[4] == '_')
                {
                    // Code de type Bdi migré
                    sDonnées = $"{sDonnées.Substring(0, 4)}#{sDonnées.Substring(5)}";
                }

                var données = sDonnées.Replace('-', '_').Split('_');
                if (données.Length < 6)
                {
                    return(null);
                }

                string codeProduit = données[0];
                if (codeProduit[4] == '#')
                {
                    codeProduit = $"{codeProduit.Substring(0, 4)}_{codeProduit.Substring(5)}";
                }
                string  sDistributeur  = données[1];
                string  codif          = données[2];
                string  sPrix          = données[3].Replace('.', ',');
                string  sPériodicité   = données[4];
                string  sQualification = données[5];
                decimal prix           = decimal.Parse(sPrix);
                string  sNuméro;
                if (codeProduit.Length == 6)
                {
                    sNuméro = codeProduit.Substring(4);
                }
                else
                {
                    sNuméro = codeProduit.Substring(5);
                }
                int numéro = int.Parse(sNuméro);

                var distributeur        = DistributeurPaoVersTypeDistributeur(sDistributeur);
                var périodicité         = PériodicitéPaoVersTypePériodicité(sPériodicité);
                var qualificationRéseau = QualificationPaoVersTypeQualificationRéseau(sQualification);

                return(CabFactory.CréerCab(
                           this,
                           fiCab.FullName,
                           TypeEditeur.Inconnu,
                           distributeur,
                           codif,
                           numéro,
                           prix,
                           périodicité,
                           qualificationRéseau,
                           fiCab.CreationTime,
                           parutionCible));
            }
            catch (Exception)
            {
                // TOTO: tracer l'exception
                return(null);
            }
        }
示例#9
0
 public IInfosOpérationDépôt CréerInfosOpérationDépôt(ICab cabSource, ICab cabDestination, ICab cabExistant, EtatCabOnline étatCabOnline, IParution parutionCible)
 {
     return(_factoryFunc(cabSource, cabDestination, cabExistant, étatCabOnline, parutionCible));
 }
示例#10
0
 public Cab(IComparateurCabParution comparateurCabParution, IDépôtCab dépôtCab, string url, IEditeur éditeur, IDistributeur distributeur, string codif, int?numéro, decimal?prix, IPériodicité périodicité, IQualificationRéseau qualif, DateTime dateCréation, IParution parutionCible)
 {
     _comparateurCabParution = comparateurCabParution ?? throw new ArgumentNullException(nameof(comparateurCabParution));
     _dépôtCab     = dépôtCab ?? throw new ArgumentNullException(nameof(dépôtCab));
     Url           = url;
     Editeur       = éditeur ?? throw new ArgumentNullException(nameof(éditeur));
     Distributeur  = distributeur ?? throw new ArgumentNullException(nameof(distributeur));
     Codif         = codif;
     Numéro        = numéro;
     Prix          = prix;
     Périodicité   = périodicité ?? throw new ArgumentNullException(nameof(périodicité));
     Qualif        = qualif ?? throw new ArgumentNullException(nameof(qualif));
     DateCréation  = dateCréation;
     ParutionCible = parutionCible ?? throw new ArgumentNullException(nameof(parutionCible));
 }