/// <summary> /// Find and replace a line in a text file. /// </summary> internal void FileReplaceLine(string fileName, string find, string replace) { string text = UtilFramework.FileLoad(fileName); text = UtilFramework.ReplaceLine(text, find, replace); UtilFramework.FileSave(fileName, text); }
/// <summary> /// Script to generate CSharp code. Returns true, if succsesful. /// </summary> /// <param name="isFrameworkDb">If true, generate CSharp code for Framework library (internal use only) otherwise generate code for Application.</param> public static bool Run(bool isFrameworkDb, AppCli appCli) { bool isSuccessful = true; MetaSql metaSql = new MetaSql(isFrameworkDb, appCli); MetaCSharp metaCSharp = new MetaCSharp(metaSql); // Generate CSharp classes from database schema and save (*.cs) files. new CSharpGenerate(metaCSharp).Run(isFrameworkDb, out string cSharp); if (isFrameworkDb == false) { UtilFramework.FileSave(UtilFramework.FolderName + "Application.Database/Database/Database.cs", cSharp); } else { UtilFramework.FileSave(UtilFramework.FolderName + "Framework/Framework/Database/Database.cs", cSharp); } UtilCli.ConsoleWriteLineColor("Generate CSharp classes from database schema and write (*.cs) files succsesful!", ConsoleColor.Green); // Read Integrate data from database and save (*.cs) files. GenerateIntegrateResult generateIntegrateResult = null; try { generateIntegrateResult = appCli.CommandGenerateIntegrateInternal(); } catch (SqlException exception) { isSuccessful = false; string message = string.Format("Read Integrate data from database failed! This can happen after an sql schema change. Try to run generate script again! ({0})", exception.Message); UtilCli.ConsoleWriteLineColor(message, ConsoleColor.Red); } if (generateIntegrateResult != null) { Run(generateIntegrateResult); new GenerateCSharpIntegrate().Run(out string cSharpCli, isFrameworkDb, isApplication: false, integrateList: generateIntegrateResult.Result); new GenerateCSharpIntegrate().Run(out string cSharpApplication, isFrameworkDb, isApplication: true, integrateList: generateIntegrateResult.Result); if (isFrameworkDb == false) { UtilFramework.FileSave(UtilFramework.FolderName + "Application.Cli/Database/DatabaseIntegrate.cs", cSharpCli); UtilFramework.FileSave(UtilFramework.FolderName + "Application.Database/Database/DatabaseIntegrate.cs", cSharpApplication); } else { UtilFramework.FileSave(UtilFramework.FolderName + "Framework/Framework.Cli/Database/DatabaseIntegrate.cs", cSharpCli); UtilFramework.FileSave(UtilFramework.FolderName + "Framework/Framework/Database/DatabaseIntegrate.cs", cSharpApplication); } UtilCli.ConsoleWriteLineColor("Generate CSharp code for Integrate data and write to (*.cs) files successful!", ConsoleColor.Green); } return(isSuccessful); }
/// <summary> /// Script to generate CSharp code. Returns true, if succsesful. /// </summary> /// <param name="isFrameworkDb">If true, generate CSharp code for Framework library (internal use only) otherwise generate code for Application.</param> public static bool Run(bool isFrameworkDb, AppCli appCli) { bool isSuccessful = true; MetaSql metaSql = new MetaSql(isFrameworkDb); // Custom sql table and field filtering for code generation. var list = metaSql.List; var typeRowCalculatedList = new List <Type>(); // Calculated row. if (isFrameworkDb == false) { // Call method CommandGenerateFilter(); Run(ref list, ref typeRowCalculatedList, appCli); } MetaCSharp metaCSharp = new MetaCSharp(list); // Generate CSharp classes from database schema and save (*.cs) files. UtilCli.ConsoleWriteLineColor("Generate CSharp classes from database schema and write (*.cs) files", ConsoleColor.Green); new CSharpGenerate(metaCSharp).Run(isFrameworkDb, out string cSharp); if (isFrameworkDb == false) { UtilFramework.FileSave(UtilFramework.FolderName + "Application.Database/Database/Database.cs", cSharp); } else { UtilFramework.FileSave(UtilFramework.FolderName + "Framework/Framework/Database/Database.cs", cSharp); } UtilCli.ConsoleWriteLineColor("Generate CSharp classes from database schema and write (*.cs) files succsesful!", ConsoleColor.Green); // Read Integrate data from database and save (*.cs) files. UtilCli.ConsoleWriteLineColor("Generate CSharp code for Integrate data and write to (*.cs) files", ConsoleColor.Green); GenerateIntegrateResult generateIntegrateResult = null; try { // TableNameCSharp defined in method AppCli.CommandGenerateFilter(); List <string> tableNameCSharpApplicationFilterList = null; if (isFrameworkDb == false) { tableNameCSharpApplicationFilterList = metaCSharp.List.GroupBy(item => item.SchemaNameCSharp + "." + item.TableNameCSharp).Select(item => item.Key).ToList(); var tableNameCSharpCalculatedList = typeRowCalculatedList.Select(item => UtilDalType.TypeRowToTableNameCSharp(item)).ToList(); tableNameCSharpApplicationFilterList.AddRange(tableNameCSharpCalculatedList); } generateIntegrateResult = appCli.CommandGenerateIntegrateInternal(isDeployDb: false, tableNameCSharpApplicationFilterList); } catch (SqlException exception) { isSuccessful = false; string message = string.Format("Read Integrate data from database failed! This can happen after an sql schema change. Try to run generate script again! ({0})", exception.Message); UtilCli.ConsoleWriteLineColor(message, ConsoleColor.Red); } if (generateIntegrateResult != null) { Run(generateIntegrateResult); new GenerateCSharpIntegrate().Run(out string cSharpCli, isFrameworkDb, isApplication: false, integrateList: generateIntegrateResult.Result); new GenerateCSharpIntegrate().Run(out string cSharpApplication, isFrameworkDb, isApplication: true, integrateList: generateIntegrateResult.Result); if (isFrameworkDb == false) { UtilFramework.FileSave(UtilFramework.FolderName + "Application.Cli/Database/DatabaseIntegrate.cs", cSharpCli); UtilFramework.FileSave(UtilFramework.FolderName + "Application.Database/Database/DatabaseIntegrate.cs", cSharpApplication); } else { UtilFramework.FileSave(UtilFramework.FolderName + "Framework/Framework.Cli/Database/DatabaseIntegrate.cs", cSharpCli); UtilFramework.FileSave(UtilFramework.FolderName + "Framework/Framework/Database/DatabaseIntegrate.cs", cSharpApplication); } UtilCli.ConsoleWriteLineColor("Generate CSharp code for Integrate data and write to (*.cs) files successful!", ConsoleColor.Green); } return(isSuccessful); }