Ejemplo n.º 1
0
        public void TestDictionaryFormatterCase3()
        {
            //
            //Arrange
            //
            var testRow = 1;
            var format  = @"insert into TableA \(\[ColumnA\]\) values\s+\('Dear {abc} \w+ \w+'\)"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = "Dear \\{abc\\} { dict|name:'firstNameDict',field:'Eng' } { dict|name:'LastNameDict',field:'Eng' }",
                    GenerateRecordCount = testRow
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
        public void generateMaterial(string savePath, string matFileName, string mainTexPath)
        {
            instMaterial = null;

            GenerateConfig config = generateConfigs[genType];
            Shader         shader = Shader.Find(config.shaderName);

            instMaterial = new Material(shader);
            instMaterial.enableInstancing = true;

            Texture2D saved_animTex = AssetDatabase.LoadAssetAtPath <Texture2D>(animTexturePath);

            // 材质
            if (File.Exists(mainTexPath))
            {
                Texture2D mainTex = AssetDatabase.LoadAssetAtPath <Texture2D>(mainTexPath);
                instMaterial.SetTexture("_MainTex", mainTex);
            }
            instMaterial.SetTexture("_AnimationTex", saved_animTex);

            string matPath = Path.Combine(savePath, matFileName);

            AssetDatabase.CreateAsset(instMaterial, matPath);
            EditorUtility.SetDirty(instMaterial);
        }
Ejemplo n.º 3
0
        public static bool Generate(GenerateConfig config)
        {
            ApplicationClass pd = new ApplicationClass();
            //打开模型,并获取模型基类
            Model model = (Model)pd.OpenModel(config.PDMFilePath, OpenModelFlags.omf_Hidden);

            //根据模型生成
            switch (config.DatabaseType)
            {
            case EDatabaseType.MSSQL:
            case EDatabaseType.Oracle:
            case EDatabaseType.MySQL:
            case EDatabaseType.SQLite:
                new PDMModelGenerator().Generate(config, model);
                model.Close();
                break;

            //new PDMGeneratorOfOracle().Generate(config, model);
            //break;
            //new PDMGeneratorOfMySQL().Generate(config, model);
            //break;
            default:
                break;
            }
            return(true);
        }
Ejemplo n.º 4
0
        private static string InitializeRepository(GenerateConfig config, string directory)
        {
            directory = Path.Combine(directory, config.Branch);

            if (!Directory.Exists(directory))
            {
                Repository.Clone(libpgQueryRepo, directory, new CloneOptions
                {
                    BranchName = config.Branch
                });

                foreach (var fetchFile in config.Fetches)
                {
                    var file = Path.Combine(directory, fetchFile.File);
                    var code = new StringBuilder(File.ReadAllText(file));

                    foreach (var fetch in fetchFile.Fetches)
                    {
                        code.Replace(fetch.Find, fetch.Replace);
                    }

                    File.WriteAllText(file, code.ToString());
                }
            }

            return(directory);
        }
Ejemplo n.º 5
0
        public void TestDateTimeFormatterCase1()
        {
            //
            //Arrange
            //
            var testRow = 100; //because random result, need more record to ensure it correct
            var format  = @"insert into TableA \(\[ColumnA\]\) values"
                          + @"("
                          + @"\s*\('(2017-01-02|2017-01-09|2017-01-16|2017-01-23|2017-01-30) ([0][9]|[1][0-8]):([0-5][0-9]):([0-5][0-9])'\),*"
                          + @"){" + testRow + "}"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = @"{dateTime|[\{ DayRange: '2017-01-01~2017-01-31',TimeRangeOfWeekDay:['mon:09:00:00~18:00:00']\} ]}",
                    GenerateRecordCount = testRow
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
Ejemplo n.º 6
0
        private void Form1_Load(object sender, EventArgs e)
        {
            var dbTypes = Enum.GetNames(typeof(EDatabaseType));

            cb_dbType.DataSource = dbTypes;
            GenerateConfigs.Load();
            cb_source.DataSource = GenerateConfigs.Items.Select(c => c.PDMFilePath).ToList();
            cb_source.Refresh();
            var lastestItem = GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == GenerateConfigs.LastestPDMFilePath);

            if (lastestItem != null)
            {
                cb_source.SelectedItem = lastestItem;
                CurrentGenerateConfig  = lastestItem;
            }
            else
            {
                GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == cb_source.Text);
            }
            if (CurrentGenerateConfig != null)
            {
                cb_source.Text    = CurrentGenerateConfig.PDMFilePath;
                tb_target.Text    = CurrentGenerateConfig.RootPath;
                tb_namespace.Text = CurrentGenerateConfig.RootNamespace;
                cb_dbType.Text    = CurrentGenerateConfig.DatabaseType.ToString();
                cb_wcf.Checked    = CurrentGenerateConfig.IsSupportWCF;
            }
        }
