private void ConfrontationDonneesEtProfil(String testAExecuter, String[] erreursAttendues) { StreamWriter streamWriter = null; DataControlConfig control = configLoader(testAExecuter); String traceFile = control.traceFile; String profileFile = control.profileFile; String dataFile = control.dataFile; 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"); } BusinessDataController bc = new BusinessDataController(); bc.setTracesWriter(streamWriter); StringCollection erreurs = bc.controlMatchingBetweenDataAndProfile(dataFile, profileFile); foreach (String err in erreurs) { streamWriter.WriteLine(err); } streamWriter.Flush(); int erreur = 0; if (erreurs != null && erreurs.Count != 0) { foreach (String str in erreurs) { if (erreursAttendues.Length > erreur) StringAssert.StartsWith(str, erreursAttendues[erreur], "Comparaison des erreurs"); erreur++; } } Assert.AreEqual(erreursAttendues.Length, erreurs.Count, "Le nombre d'erreurs attendues et obtenues diffère"); }
static int Main(string[] args) { System.IO.StreamWriter streamWriter = null; String jobName; if (args.Length < 1) { System.Console.WriteLine("Syntaxe attendue : BusinessDataControllerLauncher 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); } DataControlConfig datacontrol = config.getDatacontrolConfig(jobName); if (datacontrol == null) { System.Console.WriteLine("Aucun job 'data-control: " + jobName + "' trouvé dans le fichier job.config. Vérifiez la syntaxe ou créez une tâche."); System.Environment.Exit(-1); } System.Console.WriteLine("Contrôle métier du job '" + datacontrol.nomJob + "' : '" + datacontrol.dataFile + "' avec le profil '" + datacontrol.profileFile + "'"); Action<Exception, String> eh = (ex, str) => { Console.WriteLine(ex.GetType().Name + " while trying to use trace file: " + datacontrol.traceFile + ". Complementary message: " + str); System.Environment.Exit(-1); }; try { streamWriter = new System.IO.StreamWriter(datacontrol.traceFile); } catch (System.IO.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"); } BusinessDataController bdc = new BusinessDataController(); bdc.setTracesWriter(streamWriter); StringCollection errors = bdc.controlDataFormat(datacontrol.dataFile); StringCollection erreursCorrespondance = bdc.controlMatchingBetweenDataAndProfile(datacontrol.dataFile, datacontrol.profileFile); int nbErreurs = 0; if (errors.Count > 0) nbErreurs += errors.Count; if (erreursCorrespondance != null && erreursCorrespondance.Count != 0) nbErreurs += erreursCorrespondance.Count; if (nbErreurs > 0) System.Console.WriteLine("\nDes erreurs ont été rencontrées\n"); if (errors.Count > 0) { System.Console.WriteLine("\nErreurs dans les données :\n"); foreach (String str in errors) { System.Console.WriteLine(str); streamWriter.WriteLine(str); } System.Console.WriteLine("\n"); streamWriter.WriteLine("\n"); } if (erreursCorrespondance != null && erreursCorrespondance.Count != 0) { System.Console.WriteLine("\nErreurs de correspondance entre les données et le profil :\n"); foreach (String err in erreursCorrespondance) { Console.WriteLine(err); streamWriter.WriteLine(err); } System.Console.WriteLine("\n"); streamWriter.WriteLine("\n"); } streamWriter.Flush(); return nbErreurs; }