protected void btnGo_Click(object sender, EventArgs e) { string sOutPath = txtOut.Text; if (!Directory.Exists(sOutPath)) { Directory.CreateDirectory(sOutPath); } try { ICodeLanguage language = CodeLanguageFactory.GetByShortName(languageSelect.SelectedValue); string providerName = (string)Session[PROVIDER_NAME]; if (!String.IsNullOrEmpty(providerName)) { DataProvider provider = DataService.GetInstance(providerName); if (provider != null) { TurboCompiler turboCompiler = new TurboCompiler(); StringBuilder sbTableList = new StringBuilder(); foreach (ListItem item in chkTables.Items) { if (item.Selected) { sbTableList.AppendLine(item.Value); } } foreach (ListItem item in chkTables.Items) { if (item.Selected) { TableSchema.Table t = DataService.GetTableSchema(item.Value, provider.Name, TableType.Table); if (t.ForeignKeys.Count > 0) { //provider.GetManyToManyTables(t, evalTables); } string className = DataService.GetTableSchema(item.Value, providerName, TableType.Table).ClassName; string filePath = Path.Combine(sOutPath, className + language.FileExtension); TurboTemplate classTemplate = CodeService.BuildClassTemplate(item.Value, language, provider); classTemplate.OutputPath = filePath; turboCompiler.AddTemplate(classTemplate); //SubSonic.Sugar.Files.CreateToFile(filePath, usings + CodeService.RunClass(item.Value, providerName, language)); if (chkODS.Checked) { filePath = Path.Combine(sOutPath, className + "Controller" + language.FileExtension); TurboTemplate odsTemplate = CodeService.BuildODSTemplate(item.Value, language, provider); odsTemplate.OutputPath = filePath; turboCompiler.AddTemplate(odsTemplate); //SubSonic.Sugar.Files.CreateToFile(filePath, usings + CodeService.RunODS(item.Value, providerName, language)); } } } //output the Views foreach (ListItem item in chkViews.Items) { if (item.Selected) { string className = DataService.GetTableSchema(item.Value, providerName, TableType.View).ClassName; string filePath = Path.Combine(sOutPath, className + language.FileExtension); TurboTemplate viewTemplate = CodeService.BuildViewTemplate(item.Value, language, provider); viewTemplate.OutputPath = filePath; turboCompiler.AddTemplate(viewTemplate); //SubSonic.Sugar.Files.CreateToFile(filePath, usings + CodeService.RunReadOnly(item.Value, providerName, language)); } } //output the SPs if (chkSP.Checked) { string filePath = Path.Combine(sOutPath, "StoredProcedures" + language.FileExtension); TurboTemplate spTemplate = CodeService.BuildSPTemplate(language, provider); spTemplate.OutputPath = filePath; turboCompiler.AddTemplate(spTemplate); //SubSonic.Sugar.Files.CreateToFile(filePath, usings + CodeService.RunSPs(providerName, language)); } //structs string structPath = Path.Combine(sOutPath, "AllStructs" + language.FileExtension); TurboTemplate structsTemplate = CodeService.BuildStructsTemplate(language, provider); structsTemplate.OutputPath = structPath; turboCompiler.AddTemplate(structsTemplate); //SubSonic.Sugar.Files.CreateToFile(structPath, usings + CodeService.RunStructs(language)); if (turboCompiler.Templates.Count > 0) { turboCompiler.Run(); foreach (TurboTemplate template in turboCompiler.Templates) { Utility.WriteTrace("Writing " + template.TemplateName + " as " + template.OutputPath.Substring(template.OutputPath.LastIndexOf("\\") + 1)); SubSonic.Sugar.Files.CreateToFile(template.OutputPath, template.FinalCode); } } lblResult.Text = "View your files: <a href='file://" + sOutPath + "'>" + sOutPath + "</a>"; } } } catch (Exception x) { lblResult.Text = "Error: " + x.Message; } }
private static void GenerateODSControllers() { //if (DataService.Provider == null) SetProvider(); string fileExt = FileExtension.DOT_CS; string lang = _language; if (FileExtension.IsVB(lang)) { language = new VBCodeLanguage(); fileExt = FileExtension.DOT_VB; } if (DataService.Providers.Count == 0) { Console.WriteLine("There's a problem with the providers - none were loaded and no exceptions where thrown."); } else { //loop the providers, and if there's more than one, output to their own folder //for tidiness foreach (DataProvider provider in DataService.Providers) { //get the table list string[] tables = DataService.GetTableNames(provider.Name); string message = "Generating ODS Controllers for " + provider.Name + " (" + tables.Length + " total)"; if (tables.Length > 200) { message += " that's a serious amount of tables to generate. But we can handle it. You just will need to be patient and go get some coffee while we do this thang..."; } else if (tables.Length > 100) { message += " that's a lot of tables. This could take a few minutes..."; } else if (tables.Length > 50) { message += " - moderate amount of tables... this could take 30 seconds or so..."; } Console.WriteLine(message); string outDir = GetOutSubDir(provider); //foreach (string tbl in tables) //{ // if (IsInList(tbl) && !IsExcluded(tbl)) // { // string className = DataService.GetSchema(tbl, provider.Name, TableType.Table).ClassName; // string code = CodeService.RunODS(tbl, provider.Name, language); // if (!String.IsNullOrEmpty(code)) // { // string outPath = Path.Combine(outDir, className + "Controller" + fileExt); // Console.WriteLine("Generating ODS Controller for " + className + " to " + outPath); // SubSonic.Sugar.Files.CreateToFile(outPath, usings + code); // } // } //} foreach (string tbl in tables) { if (IsInList(tbl) && !IsExcluded(tbl) && CodeService.ShouldGenerate(tbl, provider.Name)) { string className = DataService.GetSchema(tbl, provider.Name, TableType.Table).ClassName; TurboTemplate tt = CodeService.BuildODSTemplate(tbl, language, provider); tt.OutputPath = Path.Combine(outDir, className + "Controller" + fileExt); turboCompiler.AddTemplate(tt); } } } Console.WriteLine("Finished"); } }