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