Ejemplo n.º 7
0
        public void TestDictionaryFormatterCase6()
        {
            //
            //Arrange
            //
            var testRow = 2;
            var format  = @"insert into TableA \(\[ColumnA\]\) values"
                          + @"\s+\('(\w+)'\),"
                          + @"\s+\('(\w+)'\)"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = "{  dict|name:'firstNameDict',field:'Eng' }",
                    GenerateRecordCount = testRow
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.AreNotEqual(
                Regex.Match(result, format).Groups[1].Value, Regex.Match(result, format).Groups[2].Value,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
Ejemplo n.º 8
0
        public void TestSQLGeneratorCase1()
        {
            //
            //Arrange
            //
            var format =
                @"use \[MyDB\];"
                + @"\s+GO"
                + @"\s+insert into TableA \(\[ColumnA\]\) values"
                + @"\s+\('abc'\),"
                + @"\s+\('abc'\)"
                + @";"
                + @"\s+GO"
                + @"\s+use \[MyDB\];"
                + @"\s+GO"
                + @"\s+set IDENTITY_INSERT TableB on;"
                + @"\s+GO"
                + @"\s+insert into TableB \(\[ColumnB\]\) values"
                + @"\s+\('def'\),"
                + @"\s+\('def'\),"
                + @"\s+\('def'\)"
                + @";"
                + @"\s+GO"
                + @"\s+set IDENTITY_INSERT TableB off;"
                + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    DatabaseName        = "MyDB",
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = @"abc",
                    GenerateRecordCount = 2
                },
                new GenerateConfig {
                    DatabaseName        = "MyDB",
                    TableName           = "TableB",
                    ColumnName          = "ColumnB",
                    DataType            = "varchar",
                    GenerateFormat      = @"def",
                    GenerateRecordCount = 3,
                    IdentityInsert      = true
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
Ejemplo n.º 9
0
        private static CppCompilation Compile(GenerateConfig config, string directory)
        {
            Environment.CurrentDirectory = directory;

            Regex[] sourcePatterns = config.CompileConfig.Sources
                                     .Select(StringExtension.MakeWildcardPattern)
                                     .ToArray();

            Regex[] sourceExcludePatterns = config.CompileConfig.SourceExcludes
                                            .Select(StringExtension.MakeWildcardPattern)
                                            .ToArray();

            List <string> sources = Directory.GetFiles(directory, "*.*", SearchOption.AllDirectories)
                                    .Select(f => Path.GetRelativePath(directory, f).Replace("\\", "/"))
                                    .Where(f =>
            {
                if (!sourcePatterns.Any(p => p.IsMatch(f)))
                {
                    return(false);
                }

                if (sourceExcludePatterns.Any(p => p.IsMatch(f)))
                {
                    return(false);
                }

                return(true);
            })
                                    .ToList();

            var parserOptions = new CppParserOptions
            {
                ParseAsCpp          = true,
                ParseMacros         = true,
                ParseAttributes     = true,
                ParseSystemIncludes = true,
                AdditionalArguments =
                {
                    "--target=x86_64-apple-darwin19.5.0",
                    "-Wall",
                    "-Wno-unused-function",
                    "-Wno-unused-value",
                    "-Wno-unused-variable",
                    "-fno-strict-aliasing",
                    "-fwrapv",
                    "-fPIC",
                    "-Wno-nullability-completeness"
                }
            };

            parserOptions.IncludeFolders.AddRange(GetGnuIncludes());
            parserOptions.IncludeFolders.Add("./");
            parserOptions.IncludeFolders.AddRange(config.CompileConfig.IncludeFolders);

            return(CppParser.ParseFiles(sources, parserOptions));
        }
        public void TestReferenceColumnFormatterCase2()
        {
            //
            //Arrange
            //
            var testRow = 2;
            var format  = @"insert into Staff \(\[Id\], \[FirstName\], \[LastName\], \[FullName\]\) values"
                          + @"\s*\('E001', 'Benny001', 'Leung001', 'Benny001 Leung001'\),*"
                          + @"\s*\('E002', 'Benny002', 'Leung002', 'Benny002 Leung002'\),*"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"E{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "FirstName",
                    DataType            = "varchar",
                    GenerateFormat      = @"Benny{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "LastName",
                    DataType            = "varchar",
                    GenerateFormat      = @"Leung{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "FullName",
                    DataType            = "varchar",
                    GenerateFormat      = @"{ref|table:'Staff',column:'FirstName'} {ref|table:'Staff',column:'LastName'}",
                    GenerateRecordCount = testRow
                },
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
        public void TestReferenceColumnFormatterCase3()
        {
            //
            //Arrange
            //
            var testRow = 1;
            var format  = @"insert into StaffLeave \(\[Id\], \[StartDate\], \[EndDate\], \[DayTaken\]\) values"
                          + @"\s*\('L001', '2017-01-01 00:00:00', '2017-01-02 00:00:00', '1'\),*"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"L{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "StartDate",
                    DataType            = "varchar",
                    GenerateFormat      = @"2017-01-01 00:00:00",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "EndDate",
                    DataType            = "varchar",
                    GenerateFormat      = @"{ref|table:'StaffLeave',column:'StartDate',converterName:'DateTimeConverter',converterParams:['AddDays', 1]}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "DayTaken",
                    DataType            = "varchar",
                    GenerateFormat      = @"1",
                    GenerateRecordCount = testRow
                },
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
Ejemplo n.º 12
0
        public GenerateBaseVM()
        {
            GenerateConfig = new GenerateConfig();
            var classes = DbHelper.Instance.GetClasses();

            foreach (var item in classes)
            {
                GenerateConfig.Classes.Add(new KeyValueDisplay()
                {
                    Key   = item.ClassNo,
                    Value = item.ClassName
                });
            }
        }
Ejemplo n.º 13
0
 private void ctlSourcePdmFile_TextChanged(object sender, EventArgs e)
 {
     CurrentGenerateConfig = GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == cb_source.Text);
     if (CurrentGenerateConfig == null)
     {
         CurrentGenerateConfig = new GenerateConfig();
         //新pdm地址 保留
         CurrentGenerateConfig.RootPath      = tb_target.Text;
         CurrentGenerateConfig.RootNamespace = tb_namespace.Text;
         CurrentGenerateConfig.DatabaseType  = (EDatabaseType)Enum.Parse(typeof(EDatabaseType), cb_dbType.Text);
         CurrentGenerateConfig.IsSupportWCF  = cb_wcf.Checked;
     }
     //新pdm地址 清空
     tb_target.Text    = CurrentGenerateConfig.RootPath;
     tb_namespace.Text = CurrentGenerateConfig.RootNamespace;
     cb_dbType.Text    = CurrentGenerateConfig.DatabaseType.ToString();
     cb_wcf.Checked    = CurrentGenerateConfig.IsSupportWCF;
 }
        /// <summary>
        /// Gets all the properties of the associated project.
        /// </summary>
        /// <returns></returns>
        private void LoadProjectProperties()
        {
            var dteProjectItem = (ProjectItem)this.provider.GetService(typeof(ProjectItem));
            var dteProject     = dteProjectItem.ContainingProject;

            var msbProject = this.projectsCollection.LoadProject(dteProject.FullName);
            var pi         = msbProject.CreateProjectInstance();

            foreach (var itm in pi.Items)
            {
                try
                {
                    if (itm.GetMetadataValue(Constants.GeneratorProperty) != Constants.GeneratorName)
                    {
                        continue;
                    }

                    var fullPath = Path.Combine(pi.Directory, itm.EvaluatedInclude);
                    var config   = new GenerateConfig();
                    var val      = itm.GetMetadataValue(Constants.IsThreadSafeProperty);
                    if (val != null && val.ToLowerInvariant() == "false")
                    {
                        config.IsThreadSafe = false;
                    }

                    val = itm.GetMetadataValue(Constants.IsObjectGraphProperty);
                    if (val != null && val.ToLowerInvariant() == "false")
                    {
                        config.IsObjectGraph = false;
                    }

                    val = itm.GetMetadataValue(Constants.IsNewOnlyProperty);
                    if (val != null && val.ToLowerInvariant() == "false")
                    {
                        config.IsNewOnly = false;
                    }

                    configMap[fullPath] = config;
                }
                catch
                {
                }
            }
        }
Ejemplo n.º 15
0
 private void ctlSourcePdmFile_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyData == Keys.Back || e.KeyData == Keys.Delete)
     {
         GenerateConfigs.Items.Remove(CurrentGenerateConfig);
         cb_source.DataSource = GenerateConfigs.Items.Select(c => c.PDMFilePath).ToList();
         cb_source.Refresh();
         CurrentGenerateConfig = GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == cb_source.Text);
         if (CurrentGenerateConfig == null)
         {
             CurrentGenerateConfig = new GenerateConfig();
             cb_source.Text        = "";
         }
         tb_target.Text    = CurrentGenerateConfig.RootPath;
         tb_namespace.Text = CurrentGenerateConfig.RootNamespace;
         cb_dbType.Text    = CurrentGenerateConfig.DatabaseType.ToString();
         cb_wcf.Checked    = CurrentGenerateConfig.IsSupportWCF;
     }
     if (e.KeyData == Keys.Enter)
     {
         var generateConfig = GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == cb_source.Text);
         if (generateConfig != null && !string.IsNullOrEmpty(generateConfig.PDMFilePath))
         {
             CurrentGenerateConfig = generateConfig;
         }
         else if (generateConfig != null)
         {
             CurrentGenerateConfig = new GenerateConfig();
         }
         else
         {
             CurrentGenerateConfig             = new GenerateConfig();
             CurrentGenerateConfig.PDMFilePath = cb_source.Text;
             GenerateConfigs.Items.Add(CurrentGenerateConfig);
         }
         //cb_source.Text = GenerateConfig.PDMFilePath;
         tb_target.Text    = CurrentGenerateConfig.RootPath;
         tb_namespace.Text = CurrentGenerateConfig.RootNamespace;
         cb_dbType.Text    = CurrentGenerateConfig.DatabaseType.ToString();
         cb_wcf.Checked    = CurrentGenerateConfig.IsSupportWCF;
     }
 }
        public void refreshGeneratorInfo()
        {
            animData = ScriptableObject.CreateInstance <GpuSkinningAnimData>();
            int totalFrame = 0;
            int clipFrame  = 0;

            clipsData.Clear();

            boneIds = resortBone(curGameObject);
            animData.totalBoneNum = boneIds.Count;

            animClips = clipList.ToArray();
            for (int i = 0; i < animClips.Length; ++i)
            {
                AnimationClip clip = animClips[i];
                clipFrame = (int)(clip.frameRate * clip.length / compression);

                GpuSkinningAnimClip clipData = new GpuSkinningAnimClip(clip.name, totalFrame, totalFrame + clipFrame - 1, clip.frameRate / compression);
                clipsData.Add(clipData);

                totalFrame += clipFrame;
            }
            animData.totalFrame = totalFrame;
            animData.clips      = clipsData.ToArray();

            GenerateConfig config = generateConfigs[genType];

            if (config.animationType == AnimationType.Vertices)
            {
                // 顶点动画
                Mesh mesh = selectedSkinnedMeshRenderer.sharedMesh;
                animData.texWidth  = mesh.vertices.Length;
                animData.texHeight = totalFrame * 2; // vec3需要两个像素表示(rgba32->float16)
            }
            else
            {
                // 骨骼动画
                long totalPixels = boneIds.Count * DEFAULT_PER_FRAME_BONE_DATASPACE * totalFrame;
                calTextureSize(totalPixels, out animData.texWidth, out animData.texHeight);
            }
        }
        private void rebuildAllMeshes(string savePath, string parentFolder)
        {
            {
                SkinnedMeshRenderer sm = selectedSkinnedMeshRenderer;

                if (!IslegalString(sm.name))
                {
                    string strLog = string.Format("Mesh  命名错误: {0} -> {1}", curGameObject.name, sm.name);
                    Warning("命名错误", strLog);
                }

                string meshName = sm.sharedMesh.name;
                instMesh = null;

                GenerateConfig config   = generateConfigs[genType];
                string         meshPath = Path.Combine(Path.GetDirectoryName(savePath), meshName) + config.saveMeshName;
                if (File.Exists(parentFolder + meshPath.Replace("\\", "/")))
                {
                    AssetDatabase.DeleteAsset(meshPath);
                }

                if (sm.sharedMesh.subMeshCount > 1)
                {
                    Debug.LogError("Not subMeshCount > 1:" + meshName);
                }

                instMesh     = UnityEngine.Object.Instantiate <Mesh>(sm.sharedMesh);
                instMesh.uv2 = null;
                instMesh.uv3 = null;
                AssetDatabase.CreateAsset(instMesh, meshPath);

                rebulidMeshBindPose(curGameObject, sm, instMesh, boneIds);

                EditorUtility.SetDirty(instMesh);
            }

            AssetDatabase.Refresh();
            AssetDatabase.SaveAssets();
        }
