GenerateClasses() public method

public GenerateClasses ( ) : void
return void
示例#1
0
        // POST: api/Entity
        public IHttpActionResult Post([FromBody]Entity entity)
        {
            try
            {
                var classGenerator = new JsonClassGenerator();
                classGenerator.MainClass = entity.Name;
                classGenerator.Example = entity.Json;

                var project = string.IsNullOrEmpty(entity.Project) ? "Global" : entity.Project;

                classGenerator.Namespace = project + "." + Config.Models;
                classGenerator.TargetFolder = Path.Combine(Config.ProjectRepository, project, Config.Models);
                Directory.CreateDirectory(classGenerator.TargetFolder);
                classGenerator.UseProperties = true;
                classGenerator.UsePascalCase = true;
                if (entity.EnableDB)
                    classGenerator.GenerateIdField = true;

                var entities = classGenerator.GenerateClasses();

                if (entity.EnableDB)
                {
                    addDBContext(entity.Project, entities);
                }

                return Ok("Entity created successfully");
            }
            catch(Exception ex)
            {
                return InternalServerError(ex);
            }
        }
        void PasteJson(Clipboard c, string text)
        {
            if (string.IsNullOrEmpty (text)) {
                InsertCSharp (string.Empty);
                return;
            }

            var gen = new JsonClassGenerator {
                Example = text,
                MainClass = "RootObject",
                UseProperties = true,
                CodeWriter = new CSharpCodeWriter ()
            };

            try {
                using (var sw = new StringWriter ()) {
                    gen.OutputStream = sw;
                    gen.GenerateClasses ();
                    sw.Flush ();
                    var generatedString = sw.ToString ();
                    InsertCSharp (generatedString);
                }
            } catch (Exception ex) {
                Console.WriteLine (ex.Message);
                MessageService.ShowWarning (string.Format ("Invalid JSON: {0}", ex.Message));
            }

            gen = null;
        }
