Ejemplo n.º 1
0
        public string produireBordereauVersement(string repLog, string repDocuments, string baseURI, string accordVersement, string documentsFile, string bordereauFile)
        {
            String       traceFile    = buildTraceFileName(repLog, "PBV");
            StreamWriter streamWriter = null;

            Action <Exception, String> eh = (ex, str) => {
                Console.WriteLine(ex.GetType().Name + " while trying to use trace file: " + traceFile + ". Complementary message: " + str);
                throw ex;
            };

            try {
                streamWriter = new StreamWriter(traceFile);
            } catch (IOException e) { eh(e, "Mauvaise syntaxe de nom de fichier"); } catch (UnauthorizedAccessException e) { eh(e, "Droits d'accès à corriger"); } catch (System.Security.SecurityException e) { eh(e, "Droits d'accès à corriger"); }

            streamWriter.WriteLineFlush("Prepare to 'ConfigurationManager.AppSettings[\"databaseConnexion\"]'");
            String informationsDatabase = ConfigurationManager.AppSettings["databaseConnexion"];

            streamWriter.WriteLineFlush("informationsDatabase='" + informationsDatabase + "'");

            SedaSummaryGenerator.SedaSummaryGenerator ssg = new SedaSummaryRngGenerator();
            ssg.setTracesWriter(streamWriter);

            SimpleConfig config = new SimpleConfig();
            String       erreurFichierConfig = config.loadFile("../job.config");

            streamWriter.WriteLineFlush("INFORMATION : retour lecture ../config '" + erreurFichierConfig + "'");
            if (erreurFichierConfig != String.Empty)
            {
                erreurFichierConfig = config.loadFile("../../job.config");
                streamWriter.WriteLineFlush("INFORMATION : retour lecture ../../config '" + erreurFichierConfig + "'");
            }

            // On a trouvé un fichier de config pour remplacer la base de données
            if (erreurFichierConfig == String.Empty && config.hasAccordVersementConfig())
            {
                AccordVersementConfig accordVersementConfig = config.getAccordVersementConfig(accordVersement, baseURI);
                if (accordVersementConfig == null)
                {
                    streamWriter.WriteLineFlush("ATTENTION : Impossible de trouver l'accord de versement '" + accordVersement + "' dans la configuration");
                }
                else
                {
                    if (accordVersementConfig.SAE_ProfilArchivage.Length == 0)
                    {
                        streamWriter.WriteLineFlush("ATTENTION : Le profil d'archivage n'a pas de nom de fichier");
                    }
                }

                String dataSha1 = String.Empty;
                try {
                    dataSha1 = Utils.computeSha1Hash(documentsFile);
                } catch (IOException e) {
                    // Ignorer les exceptions, car si le fichier de données n'est pas accessible,
                    // une exception sera générée plus tard avec un contexte plus explicatif
                }

                ssg.prepareInformationsWithConfigFile(config, baseURI, accordVersement, dataSha1);
            }
            else
            {
                ssg.prepareInformationsWithDatabase(informationsDatabase, baseURI, accordVersement);
            }

            ssg.prepareArchiveDocumentsWithFile(repDocuments, documentsFile);

            ssg.generateSummaryFile(bordereauFile);

            ssg.close();
            streamWriter.Close();

            StringCollection errors   = ssg.getErrorsList();
            StringBuilder    Response = new StringBuilder();

            if (errors != null && errors.Count != 0)
            {
                Console.WriteLine("Il y a eu des erreurs.");
                streamWriter.WriteLine("Il y a eu des erreurs.");
                foreach (String str in errors)
                {
                    streamWriter.WriteLine(str);
                    Console.WriteLine(str);
                    Response.Append(str);
                }
            }
            return(Response.ToString());
        }
