private void _work_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 {
     _dte.OutString(Properties.Resources.CollseAll);
     _dte.Solution.CollapseAllProject();
     _dte.Solution.RebuildSln();
     _dte.OutString(string.Format(Properties.Resources.BuildComplete, KeywordContainer.Resove("$ProjectName$")));
 }
Пример #2
0
        public KeywordView(BohemianArtifact bbshelf, Vector3 position, Vector3 size)
        {
            bookshelf = bbshelf;
            bookshelf.Library.SelectedArtifactChanged += new ArtifactLibrary.SelectedArtifactHandler(library_SelectedArtifactChanged);
            bookshelf.Library.LanguageChanged += new ArtifactLibrary.ChangeLanguageHandler(Library_LanguageChanged);
            this.position = position;
            this.size = size;
            draggedText = null;

            titleText = new SelectableText(XNA.Font, "Keywords", new Vector3(0.4f, 0, 0), bookshelf.GlobalTextColor, Color.White);
            titleText.InverseScale(0.8f, size.X, size.Y);

            WavyText.createAllLetters(bbshelf.Library.Artifacts);

            centerCircleRadius = 0.1f;
            relatedCircleRadius = centerCircleRadius * 0.5f;

            artifactCircles = new List<KeywordContainer>();
            for (int i = 0; i < MAX_CIRCLES; i++)
            {
                KeywordContainer newContainer = new KeywordContainer();
                newContainer.Circle = new SelectableEllipse(new Vector2(center.X, center.Y), relatedCircleRadius, centerCircleRadius * 0.05f, Color.White, new Color(1, 1, 1, 0), Color.Black, null);
                newContainer.Circle.TouchActivated += new TouchActivatedEventHandler(Circle_TouchActivated);
                newContainer.Circle.TouchReleased += new TouchReleaseEventHandler(Circle_TouchReleased);
                bookshelf.SelectableObjects.AddObject(newContainer.Circle);
                artifactCircles.Add(newContainer);
            }
            artifactCircles[CENTER_CIRCLE_ID].Circle.Radius = centerCircleRadius;
            PositionRelatedCircles();
        }
