Example #1
0
/// <summary>
/// 更新信息
/// </summary>
        public int UpdateInfo(SqlTransaction trans, ClassTemplateModel claModel, int ClassTemplateId)
        {
            string key = "Cache_ClassTemplate_Model_" + ClassTemplateId;

            CacheHelper.RemoveCache(key);
            return(claDAL.UpdateInfo(trans, claModel, ClassTemplateId));
        }
        public ITemplate CreateTemplate(string language, string templateName, object model)
        {
            ITemplate template = _defaultFactory.CreateTemplate(language, templateName, model);

            if (templateName.StartsWith("Client.Class.Body"))
            {
                // This gets called before the Class.Body template so use it to get the client template model
                _clientTemplateModel = (CSharpClientTemplateModel)HashObjectProperty.GetValue(model);
            }
            if (templateName.StartsWith("Class.Body"))
            {
                // Get all the operations so we can create proxies in the model objects
                ClassTemplateModel classTemplateModel = (ClassTemplateModel)HashObjectProperty.GetValue(model);
                return(new ClassBodyTemplate(classTemplateModel, _clientTemplateModel));
            }
            if (templateName == "Class.Inheritance")
            {
                // Add IClientModel to the interface list
                return(new ClassInheritanceTemplate(template));
            }
            if (templateName == "Class.Constructor")
            {
                // Changes the constructor to take a NetlifyClient
                ClassTemplateModel classTemplateModel = (ClassTemplateModel)HashObjectProperty.GetValue(model);
                return(new ClassConstructorTemplate(classTemplateModel, _clientSettings));
            }
            return(template);
        }
Example #3
0
        /// <summary>Generates the type.</summary>
        /// <param name="typeNameHint">The fallback type name.</param>
        /// <returns>The code.</returns>
        public override TypeGeneratorResult GenerateType(string typeNameHint)
        {
            var typeName = _resolver.GetOrGenerateTypeName(_schema, typeNameHint);

            if (_schema.IsEnumeration)
            {
                var model    = new EnumTemplateModel(typeName, _schema, Settings);
                var template = Settings.TemplateFactory.CreateTemplate("TypeScript", "Enum", model);
                return(new TypeGeneratorResult
                {
                    TypeName = typeName,
                    Code = template.Render()
                });
            }
            else
            {
                var model    = new ClassTemplateModel(typeName, typeNameHint, Settings, _resolver, _schema, RootObject);
                var template = Settings.CreateTemplate(typeName, model);
                return(new TypeGeneratorResult
                {
                    TypeName = typeName,
                    BaseTypeName = model.BaseClass,
                    Code = template.Render()
                });
            }
        }
        private CodeArtifact GenerateClass(JsonSchema4 schema, string typeName)
        {
            var model = new ClassTemplateModel(typeName, Settings, _resolver, schema, RootObject);

            RenamePropertyWithSameNameAsClass(typeName, model.Properties);

            var template = Settings.TemplateFactory.CreateTemplate("CSharp", "Class", model);

            return(new CodeArtifact(typeName, model.BaseClassName, CodeArtifactType.Class, CodeArtifactLanguage.CSharp, template));
        }
        private TypeGeneratorResult GenerateClass(string typeName)
        {
            var model = new ClassTemplateModel(typeName, Settings, _resolver, _schema, RootObject);

            RenamePropertyWithSameNameAsClass(typeName, model.Properties);

            var template = Settings.TemplateFactory.CreateTemplate("CSharp", "Class", model);

            return(new TypeGeneratorResult
            {
                TypeName = typeName,
                BaseTypeName = model.BaseClass,
                Code = template.Render()
            });
        }
Example #6
0
/// <summary>
/// 从缓存读取信息
/// </summary>
        public ClassTemplateModel GetCacheInfo(SqlTransaction trans, int ClassTemplateId)
        {
            string key   = "Cache_ClassTemplate_Model_" + ClassTemplateId;
            object value = CacheHelper.GetCache(key);

            if (value != null)
            {
                return((ClassTemplateModel)value);
            }
            else
            {
                ClassTemplateModel claModel = claDAL.GetInfo(trans, ClassTemplateId);
                CacheHelper.AddCache(key, claModel, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(20), CacheItemPriority.Normal, null);
                return(claModel);
            }
        }
Example #7
0
        private TypeGeneratorResult GenerateClass(string typeName)
        {
            var properties = _schema.Properties.Values
                             .Select(property => new PropertyModel(property, _resolver, Settings))
                             .ToList();

            var model = new ClassTemplateModel(typeName, Settings, _resolver, _schema, properties);

            var template = new ClassTemplate() as ITemplate;

            template.Initialize(model);
            return(new TypeGeneratorResult
            {
                TypeName = typeName,
                BaseTypeName = model.BaseClass,
                Code = template.Render()
            });
        }
