static int Main(string[] args) { StreamWriter streamWriter = null; String jobName; if (args.Length < 1) { System.Console.WriteLine("Syntaxe attendue : BusinessDataController nom-job-controle"); System.Console.WriteLine("nom-job-controle est une section dans le fichier job.config"); System.Console.WriteLine("Une section a la forme :"); System.Console.WriteLine("[data-control : nom-job-controle]"); System.Console.WriteLine(" trace = chemin/vers/fichier-de-trace.txt"); System.Console.WriteLine(" profil = chemin/vers/fichier-de-profil.rng"); System.Console.WriteLine(" data = chemin/vers/fichier-de-donnees-metier.txt"); System.Console.WriteLine(""); 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; }
protected void executeGenerator(String jobName, String sedaVersion) { Action<Exception, String> eh = (ex, str) => { Console.WriteLine(ex.GetType().Name + " while trying to use trace file: " + traceFile + ". Complementary message: " + str); throw ex; }; Action<Exception> ehb = (ex) => { streamWriter.WriteLine("Erreur lors de la préparation du bordereau pour le test '" + fichier_bordereau + "' " + ex.GetType().Name); }; 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); Assert.Fail(erreur); } GeneratorConfig control = config.getGeneratorConfig(jobName); accordVersement = control.accordVersement; fichier_metier = control.dataFile; path_datafiles = control.repDocuments; fichier_bordereau = control.bordereauFile; traceFile = control.traceFile; baseURI = control.baseURI; 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"); } 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 + "' 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_metier); } 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 { informationsDatabase = ConfigurationManager.AppSettings["databaseConnexion"]; ssg.prepareInformationsWithDatabase(informationsDatabase, baseURI, accordVersement); } ssg.prepareArchiveDocumentsWithFile(path_datafiles, fichier_metier); ssg.generateSummaryFile(fichier_bordereau); ssg.close(); streamWriter.WriteLine("\n---------- ERREURS ----------\n"); StringCollection dumpErrors = ssg.getErrorsList(); if (dumpErrors != null && dumpErrors.Count != 0) { foreach (String err in dumpErrors) { streamWriter.WriteLine(err); } } streamWriter.WriteLine("\n---------- ^^^^^^^ ----------\n"); docBordereau = new XmlDocument(); try { using (StreamReader sr = new StreamReader(fichier_bordereau)) { String line = sr.ReadToEnd(); //Console.WriteLine(line); docBordereau.LoadXml(line); //Instantiate an XmlNamespaceManager object. docInXmlnsManager = new System.Xml.XmlNamespaceManager(docBordereau.NameTable); // Add the namespaces used in xml to the XmlNamespaceManager. // docInXmlnsManager.AddNamespace(String.Empty, sedaVersion.Equals("1.0") ? namespaceSEDA10 : namespaceSEDA02); docInXmlnsManager.AddNamespace("s", sedaVersion.Equals("1.0") ? namespaceSEDA10 : namespaceSEDA02); } } catch (ArgumentException e) { ehb(e); } catch (DirectoryNotFoundException e) { ehb(e); } catch (FileNotFoundException e) { ehb(e); } catch (OutOfMemoryException e) { ehb(e); } catch (IOException e) { ehb(e); } streamWriter.Close(); }