示例#3
0
        private string Prepare(string JSON, string classname, int language, bool nest, bool pascal, string propertyAttribute, bool hasGetSet=false)
        {
            if (string.IsNullOrEmpty(JSON))
            {
                return null;
            }

            ICodeWriter writer;

            if (language == 1)
                writer = new CSharpCodeWriter();
            else if (language == 2)
                writer = new VisualBasicCodeWriter();
            else if (language == 3)
                writer = new TypeScriptCodeWriter();
            else if(language == 4)
                writer = new SqlCodeWriter();
            else if(language == 5)
                writer = new JavaCodeWriter();
            else
                writer = new PhpCodeWriter();

            var gen = new JsonClassGenerator();
            gen.Example = JSON;
            gen.InternalVisibility = false;
            gen.CodeWriter = writer;
            gen.ExplicitDeserialization = false;
            if (nest)
                gen.Namespace = "JSONUtils";
            else
                gen.Namespace = null;

            gen.NoHelperClass = false;
            gen.SecondaryNamespace = null;
            gen.UseProperties = (language != 5 && language != 6) || hasGetSet;
            gen.MainClass = classname;
            gen.UsePascalCase = pascal;
            gen.PropertyAttribute = propertyAttribute;

            gen.UseNestedClasses = nest;
            gen.ApplyObfuscationAttributes = false;
            gen.SingleFile = true;
            gen.ExamplesInDocumentation = false;
            
            gen.TargetFolder = null;
            gen.SingleFile = true;

            using (var sw = new StringWriter())
            {
                gen.OutputStream = sw;
                gen.GenerateClasses();
                sw.Flush();

                return sw.ToString();
            }
        }
        public void GenerateClasses(string nameSpace)
        {
            var numSamples = NumRowsToSample;

            _generatedClasses =
                GetInputFiles()
                    .Select(f =>
                    {
                        // TODO: Be a better error handler
                        try
                        {
                            var fs = new FileStream(f, FileMode.Open);
                            var sr = new StreamReader(fs);
                            var jtr = new JsonTextReader(sr);

                            var examples =
                                Enumerable
                                    .Range(0, numSamples)
                                    .Select(_ =>
                                    {
                                        while (jtr.Read())
                                            if (jtr.TokenType == JsonToken.StartObject)
                                                return JObject.Load(jtr).ToString();
                                        return null;
                                    })
                                    .Where(json => json != null);

                            var examplesJson = String.Format("[{0}]", String.Join(",\r\n", examples));

                            jtr.Close();
                            sr.Close();
                            fs.Close();

                            var className = Path.GetFileNameWithoutExtension(f).SanitiseClassName();
                            var finalNamespace = nameSpace + "." + className + "Input";
                            var outputStream = new MemoryStream();
                            var outputWriter = new StreamWriter(outputStream);

                            var jsg = new JsonClassGenerator
                            {
                                Example = examplesJson,
                                Namespace = finalNamespace,
                                MainClass = className,
                                OutputStream = outputWriter,
                                NoHelperClass = true,
                                UseProperties = true,
                                GeneratePartialClasses = true
                            };

                            jsg.GenerateClasses();

                            outputWriter.Flush();
                            outputStream.Seek(0, SeekOrigin.Begin);

                            var classDef = new StreamReader(outputStream)
                                .ReadToEnd()
                                .Replace("IList<", "List<");

                            classDef =
                                classDef.Substring(classDef.IndexOf(String.Format("namespace {0}", nameSpace),
                                    StringComparison.Ordinal));

                            NamespacesToAdd.Add(finalNamespace);

                            return new JsonFileGeneratedClass(this)
                            {
                                Namespace = finalNamespace,
                                ClassName = className,
                                DataFilePath = f,
                                ClassDefinition = classDef,
                                Success = true
                            };
                        }
                        catch (Exception e)
                        {
                            return new JsonFileGeneratedClass(this)
                            {
                                DataFilePath = f,
                                Success = false,
                                Error = e
                            };
                        }
                    })
                    .ToList();
        }
        public void GenerateClasses(string nameSpace)
        {
            try
            {
                var className = Name.SanitiseClassName();

                var finalNamespace = nameSpace + "." + className + "Input";
                var outputStream = new MemoryStream();
                var outputWriter = new StreamWriter(outputStream);

                var jsg = new JsonClassGenerator
                {
                    Example = Json,
                    Namespace = finalNamespace,
                    MainClass = className,
                    OutputStream = outputWriter,
                    NoHelperClass = true,
                    UseProperties = true,
                    GeneratePartialClasses = true
                };

                jsg.GenerateClasses();

                outputWriter.Flush();
                outputStream.Seek(0, SeekOrigin.Begin);

                var classDef = new StreamReader(outputStream)
                    .ReadToEnd()
                    .Replace("IList<", "List<");

                classDef =
                    classDef.Substring(classDef.IndexOf(String.Format("namespace {0}", nameSpace),
                        StringComparison.Ordinal));

                NamespacesToAdd.Add(finalNamespace);

                _generatedClass = new JsonTextGeneratedClass(this)
                {
                    Namespace = finalNamespace,
                    ClassName = className,
                    ClassDefinition = classDef,
                    Success = true
                };
            }
            catch (Exception e)
            {
                _generatedClass = new JsonTextGeneratedClass(this)
                {
                    Success = false,
                    Error = e
                };
            }
        }
        public void GenerateClasses(string nameSpace)
        {
            try
            {
                var req = (HttpWebRequest) HttpWebRequest.Create(Url);
                req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
                req.UserAgent = @"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36";

                var examplesJson = "";
                using (var sr = new StreamReader(req.GetResponse().GetResponseStream()))
                    examplesJson = sr.ReadToEnd();

                var className = Name.SanitiseClassName();
                var finalNamespace = nameSpace + "." + className + "Input";
                var outputStream = new MemoryStream();
                var outputWriter = new StreamWriter(outputStream);

                var jsg = new JsonClassGenerator
                {
                    Example = examplesJson,
                    Namespace = finalNamespace,
                    MainClass = className,
                    OutputStream = outputWriter,
                    NoHelperClass = true,
                    UseProperties = true,
                    GeneratePartialClasses = true
                };

                jsg.GenerateClasses();

                outputWriter.Flush();
                outputStream.Seek(0, SeekOrigin.Begin);

                var classDef = new StreamReader(outputStream)
                    .ReadToEnd()
                    .Replace("IList<", "List<");

                classDef =
                    classDef.Substring(classDef.IndexOf(String.Format("namespace {0}", nameSpace),
                        StringComparison.Ordinal));

                NamespacesToAdd.Add(finalNamespace);

                GeneratedClasses = new List<IGeneratedClass>
                {
                    new JsonUrlGeneratedClass(this)
                    {
                        Namespace = finalNamespace,
                        ClassName = className,
                        Url = Url,
                        ClassDefinition = classDef,
                        Success = true
                    }
                };
            }
            catch (Exception e)
            {
                GeneratedClasses = new List<IGeneratedClass>
                {
                    new JsonUrlGeneratedClass(this)
                    {
                        Url = Url,
                        Success = false,
                        Error = e
                    }
                };
            }
        }