Example #8
0
        private TypeGeneratorResult GenerateClass(string typeName)
        {
            var properties = _schema.ActualProperties.Values
                             .Where(p => !p.IsInheritanceDiscriminator)
                             .Select(property => new PropertyModel(property, _resolver, Settings))
                             .ToList();

            RenamePropertyWithSameNameAsClass(typeName, properties);

            var model    = new ClassTemplateModel(typeName, Settings, _resolver, _schema, properties);
            var template = Settings.TemplateFactory.CreateTemplate("CSharp", "Class", model);

            return(new TypeGeneratorResult
            {
                TypeName = typeName,
                BaseTypeName = model.BaseClass,
                Code = template.Render()
            });
        }
Example #9
0
        /// <summary>Generates the type.</summary>
        /// <param name="schema">The schema.</param>
        /// <param name="typeNameHint">The fallback type name.</param>
        /// <returns>The code.</returns>
        protected override CodeArtifact GenerateType(JsonSchema schema, string typeNameHint)
        {
            var typeName = _resolver.GetOrGenerateTypeName(schema, typeNameHint);

            if (schema.IsEnumeration)
            {
                var model    = new EnumTemplateModel(typeName, schema, Settings);
                var template = Settings.TemplateFactory.CreateTemplate("TypeScript", "Enum", model);
                return(new CodeArtifact(typeName, CodeArtifactType.Enum, CodeArtifactLanguage.TypeScript, CodeArtifactCategory.Contract, template));
            }
            else
            {
                var model    = new ClassTemplateModel(typeName, typeNameHint, Settings, _resolver, schema, RootObject);
                var template = Settings.CreateTemplate(typeName, model);

                var type = Settings.TypeStyle == TypeScriptTypeStyle.Interface
                    ? CodeArtifactType.Interface
                    : CodeArtifactType.Class;

                return(new CodeArtifact(typeName, model.BaseClass, type, CodeArtifactLanguage.TypeScript, CodeArtifactCategory.Contract, template));
            }
        }
Example #10
0
        /// <summary>Generates the type.</summary>
        /// <param name="schema">The schema.</param>
        /// <param name="typeNameHint">The fallback type name.</param>
        /// <returns>The code.</returns>
        protected override CodeArtifact GenerateType(JsonSchema schema, string typeNameHint)
        {
            var typeName = _resolver.GetOrGenerateTypeName(schema, typeNameHint);

            if (schema.IsEnumeration)
            {
                var model = new EnumTemplateModel(typeName, schema, Settings);

                string templateName;
                if (Settings.EnumStyle == TypeScriptEnumStyle.Enum)
                {
                    templateName = nameof(TypeScriptEnumStyle.Enum);
                }
                else if (Settings.EnumStyle == TypeScriptEnumStyle.StringLiteral)
                {
                    templateName = $"{nameof(TypeScriptEnumStyle.Enum)}.{nameof(TypeScriptEnumStyle.StringLiteral)}";
                }
                else
                {
                    throw new ArgumentOutOfRangeException(nameof(Settings.EnumStyle), Settings.EnumStyle, "Unknown enum style");
                }

                var template = Settings.TemplateFactory.CreateTemplate("TypeScript", templateName, model);
                return(new CodeArtifact(typeName, CodeArtifactType.Enum, CodeArtifactLanguage.TypeScript, CodeArtifactCategory.Contract, template));
            }
            else
            {
                var model    = new ClassTemplateModel(typeName, typeNameHint, Settings, _resolver, schema, RootObject);
                var template = Settings.CreateTemplate(typeName, model);

                var type = Settings.TypeStyle == TypeScriptTypeStyle.Interface
                    ? CodeArtifactType.Interface
                    : CodeArtifactType.Class;

                return(new CodeArtifact(typeName, model.BaseClass, type, CodeArtifactLanguage.TypeScript, CodeArtifactCategory.Contract, template));
            }
        }
 public ClassTemplate(ClassTemplateModel model)
 {
     Model = model;
 }
Example #12
0
 public ClassConstructorTemplate(ClassTemplateModel classTemplateModel, CSharpClientGeneratorSettings clientSettings)
 {
     _classTemplateModel = classTemplateModel ?? throw new ArgumentNullException(nameof(classTemplateModel));
     _clientSettings     = clientSettings ?? throw new ArgumentNullException(nameof(clientSettings));
 }
Example #13
0
/// <summary>
/// 插入信息
/// </summary>
        public int InsertInfo(SqlTransaction trans, ClassTemplateModel claModel)
        {
            return(claDAL.InsertInfo(trans, claModel));
        }