Пример #3
0
        /// <summary>
        /// 生成临时代码
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public override bool GenerateCode(object[] info)
        {
            try
            {
                using (StreamReader reader = new StreamReader(info[1].ToString()))
                {
                    while (reader.Peek() != -1)
                    {
                        string temp = reader.ReadLine();
                        temp = KeywordContainer.Replace(temp);
                        TempBuild.AppendLine(temp);
                    }
                }

                if ((bool)info[2])
                {
                    KeywordContainer.RegistSource(TemplateName, TempBuild.ToString());
                    TempBuild.Clear();
                }
                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #4
0
        /// <summary>
        /// 确定事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOk_Click(object sender, EventArgs e)
        {
            KeywordContainer.RegistSource("$ProjectName$", ProjectName);
            KeywordContainer.RegistSource("$Infrastructure$", Infrastructure);
            KeywordContainer.RegistSource("$IApplication$", IApplica);
            KeywordContainer.RegistSource("$Application$", Applica);
            KeywordContainer.RegistSource("$Data2Object$", Data2Object);
            KeywordContainer.RegistSource("$DomainContext$", DomainContxt);
            KeywordContainer.RegistSource("$DomainEntity$", DomainEntity);
            KeywordContainer.RegistSource("$Service$", Service);
            PrjCmdId.SetProjectName(PrjCmdId.Infrastructure, Infrastructure);
            PrjCmdId.SetProjectName(PrjCmdId.IApplication, IApplica);
            PrjCmdId.SetProjectName(PrjCmdId.Application, Applica);
            PrjCmdId.SetProjectName(PrjCmdId.Data2Object, Data2Object);
            PrjCmdId.SetProjectName(PrjCmdId.Service, Service);
            PrjCmdId.SetProjectName(PrjCmdId.DomainContext, DomainContxt);
            PrjCmdId.SetProjectName(PrjCmdId.DomainEntity, DomainEntity);

            if (this.chkService.Checked)
            {
                KeywordContainer.RegistSource("$IsPartService$", "true");
            }
            CodeFirstTools.TableFilterInclude = regex;
            CodeFirstTools.DbContextName      = txtContextName.Text;
            KeywordContainer.RegistSource("$ContextName$", txtContextName.Text);
            this.DialogResult = DialogResult.OK;
        }
Пример #5
0
 private void IniDgv()
 {
     dataGridView1.Rows.Clear();
     foreach (var kv in KeywordContainer.GetAll())
     {
         int index = this.dataGridView1.Rows.Add();
         dataGridView1[0, index].Value = kv.Key;
         dataGridView1[1, index].Value = kv.Value;
     }
 }
Пример #6
0
        /// <summary>
        /// 处理容器
        /// </summary>
        /// <param name="containerArgment"></param>

        public override void HandleGenerateContainer(Dictionary <string, string> containerArgment)
        {
            if (containerArgment != null)
            {
                foreach (var item in containerArgment)
                {
                    KeywordContainer.RegistSource(item.Key, item.Value);
                }
            }
        }
Пример #7
0
        /// <summary>
        /// 转换需要生成的项目项名称(提供关键字容器的解析)
        /// </summary>
        /// <param name="guid">项目项ID</param>
        /// <returns></returns>
        public static string ConvertFileName(string guid)
        {
            string tempName = CdeCmdId.TempFileName(guid);

            if (tempName == null)
            {
                string modelPath = TemplateContainer.Resove <string>(guid);
                tempName = Path.GetFileNameWithoutExtension(modelPath) + ".cs";
            }
            else
            {
                tempName = KeywordContainer.Replace(tempName);
            }
            return(tempName);
        }
Пример #8
0
 /// <summary>
 /// 创建代码
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public override bool GenerateCode(object[] info)
 {
     try
     {
         StringBuilder _tempBuild = new StringBuilder();
         using (StreamReader reader = new StreamReader(info[3].ToString()))
         {
             while (reader.Peek() != -1)
             {
                 string temp = reader.ReadLine();
                 temp = KeywordContainer.Replace(temp);
                 _tempBuild.AppendLine(temp);
             }
         }
         string   guid   = info[0].ToString();
         Project  prjt   = info[2] as Project;
         string   folder = string.Empty;
         Encoding encode = Encoding.Default;
         if (guid == CdeCmdId.ServiceId.WebConfig)
         {
             encode = Encoding.UTF8;
         }
         if (CdeCmdId.HasForlder(guid, out folder))
         {
             prjt.AddFromFileString(_tempBuild.ToString(), folder, StringConverter.ConvertFileName(guid), encode);
         }
         else
         {
             prjt.AddFromFileString(_tempBuild.ToString(), StringConverter.ConvertFileName(guid), encode);
         }
         return(true);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        /// <summary>
        /// This function is the callback used to execute a command when the a menu item is clicked.
        /// See the Initialize method to see how the menu item is associated to this function using
        /// the OleMenuCommandService service and the MenuCommand class.
        /// </summary>
        private void CreateCode(object sender, EventArgs e)
        {
            if (CommonContainer.CommonServer == null)
            {
                CommonContainer.CommonServer = (DTE)(GetService(typeof(DTE)));
            }

            CommonContainer.CommonServer.OutString(Resources.BeginCollectInfo, true);

            //获取项目的信息
            FormMain frm = new FormMain();

            if (frm.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            FolderBrowserDialog dialog = new FolderBrowserDialog();

            dialog.RootFolder  = Environment.SpecialFolder.MyComputer;
            dialog.Description = Resources.SolutionPath;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                string projectName = KeywordContainer.Resove("$ProjectName$");
                string space       = IniManager.ReadString(Resources.NodeName, Resources.NameSpaceName, "");
                CommonContainer.CommonServer.Solution.Create(string.Format("{1}.{0}.sln", projectName, space), string.Format("{1}.{0}", projectName, space));
                CommonContainer.CommonServer.Solution.SaveAs(Path.Combine(dialog.SelectedPath, string.Format("{1}.{0}.sln", projectName, space)));
                CommonContainer.SolutionPath = dialog.SelectedPath;
            }
            else
            {
                return;
            }

            SolutionStrategy strategy = new SolutionStrategy();

            strategy.BeginStrategy();
        }
Пример #10
0
        /// <summary>
        /// 添加构架应用程序
        /// </summary>
        /// <param name="ProjectCommon"></param>
        private void NewProject()
        {
            try
            {
                bool            allowNew      = true;
                bool            isPartService = KeywordContainer.Resove("$IsPartService$") == "true";
                GenerateContext context       = new GenerateContext();
                context.GeneratedOne += context_GeneratedOne;
                CodeGenerate generateCode = new CodeGenerate();
                TempGenerate generateTemp = new TempGenerate();
                generateTemp.TempBuild    = new StringBuilder();
                generateTemp.TemplateName = "$DBContextContent$";

                TempGenerate generateProTemp = new TempGenerate();
                generateProTemp.TempBuild    = new StringBuilder();
                generateProTemp.TemplateName = "$ProfileContent$";

                TempGenerate serverProTemp = new TempGenerate();
                serverProTemp.TempBuild    = new StringBuilder();
                serverProTemp.TemplateName = "$ServiceContent$";

                TempGenerate iServerProTemp = new TempGenerate();
                iServerProTemp.TempBuild    = new StringBuilder();
                iServerProTemp.TemplateName = "$IServiceContent$";

                TempGenerate containerTemp = new TempGenerate();
                containerTemp.TempBuild    = new StringBuilder();
                containerTemp.TemplateName = "$ContainerContent$";

                Dictionary <string, string> container = new Dictionary <string, string>();
                string str = string.Empty;
                if (CodeFirstTools.DataType == "MicrosoftSqlServer")
                {
                    str = "<add name=\"" + CodeFirstTools.DbContextName + "\" providerName=\"" + CodeFirstTools.ProviderName + "\" connectionString=\"" + CodeFirstTools.ConnectionString + ";MultipleActiveResultSets=True;Pooling=True;\"/>";
                }
                else
                {
                    str = "<add name=\"" + CodeFirstTools.DbContextName + "\" providerName=\"Oracle.DataAccess.Client\" connectionString=\"" + CodeFirstTools.ConnectionString + "\"/>";
                }

                int totalPercent = CodeFirstLogic.Tables.Count;

                #region 循环实体

                _processCurrentCount = 0;
                _processTotalCount   = CodeFirstLogic.Tables.Count;
                _totalPercent        = 0.6f;
                //循环实体
                foreach (Table tbl in CodeFirstLogic.Tables.Where(t => !t.IsMapping).OrderBy(x => x.NameHumanCase))
                {
                    _processCurrentCount++;
                    Dictionary <string, string> keycontainer = new Dictionary <string, string>();
                    keycontainer.Add("$Entity$", tbl.Name);
                    keycontainer.Add("$Data2Obj$", tbl.NameHumanCase);
                    keycontainer.Add("$Schema$", tbl.Schema);
                    keycontainer.Add("$MapPrimaryKey$", tbl.PrimaryKeyNameHumanCase());

                    string xmlPath = Path.Combine(CommonContainer.SolutionPath, CommonContainer.xmlName);
                    xmlManager.WriteEntity(tbl.Name, tbl.NameHumanCase, xmlPath);

                    StringBuilder build       = new StringBuilder();
                    StringBuilder entityBuild = new StringBuilder();
                    StringBuilder dtoBuild    = new StringBuilder();
                    //主键
                    foreach (Column col in tbl.Columns.Where(x => !x.Hidden).OrderBy(x => x.Ordinal))
                    {
                        build.AppendLine(col.Config);
                        entityBuild.AppendLine("        " + CodeFirstLogic.WritePocoColumn(col));
                        dtoBuild.AppendLine("        [DataMember]");
                        dtoBuild.AppendLine(string.Format("        public {0}{1} {2} {3}", col.PropertyType, CodeFirstTools.CheckNullable(col), col.PropertyName, "{get; set; }"));
                    }
                    keycontainer.Add("$MapProperty$", build.ToString());
                    keycontainer.Add("$Property$", entityBuild.ToString());
                    keycontainer.Add("$Data2ObjContent$", dtoBuild.ToString());
                    build.Clear();
                    entityBuild.Clear();
                    dtoBuild.Clear();
                    //外键
                    if (tbl.HasForeignKey)
                    {
                        foreach (Column col in from c in tbl.Columns.OrderBy(x => x.Ordinal) where c.ConfigFk != null select c)
                        {
                            build.AppendLine(col.ConfigFk);
                        }
                        foreach (Column col in from c in tbl.Columns.OrderBy(x => x.EntityFk) where c.EntityFk != null select c)
                        {
                            entityBuild.AppendLine("        " + col.EntityFk);
                        }
                    }
                    keycontainer.Add("$MapForeignKey$", build.ToString());
                    keycontainer.Add("$ForeignKey$", entityBuild.ToString());
                    build.Clear();
                    entityBuild.Clear();
                    //导航属性
                    if (tbl.ReverseNavigationProperty.Count() > 0)
                    {
                        foreach (string s in tbl.ReverseNavigationProperty.OrderBy(x => x))
                        {
                            entityBuild.AppendLine("        " + s);
                        }
                    }
                    keycontainer.Add("$Navigation$", entityBuild.ToString());
                    entityBuild.Clear();
                    //构造函数
                    if (tbl.Columns.Where(c => c.Default != string.Empty).Count() > 0 || tbl.ReverseNavigationCtor.Count() > 0)
                    {
                        entityBuild.AppendLine("        public " + tbl.Name + "()");
                        entityBuild.AppendLine("        {");
                        foreach (Column col in tbl.Columns.OrderBy(x => x.Ordinal).Where(c => c.Default != string.Empty))
                        {
                            entityBuild.AppendLine("          " + col.PropertyName + "=" + col.Default + ";");
                        }
                        foreach (string s in tbl.ReverseNavigationCtor)
                        {
                            entityBuild.AppendLine("          " + s);
                        }
                        entityBuild.AppendLine("        }");
                    }
                    keycontainer.Add("$Constructor$", entityBuild.ToString());
                    entityBuild.Clear();

                    context.injection(generateCode, CdeCmdId.DomainContextId.IRepository, allowNew, keycontainer);                                                            //IRepository
                    context.injection(generateCode, CdeCmdId.InfrastructureId.Repository, allowNew, keycontainer);                                                            //Repositor
                    context.injection(generateCode, CdeCmdId.ApplicationId.Application, allowNew, keycontainer);                                                              //Application
                    context.injection(generateCode, CdeCmdId.IApplicationId.IApplication, allowNew, keycontainer);                                                            //IApplication
                    context.injection(generateCode, CdeCmdId.Data2ObjectId.Data2Obj, allowNew, keycontainer);                                                                 //Data2Obj
                    context.injection(generateCode, CdeCmdId.InfrastructureId.Map, allowNew, keycontainer);                                                                   //Map
                    context.injection(generateCode, CdeCmdId.DomainEntityId.Entity, allowNew, keycontainer);                                                                  //Entity
                    context.injection(generateProTemp, CdeCmdId.Data2ObjectId.Profile.UnFix, _processCurrentCount == CodeFirstLogic.Tables.Count, keycontainer);              //ProfiTemp
                    context.injection(generateTemp, CdeCmdId.InfrastructureId.DBContext.UnFix, _processCurrentCount == CodeFirstLogic.Tables.Count, keycontainer);            //DbContextTemp
                    context.injection(serverProTemp, CdeCmdId.ServiceId.Service.UnFix, isPartService || _processCurrentCount == CodeFirstLogic.Tables.Count, keycontainer);   //ServerTemp
                    context.injection(iServerProTemp, CdeCmdId.ServiceId.IService.UnFix, isPartService || _processCurrentCount == CodeFirstLogic.Tables.Count, keycontainer); //IServerTemp
                    if (isPartService)
                    {
                        keycontainer.Add("$ServiceName$", tbl.NameHumanCase);
                        context.injection(generateCode, CdeCmdId.ServiceId.IService.Fix, allowNew, keycontainer);                                            //IServer
                        context.injection(generateCode, CdeCmdId.ServiceId.CodeBehind, allowNew, keycontainer);                                              //CodeBehind
                        context.injection(generateCode, CdeCmdId.ServiceId.Service.Fix, allowNew, keycontainer);                                             //Server
                    }
                    context.injection(containerTemp, CdeCmdId.ServiceId.Container.UnFix, _processCurrentCount == CodeFirstLogic.Tables.Count, keycontainer); //ContainerTemp
                    _currentTotalCount = context.Count;
                    context.Commit();
                }
                container.Add("$ConnectionString$", str);
                container.Add("$DBSchemaApp$", string.Format("<add key=\"DBSchema\" value=\"{0}\"/>", CodeFirstTools.SchemaName));


                #endregion

                context.injection(generateCode, CdeCmdId.InfrastructureId.DbContextExtensions, allowNew, container); //DbContextExtensions
                context.injection(generateCode, CdeCmdId.InfrastructureId.DBContext.Fix, allowNew, null);            //DbContext
                context.injection(generateCode, CdeCmdId.Data2ObjectId.Profile.Fix, allowNew, null);                 //DbContext
                context.injection(generateCode, CdeCmdId.InfrastructureId.ContextUnit, allowNew, null);              //DbContextUnit
                if (!isPartService)
                {
                    container.Add("$ServiceName$", KeywordContainer.Resove("$ProjectName$"));
                    context.injection(generateCode, CdeCmdId.ServiceId.IService.Fix, allowNew, container);                //IServer
                    context.injection(generateCode, CdeCmdId.ServiceId.CodeBehind, allowNew, container);                  //CodeBehind
                    context.injection(generateCode, CdeCmdId.ServiceId.Service.Fix, allowNew, container);                 //Server
                }
                context.injection(generateCode, CdeCmdId.ServiceId.Container.Fix, allowNew, null);                        //Container
                context.injection(generateCode, CdeCmdId.ServiceId.WebConfig, allowNew, null);                            //WebConfig
                context.injection(generateCode, CdeCmdId.ServiceId.UnityInstanceProviderServiceBehavior, allowNew, null); //UnityInstanceProviderServiceBehavior
                context.injection(generateCode, CdeCmdId.ServiceId.UnityInstanceProvider, allowNew, null);                //UnityInstanceProvider
                context.injection(generateCode, CdeCmdId.ServiceId.AttachDataSignBehavior, allowNew, null);               //AttachDataSignBehavior      ,

                _totalPercent        = 0.8f;
                _processTotalCount   = 1;
                _processCurrentCount = 1;
                _currentTotalCount   = context.Count;
                context.Commit();
                Project serverProject = TemplateContainer.Resove <Project>(PrjCmdId.Service);
                serverProject.SetLog4netWatch();

                CommonContainer.CommonServer.SetStartup(serverProject);
                //保存解决方案
                if (_dte.Solution.Saved == false)
                {
                    _dte.Solution.SaveAs(_dte.Solution.FullName);
                    KeywordContainer.SetContainer();
                }
            }
            catch (Exception ex)
            {
                Utility.Help.MsgBoxHelp.ShowError("Entity2Code Error:", ex);
            }
        }
Пример #11
0
 /// <summary>
 /// 开始执行上下文中所有的内容
 /// </summary>
 public void Commit()
 {
     while (_gEntityQueue.Count() > 0)
     {
         GenerateEntity queue = _gEntityQueue.Dequeue();
         try
         {
             queue.GenerateEngin.Generate(queue.GenerateId, queue.GenerateArgment, queue.GenerateContainer);
         }
         catch (Exception ex)
         {
             MsgBoxHelp.ShowError(string.Format(Properties.Resource.GenerateError, PrjCmdId.FindProjectName(queue.GenerateId)), ex);
         }
         finally
         {
             if (GeneratedOne != null)
             {
                 GeneratedOne(this, new EventGeneratedArg(queue.GenerateId, Count, KeywordContainer.Resove("$Entity$")));
             }
         }
     }
 }