/// <summary> /// Supprime le fichier s'il existe déja. /// </summary> /// <param name="outputFileName">Nom du fichier.</param> private static void DeleteFileIfExists(string outputFileName) { if (File.Exists(outputFileName)) { TfsManager.CheckOut(outputFileName); try { File.Delete(outputFileName); } catch (IOException e) { Console.Error.WriteLine("Le fichier " + outputFileName + " existe déja, erreur lors de la suppression : " + e.Message); Environment.Exit(-1); } } }
/// <summary> /// Génère le script SQL. /// </summary> /// <param name="modelRootList">Liste des tous les modeles OOM analysés.</param> /// <param name="outputFileNameCrebas">Nom du fichier de creation des tables en sortie.</param> /// <param name="outputFileNameUK">Nom du fichier de creation des clefs uniques.</param> /// <param name="outputFileNameIndex">Nom du fichier de création des index et fk en sortie.</param>/// <param name="outputFileNameType">Nom du ficheir de création des types.</param> public void GenerateSchemaScript(ICollection <ModelRoot> modelRootList, string outputFileNameCrebas, string outputFileNameUK, string outputFileNameIndex, string outputFileNameType) { if (modelRootList == null) { throw new ArgumentNullException("modelRootList"); } Console.Out.WriteLine("Generating schema script"); DeleteFileIfExists(outputFileNameCrebas); DeleteFileIfExists(outputFileNameIndex); DeleteFileIfExists(outputFileNameType); List <List <ModelProperty> > fkList = new List <List <ModelProperty> >(); TfsManager.CheckOut(outputFileNameCrebas); TfsManager.CheckOut(outputFileNameUK); using (StreamWriter writerCrebas = File.CreateText(outputFileNameCrebas), writerUk = File.CreateText(outputFileNameUK), writerType = File.CreateText(outputFileNameType)) { writerCrebas.WriteLine("-- =========================================================================================== "); writerCrebas.WriteLine("-- Application Name : Kinetix "); writerCrebas.WriteLine("-- Script Name : "+ outputFileNameCrebas); writerCrebas.WriteLine("-- Description : Script de création des tables."); writerCrebas.WriteLine("-- =========================================================================================== "); writerUk.WriteLine("-- =========================================================================================== "); writerUk.WriteLine("-- Application Name : Kinetix"); writerUk.WriteLine("-- Script Name : "+ outputFileNameUK); writerUk.WriteLine("-- Description : Script de création des indexs uniques."); writerUk.WriteLine("-- =========================================================================================== "); writerType.WriteLine("-- =========================================================================================== "); writerType.WriteLine("-- Application Name : Kinetix "); writerType.WriteLine("-- Script Name : "+ outputFileNameType); writerType.WriteLine("-- Description : Script de création des types. "); writerType.WriteLine("-- =========================================================================================== "); foreach (ModelRoot modelRoot in modelRootList) { List <ModelProperty> fkProperties = new List <ModelProperty>(); foreach (string nsKey in modelRoot.Namespaces.Keys) { foreach (ModelClass classe in modelRoot.Namespaces[nsKey].ClassList) { if (classe.DataContract.IsPersistent) { fkProperties.AddRange(WriteTableDeclaration(classe, writerCrebas, writerUk, writerType)); } } } fkList.Add(fkProperties); } } using (StreamWriter writer = File.CreateText(outputFileNameIndex)) { writer.WriteLine("-- =========================================================================================== "); writer.WriteLine("-- Application Name : Kinetix "); writer.WriteLine("-- Script Name : "+ outputFileNameIndex); writer.WriteLine("-- Description : Script de création des indexes et des clef étrangères. "); writer.WriteLine("-- =========================================================================================== "); foreach (List <ModelProperty> fkProperties in fkList) { foreach (ModelProperty fkProperty in fkProperties) { GenerateIndexForeignKey(writer, fkProperty); GenerateConstraintForeignKey(fkProperty, writer); } } } }