Ejemplo n.º 2
0
        static int Main(string[] args)
        {
            StreamWriter streamWriter = null;

            String jobName;

            if (args.Length < 1)
            {
                System.Console.WriteLine("Syntaxe attendue : SedaSummaryGeneratorLauncher nom-job-generation");
                System.Console.WriteLine("nom-job-generation est une section dans le fichier job.config");
                System.Console.WriteLine("Une section de génération de bordereau a la forme :");
                System.Console.WriteLine("[data-control : nom-job-controle]");
                System.Console.WriteLine("  trace = chemin/vers/fichier-de-trace.txt");
                System.Console.WriteLine("  accord = nom-accord-versement");
                System.Console.WriteLine("  baseURI = chemin/vers/repertoire-des-documents");
                System.Console.WriteLine("  data = chemin/vers/fichier-de-donnees-metier.txt");
                System.Console.WriteLine("  bordereau = chemin/vers/bordereau-a-generer.xml");
                System.Console.WriteLine("");
                System.Console.WriteLine("Où nom-accord-versemnt et baseURI renvoient vers une section accord-versement/SAE_Serveur");
                System.Console.WriteLine("[accord-versement : nom-accord-versement]");
                System.Console.WriteLine("	SAE_Serveur = http://test");
                System.Console.WriteLine("	TransferIdPrefix = PREFIX_");
                System.Console.WriteLine("	SAE_ProfilArchivage = chemin-vers-fichier");
                System.Console.WriteLine("	TransferringAgencyId = TA_ID");
                System.Console.WriteLine("	TransferringAgencyName = TA_NAME");
                System.Console.WriteLine("	TransferringAgencyDesc = TA_DESC");
                System.Console.WriteLine("	ArchivalAgencyId = AA_ID");
                System.Console.WriteLine("	ArchivalAgencyName = AA_NAME");
                System.Console.WriteLine("	ArchivalAgencyDesc = AA_DESC");
                System.Console.WriteLine("Aucun job demandé, le premier job sera exécuté");
                System.Console.WriteLine("");
                jobName = String.Empty;
            }
            else
            {
                jobName = args[0];
            }

            SimpleConfig config = new SimpleConfig();
            String       erreur = config.loadFile("./job.config");

            if (erreur != String.Empty) // on tient compte du fait qu'en environnement de développement, l'exe est dans bin/Release
            {
                erreur = config.loadFile("../../job.config");
            }

            if (erreur != String.Empty)
            {
                System.Console.WriteLine(erreur);
                System.Environment.Exit(-1);
            }

            GeneratorConfig generatorJob = config.getGeneratorConfig(jobName);

            if (generatorJob == null)
            {
                System.Console.WriteLine("Aucun job 'generator: " + jobName + "' trouvé dans le fichier job.config. Vérifiez la syntaxe ou créez une tâche.");
                System.Environment.Exit(-1);
            }

            System.Console.WriteLine("Génération bordereau du job '" + generatorJob.nomJob + "' : '" + generatorJob.dataFile + "' avec l'accord '" + generatorJob.accordVersement + "'");

            String accordVersement      = generatorJob.accordVersement;
            String baseURI              = generatorJob.baseURI;
            String fichier_donnees      = generatorJob.dataFile;
            String repertoire_documents = generatorJob.repDocuments;
            String fichier_bordereau    = generatorJob.bordereauFile;
            String traceFile            = generatorJob.traceFile;

            String informationsDatabase = ConfigurationManager.AppSettings["databaseConnexion"];

            Action <Exception, String> eh = (ex, str) => {
                Console.WriteLine(ex.GetType().Name + " while trying to use trace file: " + traceFile + ". Complementary message: " + str);
                System.Environment.Exit(-1);
            };

            try {
                streamWriter = new StreamWriter(traceFile);
            } catch (IOException e) { eh(e, "Mauvaise syntaxe de nom de fichier"); } catch (UnauthorizedAccessException e) { eh(e, "Droits d'accès à corriger"); } catch (System.Security.SecurityException e) { eh(e, "Droits d'accès à corriger"); }

            StringCollection errors;

            SedaSummaryGenerator.SedaSummaryGenerator ssg = new SedaSummaryRngGenerator();
            ssg.setTracesWriter(streamWriter);

            if (config.hasAccordVersementConfig())
            {
                AccordVersementConfig accordVersementConfig = config.getAccordVersementConfig(accordVersement, baseURI);
                if (accordVersementConfig == null)
                {
                    Console.WriteLine("ATTENTION : Impossible de trouver l'accord de versement '" + accordVersement + "' pour le serveur '" + baseURI + "' dans la configuration");
                }
                else
                {
                    if (accordVersementConfig.SAE_ProfilArchivage.Length == 0)
                    {
                        Console.WriteLine("ATTENTION : Le profil d'archivage n'a pas de nom de fichier");
                    }
                }

                String dataSha1 = String.Empty;
                try {
                    dataSha1 = Utils.computeSha1Hash(fichier_donnees);
                } catch (IOException e) {
                    // Ignorer les exceptions, car si le fichier de données n'est pas accessible,
                    // une exception sera générée plus tard avec un contexte plus explicatif
                }

                ssg.prepareInformationsWithConfigFile(config, baseURI, accordVersement, dataSha1);
            }
            else
            {
                ssg.prepareInformationsWithDatabase(informationsDatabase, baseURI, accordVersement);
            }

            ssg.prepareArchiveDocumentsWithFile(repertoire_documents, fichier_donnees);

            ssg.generateSummaryFile(fichier_bordereau);

            ssg.close();
            streamWriter.Close();

            errors = ssg.getErrorsList();

            if (errors != null && errors.Count != 0)
            {
                Console.WriteLine("Il y a eu des erreurs.");
                foreach (String str in errors)
                {
                    Console.WriteLine(str);
                }
            }
            Console.WriteLine("Fin de la liste des erreurs du programme de génération du bordereau");

            return(errors.Count);
        }