Beispiel #1
0
        /// <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));
        }
Beispiel #2
0
        /// <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));
        }
Beispiel #3
0
        /// <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));
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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);
        }