Example #14
0
        /// <summary>
        /// Generate Dto Class
        /// </summary>
        /// <param name="schema"></param>
        /// <param name="typeNameHint"></param>
        /// <param name="className"></param>
        /// <returns></returns>
        public string GenerateDtoClass(JsonSchema schema, string typeNameHint, out string className)
        {
            string appendCode = string.Empty;
            var    typeName   = _resolver.GetOrGenerateTypeName(schema, typeNameHint);

            if (schema.IsEnumeration)
            {
                var model = new EnumTemplateModel(string.IsNullOrWhiteSpace(typeName) ? typeNameHint : typeName, schema,
                                                  _resolver.Settings);
                var template     = _resolver.Settings.TemplateFactory.CreateTemplate("TypeScript", "Enum", model);
                var codeArtifact = new CodeArtifact(string.IsNullOrWhiteSpace(typeName) ? typeNameHint : typeName,
                                                    CodeArtifactType.Enum, CodeArtifactLanguage.TypeScript, CodeArtifactCategory.Undefined, template);
                className = codeArtifact.TypeName;

                return(codeArtifact.Code);
            }
            else
            {
                var model = new ClassTemplateModel(typeName, typeNameHint, _resolver.Settings, _resolver, schema,
                                                   schema);
                Dictionary <string, List <string> > typeNames = new Dictionary <string, List <string> >();
                List <string> enumNames  = new List <string>();
                List <string> nswagTypes = new List <string>();
                StringBuilder builder    = new StringBuilder();
                foreach (var parent in schema.AllOf)
                {
                    var type = _resolver.GetOrGenerateTypeName(parent, string.Empty);
                    var list = new List <string>();
                    if (_resolver.Settings.GenerateConstructorInterface)
                    {
                        list.Add(_resolver.ResolveConstructorInterfaceName(parent, true, string.Empty));
                    }
                    list.Add(type);

                    typeNames.AddIfNot(type, list);
                }
                foreach (var actualProperty in schema.ActualProperties)
                {
                    if (actualProperty.Value.IsEnumeration && actualProperty.Value.Reference == null)
                    {
                        appendCode = GenerateDtoClass(actualProperty.Value, actualProperty.Key, out _);
                    }

                    var property = new PropertyModel(model, actualProperty.Value, actualProperty.Key, _resolver,
                                                     _resolver.Settings);

                    var propertyType = property.Type.IndexOf("[", StringComparison.Ordinal) > 0
                        ? property.Type.Replace("[]", "")
                        : property.Type;
                    if (!Constant.TsBaseType.Contains(propertyType) && !property.IsDictionary &&
                        !actualProperty.Value.IsEnumeration)
                    {
                        typeNames.AddIfNot(propertyType, new List <string> {
                            propertyType
                        });
                    }

                    if (Constant.UtilitiesModules.Contains(propertyType))
                    {
                        nswagTypes.Add(propertyType);
                    }

                    var propertyDictionaryItemType =
                        property.DictionaryItemType.IndexOf("[", StringComparison.Ordinal) > 0
                            ? property.DictionaryItemType.Replace("[]", "")
                            : property.DictionaryItemType;
                    if (!Constant.TsBaseType.Contains(propertyDictionaryItemType))
                    {
                        typeNames.AddIfNot(propertyDictionaryItemType, new List <string>()
                        {
                            propertyDictionaryItemType
                        });
                    }

                    if (Constant.UtilitiesModules.Contains(propertyDictionaryItemType))
                    {
                        nswagTypes.Add(propertyDictionaryItemType);
                    }

                    var propertyArrayItemType = property.ArrayItemType.IndexOf("[", StringComparison.Ordinal) > 0
                        ? property.ArrayItemType.Replace("[]", "")
                        : property.ArrayItemType;
                    if (!Constant.TsBaseType.Contains(propertyArrayItemType))
                    {
                        typeNames.AddIfNot(propertyArrayItemType, new List <string>()
                        {
                            propertyArrayItemType
                        });
                    }

                    if (Constant.UtilitiesModules.Contains(propertyArrayItemType))
                    {
                        nswagTypes.Add(propertyArrayItemType);
                    }
                }

                typeNames.Where(c => !nswagTypes.Contains(c.Key)).Where(c => c.Key != typeName).ToList()
                .ForEach(c => builder.AppendLine($"import {{ {string.Join(",", c.Value)} }} from './{c.Key}';"));
                enumNames.Distinct().Where(c => !nswagTypes.Contains(c)).Where(c => c != typeName).ToList()
                .ForEach(c => builder.AppendLine($"import {{ {c} }} from './{c}';"));
                if (nswagTypes.Any())
                {
                    builder.AppendLine(
                        $"import {{ {string.Join(",", nswagTypes.Distinct())} }} from '{(string.IsNullOrWhiteSpace(_dtoDirName) ? "./" : "../")}Utilities';");
                }

                builder.AppendLine();

                var template = _resolver.Settings.TemplateFactory.CreateTemplate("TypeScript", "Class", model);

                className = model.ClassName;

                return(string.Join("\n", builder.ToString(),
                                   template.Render(), appendCode));
            }
        }
 public ClassBodyTemplate(ClassTemplateModel classTemplateModel, CSharpClientTemplateModel clientTemplateModel)
 {
     _classTemplateModel  = classTemplateModel ?? throw new ArgumentNullException(nameof(classTemplateModel));
     _clientTemplateModel = clientTemplateModel ?? throw new ArgumentNullException(nameof(clientTemplateModel));
 }
 /// <summary>Initializes the template with a model.</summary>
 /// <param name="model">The model.</param>
 public void Initialize(object model)
 {
     Model = (ClassTemplateModel)model;
 }
 public CSharpClassTemplate(ClassTemplateModel model, CSharpClassTemplateOptions options)
 {
     Model   = model;
     Options = options;
 }