Пример #1
0
        /// <summary>
        /// Builds the Domain model code which includes :
        /// 1. Entity.
        /// 2. ActiveRecord
        /// 3. Service
        /// 4. Repository
        /// 5. Settings
        /// 6. Validator
        /// </summary>
        /// <param name="ctx"></param>
        /// <returns></returns>
        public virtual BoolMessageItem <ModelContainer> Process(ModelContext ctx)
        {
            string codeTemplatePath = ctx.AllModels.Settings.ModelCodeLocationTemplate;
            Dictionary <string, CodeFile> fileMap = CodeBuilderUtils.GetFiles(ctx, string.Empty, codeTemplatePath);

            foreach (Model currentModel in ctx.AllModels.AllModels)
            {
                // Pre condition.
                if (currentModel.GenerateCode)
                {
                    // Create the database table for all the models.
                    List <Model> modelChain = ModelUtils.GetModelInheritancePath(ctx, currentModel.Name, true);

                    fileMap = CodeFileHelper.GetFilteredDomainModelFiles(currentModel, fileMap);
                    string generatedCodePath = (string)ctx.AllModels.Settings.ModelCodeLocation;
                    generatedCodePath += "/" + currentModel.Name;
                    IDictionary <string, string> subs = new Dictionary <string, string>();
                    BuildSubstitutions(ctx, currentModel, modelChain, subs);

                    foreach (string fileName in fileMap.Keys)
                    {
                        string templateFile = codeTemplatePath + "/" + fileName;
                        string generated    = generatedCodePath + "/" + fileMap[fileName].QualifiedName;
                        CodeFileHelper.Write(templateFile, generated, generatedCodePath, subs);
                    }
                }
            }
            return(new BoolMessageItem <ModelContainer>(ctx.AllModels, true, string.Empty));
        }
        /// <summary>
        /// Builds the Domain model code which includes :
        /// 1. Entity.
        /// 2. ActiveRecord
        /// 3. Service
        /// 4. Repository
        /// 5. Settings
        /// 6. Validator
        /// </summary>
        /// <param name="ctx"></param>
        /// <returns></returns>
        public virtual BoolMessageItem <ModelContainer> Process(ModelContext ctx)
        {
            string codeTemplatePath = ctx.AllModels.Settings.ModelCodeLocationTemplate;

            this.Context = ctx;
            Dictionary <string, CodeFile> fileMap = CodeBuilderUtils.GetFiles(ctx, string.Empty, codeTemplatePath);

            ctx.AllModels.Iterate(m => ctx.CanProcess(m, (model) => model.GenerateCode), currentModel =>
            {
                var modelChain                    = ctx.AllModels.InheritanceFor(currentModel.Name);
                fileMap                           = CodeFileHelper.GetFilteredDomainModelFiles(currentModel, fileMap);
                string generatedCodePath          = (string)ctx.AllModels.Settings.ModelCodeLocation;
                generatedCodePath                += "/" + currentModel.Name;
                IDictionary <string, string> subs = new Dictionary <string, string>();
                BuildSubstitutions(ctx, currentModel, modelChain, subs);

                foreach (string fileName in fileMap.Keys)
                {
                    string templateFile = codeTemplatePath + "/" + fileName;
                    string generated    = generatedCodePath + "/" + fileMap[fileName].QualifiedName;
                    CodeFileHelper.Write(templateFile, generated, generatedCodePath, subs);
                }
            });

            return(new BoolMessageItem <ModelContainer>(ctx.AllModels, true, string.Empty));
        }