/// <summary> /// Builds the structs template. /// </summary> /// <param name="language">The language.</param> /// <param name="provider">The provider.</param> /// <returns></returns> public static TurboTemplate BuildStructsTemplate(ICodeLanguage language, DataProvider provider) { DataService.LoadProviders(); List <Replacement> list = new List <Replacement>(); return(PrepareTemplate("Structs Class", TemplateType.Structs, list, language, provider)); }
/// <summary> /// Builds the SP template. /// </summary> /// <param name="language">The language.</param> /// <param name="provider">The provider.</param> /// <returns></returns> public static TurboTemplate BuildSPTemplate(ICodeLanguage language, DataProvider provider) { DataService.LoadProviders(); List <Replacement> list = new List <Replacement>(); list.Add(new Replacement(ReplacementVariable.Provider, provider.Name)); return(PrepareTemplate("Stored Procedure Class - " + provider.Name, TemplateType.SP, list, language, provider)); }
/// <summary> /// Builds the Enum template. /// </summary> /// <param name="language">The language.</param> /// <param name="provider">The provider.</param> /// <returns></returns> public static TurboTemplate BuildEnumTemplate(ICodeLanguage language, DataProvider provider) { DataService.LoadProviders(); List <Replacement> list = new List <Replacement> { new Replacement(ReplacementVariable.Provider, provider.Name) }; return(PrepareTemplate("Enums - " + provider.Name, TemplateType.Enum, list, language, provider)); }
/// <summary> /// Builds the view template. /// </summary> /// <param name="tableName">Name of the table.</param> /// <param name="language">The language.</param> /// <param name="provider">The provider.</param> /// <returns></returns> public static TurboTemplate BuildViewTemplate(string tableName, ICodeLanguage language, DataProvider provider) { DataService.LoadProviders(); if (ShouldGenerate(tableName, provider.Name)) { List <Replacement> list = new List <Replacement>(); list.Add(new Replacement(ReplacementVariable.View, tableName)); list.Add(new Replacement(ReplacementVariable.Provider, provider.Name)); return(PrepareTemplate(String.Concat("View - ", provider.Name, ": ", tableName), TemplateType.ReadOnly, list, language, provider)); } Utility.WriteTrace(String.Format("View {0} is excluded from generation", tableName)); return(null); }
/// <summary> /// Builds the ODS template. /// </summary> /// <param name="tableName">Name of the table.</param> /// <param name="language">The language.</param> /// <param name="provider">The provider.</param> /// <returns></returns> public static TurboTemplate BuildODSTemplate(string tableName, ICodeLanguage language, DataProvider provider) { DataService.LoadProviders(); if (ShouldGenerate(tableName, provider.Name) && provider.GenerateODSControllers) { List <Replacement> list = new List <Replacement> { new Replacement(ReplacementVariable.Table, tableName), new Replacement(ReplacementVariable.Provider, provider.Name) }; return(PrepareTemplate(String.Concat("ODS Controller - ", provider.Name, ": ", tableName), TemplateType.ODSController, list, language, provider)); } Utility.WriteTrace(String.Format("{0} is excluded from generation", tableName)); return(null); }
/// <summary> /// Generates source code for the virtual path of the build provider, and adds the source code to a specified assembly builder. /// </summary> /// <param name="assemblyBuilder">The assembly builder that references the source code generated by the build provider.</param> public override void GenerateCode(AssemblyBuilder assemblyBuilder) { Utility.WriteTrace("Invoking BuildProvider"); DataService.LoadProviders(); ICodeLanguage language = new CSharpCodeLanguage(); DirectoryInfo di = new DirectoryInfo(HostingEnvironment.ApplicationPhysicalPath + "\\App_Code"); FileInfo[] fi = di.GetFiles("*.vb"); if (fi.Length > 0) { language = new VBCodeLanguage(); } StringBuilder code = new StringBuilder(language.DefaultUsingStatements); TurboCompiler tc = new TurboCompiler(); // loop over the providers, and generate code for each foreach (DataProvider provider in DataService.Providers) { Utility.WriteTrace(String.Format("Creating code for {0}", provider.Name)); string[] tableList = DataService.GetTableNames(provider.Name); string[] viewList = DataService.GetViewNames(provider.Name); foreach (string tbl in tableList) { TurboTemplate tt = CodeService.BuildClassTemplate(tbl, language, provider); tc.AddTemplate(tt); if (provider.GenerateODSControllers) { TurboTemplate tODS = CodeService.BuildODSTemplate(tbl, language, provider); tc.AddTemplate(tODS); } } foreach (string view in viewList) { TurboTemplate tt = CodeService.BuildViewTemplate(view, language, provider); tc.AddTemplate(tt); } tc.AddTemplate(CodeService.BuildSPTemplate(language, provider)); } if (DataService.Providers.Count > 0) { tc.AddTemplate(CodeService.BuildStructsTemplate(language, DataService.Provider)); } foreach (TurboTemplate tt in tc.Templates) { tt.AddUsingBlock = false; } tc.Run(); foreach (TurboTemplate tt in tc.Templates) { code.Append(tt.FinalCode); } assemblyBuilder.AddCodeCompileUnit(this, new CodeSnippetCompileUnit(code.ToString())); }
/// <summary> /// Generates the CodeBehind for the Editor /// </summary> /// <param name="pageName">The name of the page - can end with ASPX if you like but it will be stripped</param> /// <param name="providerName">The Data provider to use</param> /// <param name="tableName">Name of the table</param> /// <param name="languageType">Output language, i.e C# or that other one</param> /// <returns></returns> public static string GenerateCode(string pageName, string providerName, string tableName, LanguageType languageType) { //Grab the tableschema TableSchema.Table tbl = DataService.GetTableSchema(tableName, providerName); string pageTemplate = ResourceHelper.GetString(TemplateName.EDITOR_CODE); /* #NAMESPACE_USING# = if there is more than one provider, include this Using statement #PAGEBINDLIST# = The list that binds the page to the object #BINDLIST# = List that binds the object to the page #DROPLIST# = Loads each dropdown #CLASSNAME# = the name of the class */ //make sure the providers are loaded DataService.LoadProviders(); //Set the Namespace string namespaceUsing; //if (DataService.Databases.Count > 1) //{ //have to use the namespace namespaceUsing = "using " + Utility.CheckNamingRules(tbl.Provider) + ";"; //} pageTemplate = pageTemplate.Replace(TemplateVariable.NAMESPACE_USING, namespaceUsing); //Set the class name string className = tbl.ClassName; pageTemplate = pageTemplate.Replace(TemplateVariable.CLASS_NAME, className); //Set the page class name string pageClass = pageName.Replace(FileExtension.DOT_ASPX, String.Empty); pageTemplate = pageTemplate.Replace(TemplateVariable.PAGE_CLASS, pageClass); //now loop out the columns for each row of the table editor and grid StringBuilder bindRows = new StringBuilder(); StringBuilder pageBindRows = new StringBuilder(); StringBuilder dropList = new StringBuilder(); foreach (TableSchema.TableColumn col in tbl.Columns) { string controlName = col.PropertyName; if (!col.IsPrimaryKey) { if (col.IsForeignKey) { //dropdown lists TableSchema.Table FKTable = DataService.GetForeignKeyTable(col, tbl); if (FKTable != null) { dropList.AppendLine(AddTabs(2) + "Query qry" + controlName + " = " + FKTable.ClassName + ".CreateQuery();"); dropList.AppendLine(AddTabs(2) + "qry" + controlName + ".OrderBy = OrderBy.Asc(\"" + FKTable.Columns[1].ColumnName + "\");"); dropList.AppendLine(AddTabs(2) + "Utility.LoadDropDown(" + controlName + ", " + "qry" + controlName + ".ExecuteReader(), true);"); if (col.IsNullable) { dropList.AppendLine(AddTabs(2) + controlName + ".Items.Insert(0, new ListItem(\"(Not Specified)\", String.Empty));"); } } } pageBindRows.AppendLine(SetControlValue(col, className)); if (col.DataType != DbType.Binary && col.DataType != DbType.Byte) { bindRows.AppendLine(GetControlValue(col, className)); } } } pageTemplate = pageTemplate.Replace(TemplateVariable.BIND_LIST, bindRows.ToString()); pageTemplate = pageTemplate.Replace(TemplateVariable.PAGE_BIND_LIST, pageBindRows.ToString()); pageTemplate = pageTemplate.Replace(TemplateVariable.DROP_LIST, dropList.ToString()); return(pageTemplate); }