Ejemplo n.º 18
0
 private bool UpdateConfig()
 {
     if (string.IsNullOrEmpty(cb_source.Text))
     {
         MessageBox.Show("请输入pdm文件路径");
         return(false);
     }
     if (GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == CurrentGenerateConfig.PDMFilePath) == null)
     {
         CurrentGenerateConfig = new GenerateConfig();
         GenerateConfigs.Items.Add(CurrentGenerateConfig);
     }
     CurrentGenerateConfig.PDMFilePath   = cb_source.Text;
     CurrentGenerateConfig.RootPath      = tb_target.Text;
     CurrentGenerateConfig.RootNamespace = tb_namespace.Text;
     CurrentGenerateConfig.IsSupportWCF  = cb_wcf.Checked;
     if (!string.IsNullOrEmpty(cb_dbType.Text))
     {
         CurrentGenerateConfig.DatabaseType = (EDatabaseType)Enum.Parse(typeof(EDatabaseType), cb_dbType.Text);
     }
     GenerateConfigs.LastestPDMFilePath = CurrentGenerateConfig.PDMFilePath;
     return(true);
 }
        public void TestSequentialNumberFormatterCase1()
        {
            //
            //Arrange
            //
            var testRow = 4;
            var format  = @"insert into TableA \(\[ColumnA\]\) values"
                          + @"\s+\('abc 010 def'\),"
                          + @"\s+\('abc 011 def'\),"
                          + @"\s+\('abc 012 def'\),"
                          + @"\s+\('abc 010 def'\)"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = @"abc {seq|start:10,end:12,padding:'\{0:000\}'} def",
                    GenerateRecordCount = testRow
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
        public bool Compile(
            string filename,
            string nameSpace,
            TextWriter writer,
            ProgressReporter reporter)
        {
            GenerateConfig config;

            if (!configMap.TryGetValue(filename, out config))
            {
                config = new GenerateConfig();
            }

            var env = new Env();

            try
            {
                InstallResult ires;
                var           progName = new ProgramName(filename);
                env.Install(filename, out ires);
                PrintFlags(ires.Flags, reporter);
                if (!ires.Succeeded)
                {
                    return(false);
                }

                AST <API.Nodes.Program> program = null;
                foreach (var touched in ires.Touched)
                {
                    if (touched.Program.Node.Name.Equals(progName))
                    {
                        program = touched.Program;
                        break;
                    }
                }

                if (program == null)
                {
                    reporter.Error(filename, 0, 0, "Could not find input file");
                    return(false);
                }

                string name;
                string modName     = null;
                var    moduleQuery = new NodePred[] { NodePredFactory.Instance.Star, NodePredFactory.Instance.Module };
                program.FindAll(
                    moduleQuery,
                    (ch, n) =>
                {
                    if (n.TryGetStringAttribute(AttributeKind.Name, out name))
                    {
                        if (modName == null)
                        {
                            modName = name;
                        }
                        else
                        {
                            reporter.Warning(
                                filename,
                                n.Span.StartLine,
                                n.Span.StartCol,
                                string.Format("Code will only be generated for module {0}; ignoring module {1}.", modName, name));
                        }
                    }
                });

                if (modName == null)
                {
                    reporter.Warning(filename, 0, 0, "Could not find any modules in input file.");
                    return(true);
                }

                var opts = new GeneratorOptions(
                    GeneratorOptions.Language.CSharp,
                    config.IsThreadSafe,
                    config.IsNewOnly,
                    modName,
                    nameSpace);

                Task <GenerateResult> gres;
                env.Generate(progName, modName, writer, opts, out gres);
                gres.Wait();
                PrintFlags(filename, gres.Result.Flags, reporter);
                return(gres.Result.Succeeded);
            }
            catch (Exception e)
            {
                reporter.Error(filename, 0, 0, e.Message);
                return(false);
            }
        }
Ejemplo n.º 21
0
        public static List <string> GetReferences(this EGenerateTargetType targetType, GenerateConfig config)
        {
            var result = new List <string>();

            switch (targetType)
            {
            case EGenerateTargetType.DomainEntities:
                result.Add("System");
                result.Add("System.Collections.Generic");
                result.Add("System.Linq");
                result.Add(NamespaceOfDAS);
                result.Add(NamespaceOfORM);
                //result.Add(NamespaceOfProtocol);
                //result.Add(EGenerateTargetType.Entities.GetNamespace(config.RootNamespace));
                //result.Add(GetNamespace(EGenerateTargetType.Enums, config.RootNamespace));
                break;

            case EGenerateTargetType.Entities:
                result.Add("System");
                result.Add("System.Collections.Generic");
                result.Add("System.Data");
                //if (config.IsSupportWCF)
                //{
                //    result.Add("System.Runtime.Serialization");
                //}
                result.Add("System.Runtime.Serialization");
                result.Add(NamespaceOfORM);
                break;

            case EGenerateTargetType.EntityProperties:
                result.Add("System");
                result.Add(NamespaceOfORM);
                break;

            case EGenerateTargetType.EntityOperators:
                result.Add("System");
                result.Add("System.Collections.Generic");
                result.Add("System.Linq");
                result.Add(NamespaceOfDAS);
                result.Add(NamespaceOfORM);
                //result.Add(NamespaceOfProtocol);
                //result.Add(EGenerateTargetType.Entities.GetNamespace(config.RootNamespace));
                break;

            case EGenerateTargetType.References:
                result.Add("System");
                result.Add("System.Collections.Generic");
                result.Add(NamespaceOfORM);
                break;

            case EGenerateTargetType.ReferenceFetchers:
                result.Add("System");
                result.Add("System.Collections.Generic");
                result.Add(NamespaceOfDAS);
                result.Add(NamespaceOfORM);
                //result.Add(NamespaceOfProtocol);
                //result.Add(EGenerateTargetType.Entities.GetNamespace(config.RootNamespace));
                break;

            case EGenerateTargetType.Enums:
                if (config.IsSupportWCF)
                {
                    result.Add("System.Runtime.Serialization");
                }
                break;

            case EGenerateTargetType.Manual:
                break;

            default:
                throw new NotImplementedException();
            }
            return(result);
        }
Ejemplo n.º 22
0
 /// <summary>
 /// 生成Enums
 /// </summary>
 /// <param name="config"></param>
 /// <param name="tables"></param>
 /// <returns></returns>
 protected abstract bool GenerateEnums(GenerateConfig config, ObjectCol tables);
Ejemplo n.º 23
0
 /// <summary>
 /// 生成References
 /// </summary>
 /// <param name="config"></param>
 /// <param name="model"></param>
 /// <returns></returns>
 protected abstract bool GenerateReferences(GenerateConfig config, Model model);
Ejemplo n.º 24
0
 /// <summary>
 /// 生成代码
 /// </summary>
 /// <param name="config"></param>
 public abstract void Generate(GenerateConfig config, Model model);
        public void TestReferenceColumnFormatterCase1()
        {
            //
            //Arrange
            //
            var testRow = 2;
            var format  = @"insert into Staff \(\[Id\]\) values"
                          + @"\s*\('E001'\),*"
                          + @"\s*\('E002'\),*"
                          + @";"
                          + @"\s+GO"
                          + @"\s*insert into LeaveType \(\[Id\]\) values"
                          + @"\s*\('L001'\),*"
                          + @"\s*\('L002'\),*"
                          + @";"
                          + @"\s+GO"
                          + @"\s*insert into StaffLeave \(\[Id\], \[StaffId\], \[LeaveId\]\) values"
                          + @"\s*\('1', 'E00(1|2)', 'L00(1|2)'\),*"
                          + @"\s*\('2', 'E00(1|2)', 'L00(1|2)'\),*"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"E{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"{seq|start:1}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "StaffId",
                    DataType            = "varchar",
                    GenerateFormat      = @"{ref|table:'Staff',column:'Id'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "LeaveId",
                    DataType            = "varchar",
                    GenerateFormat      = @"{ref|table:'LeaveType',column:'Id'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "LeaveType",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"L{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
Ejemplo n.º 26
0
 public Pg10Generator(GenerateConfig config)
 {
     _config  = config;
     _typeMap = config.TypeMap ?? new Dictionary <string, string>();
 }