예제 #1
0
        /// <summary>
        ///     Drop
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dropJavascriptToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var strPath       = RuntimeMongoDbContext.SelectTagData;
            var strCollection = strPath.Split("/".ToCharArray())[(int)EnumMgr.PathLevel.CollectionAndView + 1];
            var result        = Operater.DelJavascript(strCollection);

            if (string.IsNullOrEmpty(result))
            {
                var strNodeData = RuntimeMongoDbContext.SelectTagData;
                trvsrvlst.SelectedNode.Parent.Nodes.Remove(trvsrvlst.SelectedNode);
                DisableAllOpr();
            }
            else
            {
                MyMessageBox.ShowMessage("Delete Error", "A error is happened when delete javascript", result, true);
            }
        }
예제 #2
0
 /// <summary>
 ///     删除索引
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void cmdDelIndex_Click(object sender, EventArgs e)
 {
     if (lstIndex.CheckedItems.Count <= 0)
     {
         return;
     }
     if (lstIndex.CheckedItems[0].Index == 0)
     {
         MessageBox.Show("Can't Delete Default Index!");
         return;
     }
     foreach (ListViewItem item in lstIndex.CheckedItems)
     {
         Operater.DropMongoIndex(item.SubItems[0].Text, RuntimeMongoDbContext.GetCurrentCollection());
     }
     RefreshList();
 }
예제 #3
0
 /// <summary>
 ///     Load方法,属性设定
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ctlJsCodeEditor_Load(object sender, EventArgs e)
 {
     txtEditJavaScript.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy(ConstMgr.CSharp);
     if (DesignMode)
     {
         return;
     }
     foreach (var item in MongoHelper.GetJsNameList())
     {
         cmbJsList.Items.Add(item);
     }
     cmbJsList.SelectedIndexChanged += (x, y) =>
     {
         txtEditJavaScript.Text = Operater.LoadJavascript(cmbJsList.Text,
                                                          RuntimeMongoDbContext.GetCurrentJavaScript());
     };
     GuiConfig.Translateform(Controls);
 }
예제 #4
0
        /// <summary>
        ///     重命名
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        public static string RenameCollection(TreeNode node)
        {
            var strPath              = RuntimeMongoDbContext.SelectTagData;
            var strCollection        = strPath.Split("/".ToCharArray())[(int)EnumMgr.PathLevel.Collection];
            var strNewCollectionName = MyMessageBox.ShowInput(
                GuiConfig.GetText("Please input new collection name:", TextType.RenameCollectionInput),
                GuiConfig.GetText("Rename collection", TextType.RenameCollection), strCollection);

            if (string.IsNullOrEmpty(strNewCollectionName))
            {
                return(string.Empty);
            }
            if (Operater.RenameCollection(strCollection, strNewCollectionName))
            {
                return(strNewCollectionName);
            }
            return(string.Empty);
        }
예제 #5
0
 /// <summary>
 /// 取消
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnCancel_Click(object sender, EventArgs e)
 {
     //操作完成,还原界面
     operater = Operater.noThing;
     //启用控件
     btnAdd.Enabled      = true;
     btnModify.Enabled   = true;
     btnDel.Enabled      = true;
     dgvItemList.Enabled = true;
     //禁用控件
     btnSave.Enabled     = false;
     btnCancel.Enabled   = false;
     txtItemName.Enabled = false;
     txtMax.Enabled      = false;
     txtMin.Enabled      = false;
     txtUnit.Enabled     = false;
     GetData();
 }
예제 #6
0
        /// <summary>
        /// 用户测试用例
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUser_Click(object sender, EventArgs e)
        {
            //用户测试用例
            Operater.Init();
            UserInfo user = new UserInfo();

            user.UserName = "******";
            user.Email    = "*****@*****.**";
            UserInfo.InsertUser(user);
            var t = UserInfo.GetUserByName(user.UserName);

            MessageBox.Show(t.UserName + ":" + t.Email);
            UserInfo.DeleteUser(user.UserName);
            t = UserInfo.GetUserByName(user.UserName);
            if (t != null)
            {
                MessageBox.Show(t.UserName + ":" + t.Email);
            }
        }
예제 #7
0
        /// <summary>
        ///     建立数据库
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CreateMongoDBToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string strDbName;

            if (GuiConfig.IsUseDefaultLanguage)
            {
                strDbName = MyMessageBox.ShowInput("Please Input DataBaseName:", "Create Database");
            }
            else
            {
                strDbName =
                    MyMessageBox.ShowInput(
                        GuiConfig.GetText(TextType.CreateNewDataBaseInput),
                        GuiConfig.GetText(TextType.CreateNewDataBase));
            }
            string errMessage;

            if (Operater.IsDatabaseNameValid(strDbName, out errMessage))
            {
                try
                {
                    var strRusult = Operater.DataBaseOpration(RuntimeMongoDbContext.SelectObjectTag, strDbName,
                                                              Operater.Oprcode.Create);
                    if (string.IsNullOrEmpty(strRusult))
                    {
                        RefreshToolStripMenuItem_Click(sender, e);
                    }
                    else
                    {
                        MyMessageBox.ShowMessage("Error", "Create MongoDatabase", strRusult, true);
                    }
                }
                catch (ArgumentException ex)
                {
                    Utility.ExceptionDeal(ex, "Create MongoDatabase", "Argument Exception");
                }
            }
            else
            {
                MyMessageBox.ShowMessage("Create MongoDatabase", "Argument Exception", errMessage, true);
            }
        }
예제 #8
0
 /// <summary>
 ///     OK
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void cmdOK_Click(object sender, EventArgs e)
 {
     //不支持中文 JIRA ticket is created : SERVER-4412
     //SERVER-4412已经在2013/03解决了
     //collection names are limited to 121 bytes after converting to UTF-8.
     if (txtCollectionName.Text == string.Empty)
     {
         return;
     }
     try
     {
         string errMessage;
         RuntimeMongoDbContext.GetCurrentDataBase().IsCollectionNameValid(txtCollectionName.Text, out errMessage);
         if (errMessage != null)
         {
             MyMessageBox.ShowMessage("Create MongoDatabase", "Argument Exception", errMessage, true);
             return;
         }
         if (chkAdvance.Checked)
         {
             var option = new CollectionOptionsBuilder();
             option.SetCapped(chkIsCapped.Checked);
             option.SetMaxSize((long)numMaxSize.Value);
             option.SetMaxDocuments((long)numMaxDocument.Value);
             //CappedCollection Default is AutoIndexId After MongoDB 2.2.2
             option.SetAutoIndexId(chkIsAutoIndexId.Checked);
             Result = Operater.CreateCollectionWithOptions(StrSvrPathWithTag, txtCollectionName.Text,
                                                           option, RuntimeMongoDbContext.GetCurrentDataBase());
         }
         else
         {
             Result = Operater.CreateCollection(StrSvrPathWithTag, txtCollectionName.Text,
                                                RuntimeMongoDbContext.GetCurrentDataBase());
         }
         Close();
     }
     catch (ArgumentException ex)
     {
         Utility.ExceptionDeal(ex, "Create MongoDatabase", "Argument Exception");
         Result = false;
     }
 }
예제 #9
0
 public void Init()
 {
     if (!DesignMode)
     {
         foreach (var item in MongoHelper.GetJsNameList())
         {
             cmbJsList.Items.Add(item);
         }
         cmbJsList.SelectedIndexChanged +=
             (x, y) => { txtContext.Text = Operater.LoadJavascript(cmbJsList.Text, null); };
         if (!GuiConfig.IsUseDefaultLanguage)
         {
             cmdSave.Text      = GuiConfig.GetText(TextType.CommonSave);
             cmdSaveLocal.Text =
                 GuiConfig.GetText(TextType.CommonSaveLocal);
             cmdLoadLocal.Text =
                 GuiConfig.GetText(TextType.QueryActionLoad);
         }
     }
 }
예제 #10
0
 /// <summary>
 ///     复制
 /// </summary>
 private void Copy(MongoDatabase toDb)
 {
     ChangeEnable(false);
     try
     {
         //获取选中的表
         for (var index = 0; index < _selectCollection.Count; index++)
         {
             var name = _selectCollection[index];
             Operater.CopyCollection(RuntimeMongoDbContext.GetCurrentDataBase(), toDb, name, false);
             ChangeProgress(index);
         }
         MessageBox.Show(@"OK");
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.Message);
     }
     ChangeEnable(true);
 }
예제 #11
0
        /// <summary>
        ///     初始化ReplSet
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void InitReplsetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var replSetName = MyMessageBox.ShowInput("Please Fill ReplSetName :",
                                                     GuiConfig.GetText("ReplSetName", TextType.ReplsetInitReplset));

            if (replSetName == string.Empty)
            {
                return;
            }
            var result = string.Empty;

            if (Operater.InitReplicaSet(replSetName, ref result))
            {
                MyMessageBox.ShowMessage("ReplSetName", "Please refresh connection after one minute.");
            }
            else
            {
                MyMessageBox.ShowMessage("ReplSetName", "Failed", result);
            }
        }
예제 #12
0
        private void JsEditor_Load(object sender, EventArgs e)
        {
            if (DesignMode)
            {
                return;
            }
            GuiConfig.Translateform(Controls);
            SaveStripButton.Image = Resources.save.ToBitmap();
//            if (!string.IsNullOrEmpty(JsName))
//            {
//                txtEditJavaScript.Text = Operater.LoadJavascript(JsName, RuntimeMongoDbContext.GetCurrentCollection());
//                txtEditJavaScript.Select(0, 0);
//            }
//            txtEditJavaScript.GotFocus += (x, y) => { RuntimeMongoDbContext.SelectObjectTag = StrDBtag; };


            if (!string.IsNullOrEmpty(JsName))
            {
                txtEditJavaScript.Text = Operater.LoadJavascript(JsName, RuntimeMongoDbContext.GetCurrentCollection());
            }
        }
예제 #13
0
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnAdd_Click(object sender, EventArgs e)
 {
     operater = Operater.add;
     //禁用控件
     dgvItemList.Enabled = false;
     btnAdd.Enabled      = false;
     btnModify.Enabled   = false;
     btnDel.Enabled      = false;
     //启用
     txtItemName.Enabled = true;
     txtUnit.Enabled     = true;
     txtMax.Enabled      = true;
     txtMin.Enabled      = true;
     btnSave.Enabled     = true;
     btnCancel.Enabled   = true;
     //清空文本框
     txtItemName.Text = "";
     txtMax.Text      = "";
     txtMin.Text      = "";
     txtUnit.Text     = "";
 }
예제 #14
0
        /// <summary>
        /// 行程测试用例
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSchedule_Click(object sender, EventArgs e)
        {
            //行程测试用例
            Operater.Init();
            Overview Trip = new Overview();
            UserInfo user = new UserInfo();

            user.UserName = "******";
            user.Email    = "*****@*****.**";
            UserInfo.InsertUser(user);
            Trip.CreateUserName = user.UserName;
            Trip.StartDate      = new DateTime(2014, 10, 10);
            Trip.EndDate        = new DateTime(2014, 10, 15);
            Trip.MemberCount    = 4;
            Trip.DepartLocation = "上海";
            Trip.ReturnLocation = "上海";
            Trip.EntryLocation  = "台币";
            Trip.ExitLocation   = "高雄";
            Trip.Budget         = 20000;

            Preparation 入台通行证办理 = new Preparation();

            入台通行证办理.StartDate = new DateTime(2014, 8, 23);
            入台通行证办理.EndDate   = new DateTime(2014, 8, 23);
            入台通行证办理.Location  = "上海市杨浦区出入境管理处 淞沪路605号";
            入台通行证办理.Comments  = "网上先预约一下,可以加快办理速度";
            Consumption 入台通行证手续费 = new Consumption();

            入台通行证手续费.Price       = 50;
            入台通行证手续费.Count       = 4;
            入台通行证手续费.PayCurrency = Consumption.CurrencyEnum.RMB;
            入台通行证手续费.PayMethod   = Consumption.PayMethodEnum.Cash;
            入台通行证手续费.PayClass    = Consumption.PayClassEnum.Certificates;
            入台通行证手续费.PayTime     = new DateTime(2014, 8, 23);
            入台通行证办理.ConsumptionList.Add(入台通行证手续费);
            Operater.FillBaseInfo(入台通行证办理);
            Trip.PreparationList.Add(入台通行证办理);

            Overview.InsertOverview(Trip);
        }
예제 #15
0
 ///// <summary>
 ///// 数据树形被选择后(TOP)
 ///// </summary>
 ///// <param name="sender"></param>
 ///// <param name="e"></param>
 private void trvData_AfterSelect_Top(object sender, TreeViewEventArgs e)
 {
     //InitControlsEnable();
     if (MDataViewInfo.IsView)
     {
         return;                       //View是只读的
     }
     RuntimeMongoDbContext.SelectObjectTag = MDataViewInfo.StrDbTag;
     if (trvData.DatatreeView.SelectedNode.Level == 0)
     {
         //顶层可以删除的节点
         if (!MDataViewInfo.IsReadOnly)
         {
             if (!Operater.IsSystemCollection(RuntimeMongoDbContext.GetCurrentCollection()) &&
                 !RuntimeMongoDbContext.GetCurrentCollection().IsCapped())
             {
                 //普通数据
                 //在顶层的时候,允许添加元素,不允许删除元素和修改元素(删除选中记录)
                 DelSelectRecordToolToolStripMenuItem.Enabled = true;
                 DelSelectRecordToolStripButton.Enabled       = true;
                 AddElementToolStripMenuItem.Enabled          = true;
                 if (ElementHelper.CanPasteAsElement)
                 {
                     PasteElementToolStripMenuItem.Enabled = true;
                     PasteElementStripButton.Enabled       = true;
                 }
             }
             else
             {
                 DelSelectRecordToolToolStripMenuItem.Enabled = false;
                 //DelSelectRecordToolStripButton.Enabled = false;
             }
         }
     }
     else
     {
         //非顶层元素
         trvData_AfterSelect_NotTop();
     }
 }
예제 #16
0
        /// <summary>
        ///     建立数据库
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CreateMongoDBToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //新版本如果数据库没有数据集,则数据库将被回收?
            string strDbName = MyMessageBox.ShowInput(
                GuiConfig.GetText("Please Input DataBaseName:", "CreateNewDataBaseInput"),
                GuiConfig.GetText("Create Database", "CreateNewDataBase"));

            if (string.IsNullOrEmpty(strDbName))
            {
                return;
            }
            string strInitColName = MyMessageBox.ShowInput(
                GuiConfig.GetText("Please Input Init CollectionName:", "CreateNewDataBaseInitCollection"),
                GuiConfig.GetText("Create Database", "CreateNewDataBase"));
            string errMessage;

            if (Operater.IsDatabaseNameValid(strDbName, out errMessage))
            {
                try
                {
                    var strRusult = Operater.CreateDataBaseWithInitCollection(strDbName, strInitColName);
                    if (string.IsNullOrEmpty(strRusult))
                    {
                        RefreshToolStripMenuItem_Click(sender, e);
                    }
                    else
                    {
                        MyMessageBox.ShowMessage("Error", "Create MongoDatabase", strRusult, true);
                    }
                }
                catch (ArgumentException ex)
                {
                    Utility.ExceptionDeal(ex, "Create MongoDatabase", "Argument Exception");
                }
            }
            else
            {
                MyMessageBox.ShowMessage("Create MongoDatabase", "Argument Exception", errMessage, true);
            }
        }
예제 #17
0
파일: Form1.cs 프로젝트: bezdoman/PIZZAtest
        private void InsertPorudzbina_Click(object sender, EventArgs e)
        {
            try
            {
                ISession               sesija = DataLayer.GetSession();
                ITransaction           tran   = sesija.BeginTransaction();
                Operater               o      = sesija.Load <Operater>(2);
                Kupac                  k      = sesija.Load <Kupac>(19);
                DateTime               datum  = new DateTime(2019, 5, 5);
                NeisporucenaPorudzbina p      = new NeisporucenaPorudzbina();
                p.DatumVremeKreiranja = datum;

                p.NacinPlacanja = "KARTICA";
                sesija.Save(p);
                p.IdOperater = o;
                p.IdKupca    = k;//,

                Sadrzi s = new Sadrzi()
                {
                    PizzaId      = sesija.Load <Pizza>("Kalcona"),
                    VelicinaId   = sesija.Load <VelicinaPizze>("Srednja"),
                    PorudzbinaId = p
                };

                sesija.Save(s);

                o.PrimljenePorudzbine.Add(p);
                k.Porudzbine.Add(p);

                sesija.Update(k);
                sesija.Update(o);

                sesija.Update(s);

                tran.Commit();
                sesija.Close();
                MessageBox.Show("KRAJ");
            }
            catch (Exception exc) { MessageBox.Show(exc.Message); }
        }
예제 #18
0
 /// <summary>
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void cmdAddHost_Click(object sender, EventArgs e)
 {
     try
     {
         var result = ShellMethod.AddToReplsetServer(RuntimeMongoDbContext.GetCurrentServer(),
                                                     txtReplHost.Text + ":" + NumReplPort.Value, (int)NumPriority.Value, chkArbiterOnly.Checked);
         if (CommandExecute.IsShellOk(result))
         {
             RuntimeMongoDbContext.CurrentMongoConnectionconfig.ReplsetList.Add(txtReplHost.Text + ":" + NumReplPort.Value);
             Operater.RefreshConnectionConfig(RuntimeMongoDbContext.CurrentMongoConnectionconfig);
             MyMessageBox.ShowMessage("Add Memeber OK", "Please refresh connection after one minute.");
         }
         else
         {
             MyMessageBox.ShowMessage("Add Memeber", "Add Memeber Failed", result.Response.ToString());
         }
     }
     catch (Exception ex)
     {
         Utility.ExceptionDeal(ex);
     }
 }
예제 #19
0
 /// <summary>
 /// ViewList右键事件
 /// </summary>
 /// <param name="e"></param>
 private void ViewListHandler(TreeNodeMouseClickEventArgs e)
 {
     if (e.Button == MouseButtons.Right)
     {
         if (!Operater.IsSystemDataBase(RuntimeMongoDbContext.GetCurrentDataBaseName()))
         {
             CreateViewtoolStripMenuItem.Enabled = true;
         }
         contextMenuStripMain = new ContextMenuStrip();
         if (SystemManager.MonoMode)
         {
             var createMongoCollection = CreateViewtoolStripMenuItem.Clone();
             createMongoCollection.Click += CreateMongoCollectionToolStripMenuItem_Click;
             contextMenuStripMain.Items.Add(createMongoCollection);
         }
         else
         {
             contextMenuStripMain.Items.Add(CreateViewtoolStripMenuItem.Clone());
         }
         e.Node.ContextMenuStrip = contextMenuStripMain;
         contextMenuStripMain.Show(trvsrvlst.PointToScreen(e.Location));
     }
 }
예제 #20
0
        /// <summary>
        ///     加载
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmAddSharding_Load(object sender, EventArgs e)
        {
            GuiConfig.Translateform(this);
            _prmSvr = RuntimeMongoDbContext.GetCurrentServer();
            var             mongoDb  = _prmSvr.GetDatabase(ConstMgr.DatabaseNameConfig);
            MongoCollection mongoCol = mongoDb.GetCollection("databases");

            foreach (var item in mongoCol.FindAllAs <BsonDocument>())
            {
                if (item.GetValue(ConstMgr.KeyId) != ConstMgr.DatabaseNameAdmin)
                {
                    cmbDataBase.Items.Add(item.GetValue(ConstMgr.KeyId));
                    cmbShardKeyDB.Items.Add(item.GetValue(ConstMgr.KeyId));
                }
            }
            foreach (var lst in Operater.GetShardInfo(_prmSvr, ConstMgr.KeyId))
            {
                lstSharding.Items.Add(lst.Value);
            }
            mongoCol = mongoDb.GetCollection("shards");
            cmbTagList.Items.Clear();
            foreach (var mShard in mongoCol.FindAllAs <BsonDocument>())
            {
                if (mShard.Contains("tags"))
                {
                    foreach (var tag in mShard.GetElement("tags").Value.AsBsonArray)
                    {
                        //严格意义上说,不应该在同一个路由里面出现两个同名的标签。
                        if (!_tagSet.ContainsKey(tag.ToString()))
                        {
                            _tagSet.Add(tag.ToString(), mShard.GetElement(ConstMgr.KeyId).Value.ToString());
                            cmbTagList.Items.Add(mShard.GetElement(ConstMgr.KeyId).Value + "." + tag);
                        }
                    }
                }
            }
        }
예제 #21
0
        /// <summary>
        ///     Drop MongoDB
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DelMongoDBToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var strTitle   = "Drop Database";
            var strMessage = "Are you really want to Drop current Database?";

            if (!GuiConfig.IsUseDefaultLanguage)
            {
                strTitle   = GuiConfig.GetText(TextType.DropDataBase);
                strMessage =
                    GuiConfig.GetText(TextType.DropDataBaseConfirm);
            }
            if (!MyMessageBox.ShowConfirm(strTitle, strMessage))
            {
                return;
            }
            var strTagPrefix = TagInfo.GetTagPath(ConstMgr.CollectionTag + ":" + RuntimeMongoDbContext.SelectTagData);
            var strDbName    = strTagPrefix.Split("/".ToCharArray())[(int)EnumMgr.PathLevel.Database];

            if (trvsrvlst.SelectedNode == null)
            {
                trvsrvlst.SelectedNode = null;
            }
            var rtnResult = Operater.DataBaseOpration(RuntimeMongoDbContext.SelectObjectTag, strDbName,
                                                      Operater.Oprcode.Drop);

            if (string.IsNullOrEmpty(rtnResult))
            {
                RefreshToolStripMenuItem_Click(sender, e);
                //关闭所有的相关视图
                MultiTabManger.SelectObjectTagPrefixDeleted(strTagPrefix);
            }
            else
            {
                MyMessageBox.ShowMessage("Error", "Error", rtnResult, true);
            }
        }
예제 #22
0
 /// <summary>
 ///     ReIndex
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ReIndexToolStripMenuItem_Click(object sender, EventArgs e)
 {
     Operater.ReIndex();
 }
예제 #23
0
 public UCLisItem()
 {
     InitializeComponent();
     operater = Operater.noThing;
 }
예제 #24
0
 /// <summary>
 ///     Compact
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void CompactToolStripMenuItem_Click(object sender, EventArgs e)
 {
     Operater.Compact();
 }
예제 #25
0
        /// <summary>
        ///     Datas the base handler.
        /// </summary>
        /// <param name="strNodeType">String node type.</param>
        /// <param name="e">E.</param>
        private void DataBaseHandler(string strNodeType, TreeNodeMouseClickEventArgs e)
        {
            RuntimeMongoDbContext.SelectObjectTag = e.Node.Tag.ToString();
            var roles = MongoUserEx.GetCurrentDbRoles(RuntimeMongoDbContext.CurrentMongoConnectionconfig.ConnectionName,
                                                      RuntimeMongoDbContext.GetCurrentDataBaseName());

            if (GuiConfig.IsUseDefaultLanguage)
            {
                statusStripMain.Items[0].Text = "Selected DataBase:" + RuntimeMongoDbContext.SelectTagData;
            }
            else
            {
                statusStripMain.Items[0].Text =
                    GuiConfig.GetText(TextType.SelectedDataBase) + ":" +
                    RuntimeMongoDbContext.SelectTagData;
            }
            //系统库不允许修改
            if (!Operater.IsSystemDataBase(RuntimeMongoDbContext.GetCurrentDataBaseName()))
            {
                if (RuntimeMongoDbContext.CurrentMongoConnectionconfig.AuthMode)
                {
                    //根据Roles确定删除数据库/创建数据集等的权限
                    DelMongoDBToolStripMenuItem.Enabled = MongoAction.JudgeRightByBuildInRole(roles,
                                                                                              MongoAction.ActionType.ServerAdministrationActionsDropDatabase);
                    CreateMongoCollectionToolStripMenuItem.Enabled = MongoAction.JudgeRightByBuildInRole(roles,
                                                                                                         MongoAction.ActionType.DatabaseManagementActionsCreateCollection);
                    CopyDatabasetoolStripMenuItem.Enabled = true;
                    InitGFSToolStripMenuItem.Enabled      = MongoAction.JudgeRightByBuildInRole(roles,
                                                                                                MongoAction.ActionType.MiscActionsInitGfs);
                    AddUserToolStripMenuItem.Enabled = MongoAction.JudgeRightByBuildInRole(roles,
                                                                                           MongoAction.ActionType.DatabaseManagementActionsCreateUser);
                    //If a Slave server can repair database @ Master-Slave is not sure ??
                    RepairDBToolStripMenuItem.Enabled = MongoAction.JudgeRightByBuildInRole(roles,
                                                                                            MongoAction.ActionType.ServerAdministrationActionsRepairDatabase);
                }
                else
                {
                    DelMongoDBToolStripMenuItem.Enabled            = true;
                    CreateMongoCollectionToolStripMenuItem.Enabled = true;
                    CreateViewtoolStripMenuItem.Enabled            = true;
                    CopyDatabasetoolStripMenuItem.Enabled          = true;
                    InitGFSToolStripMenuItem.Enabled  = true;
                    AddUserToolStripMenuItem.Enabled  = true;
                    RepairDBToolStripMenuItem.Enabled = true;
                }
            }

            AddDBCustomeRoleStripMenuItem.Enabled = true;

            //使用Shell:从实际情况来看,有一些Shell指令是不依赖与Admin数据库或者和数据库无关的
            //所以这里暂时开放所有的Shell指令。
            EvalJSToolStripMenuItem.Enabled = true;
            //备份数据库
            DumpDatabaseToolStripMenuItem.Enabled = true;
            //Profilling
            ProfillingLevelToolStripMenuItem.Enabled = true;
            if (strNodeType == ConstMgr.SingleDatabaseTag)
            {
                DelMongoDBToolStripMenuItem.Enabled = false;
            }
            DBStatusToolStripMenuItem.Enabled = true;
            if (e.Button == MouseButtons.Right)
            {
                contextMenuStripMain = new ContextMenuStrip();
                if (SystemManager.MonoMode)
                {
                    //悲催MONO不支持
                    var delMongoDb = DelMongoDBToolStripMenuItem.Clone();
                    delMongoDb.Click += DelMongoDBToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(delMongoDb);

                    var createMongoCollection = CreateMongoCollectionToolStripMenuItem.Clone();
                    createMongoCollection.Click += CreateMongoCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(createMongoCollection);

                    var createView = CreateViewtoolStripMenuItem.Clone();
                    createView.Click += CreateViewtoolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(createView);

                    var addUser = AddUserToolStripMenuItem.Clone();
                    addUser.Click += AddUserToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(addUser);

                    var evalJs = EvalJSToolStripMenuItem.Clone();
                    evalJs.Click += evalJSToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(evalJs);

                    var repairDb = RepairDBToolStripMenuItem.Clone();
                    repairDb.Click += RepairDBToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(repairDb);


                    var initGfs = InitGFSToolStripMenuItem.Clone();
                    initGfs.Click += InitGFSToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(initGfs);

                    var dumpDatabase = DumpDatabaseToolStripMenuItem.Clone();
                    dumpDatabase.Click += DumpDatabaseToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(dumpDatabase);

                    var restoreMongo = RestoreMongoToolStripMenuItem.Clone();
                    restoreMongo.Click += RestoreMongoToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(restoreMongo);


                    contextMenuStripMain.Items.Add(new ToolStripSeparator());

                    var profillingLevel = ProfillingLevelToolStripMenuItem.Clone();
                    profillingLevel.Click += profillingLevelToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(profillingLevel);

                    var dbStatus = DBStatusToolStripMenuItem.Clone();
                    dbStatus.Click += DBStatusToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(dbStatus);
                }
                else
                {
                    contextMenuStripMain.Items.Add(DelMongoDBToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(CreateMongoCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(CreateViewtoolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(CopyDatabasetoolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(AddUserToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(AddDBCustomeRoleStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(EvalJSToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(RepairDBToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(InitGFSToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(DumpDatabaseToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(RestoreMongoToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(new ToolStripSeparator());
                    contextMenuStripMain.Items.Add(ProfillingLevelToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(DBStatusToolStripMenuItem.Clone());
                }
                e.Node.ContextMenuStrip = contextMenuStripMain;
                contextMenuStripMain.Show(trvsrvlst.PointToScreen(e.Location));
            }
        }
예제 #26
0
        /// <summary>
        ///     数据树形被选择后(非TOP)
        /// </summary>
        /// <returns>是否能被修改[双击事件]</returns>
        private bool trvData_AfterSelect_NotTop()
        {
            if (MDataViewInfo.IsView)
            {
                return(false);                      //View是只读的
            }
            //非顶层可以删除的节点
            if (!Operater.IsSystemCollection(RuntimeMongoDbContext.GetCurrentCollection()) &&
                !MDataViewInfo.IsReadOnly &&
                !RuntimeMongoDbContext.GetCurrentCollection().IsCapped())
            {
                //普通数据:允许添加元素,不允许删除元素
                DropElementToolStripMenuItem.Enabled = true;
                CopyElementToolStripMenuItem.Enabled = true;
                CopyElementStripButton.Enabled       = true;
                CutElementToolStripMenuItem.Enabled  = true;
                CutElementStripButton.Enabled        = true;
                if (trvData.DatatreeView.SelectedNode.Nodes.Count != 0)
                {
                    //父节点
                    //1. 以Array_Mark结尾的数组
                    //2. Document
                    if (trvData.DatatreeView.SelectedNode.FullPath.EndsWith(ConstMgr.ArrayMark))
                    {
                        //列表的父节点
                        if (ElementHelper.CanPasteAsValue)
                        {
                            PasteElementToolStripMenuItem.Enabled = true;
                            PasteElementStripButton.Enabled       = true;
                        }
                    }
                    else
                    {
                        //文档的父节点
                        if (ElementHelper.CanPasteAsElement)
                        {
                            PasteElementToolStripMenuItem.Enabled = true;
                            PasteElementStripButton.Enabled       = true;
                        }
                    }
                    AddElementToolStripMenuItem.Enabled    = true;
                    ModifyElementToolStripMenuItem.Enabled = false;
                }
                else
                {
                    //子节点
                    //1.简单元素
                    //2.空的Array
                    //3.空的文档
                    //4.Array中的Value
                    BsonValue t;
                    if (trvData.DatatreeView.SelectedNode.Tag is BsonElement)
                    {
                        //子节点是一个元素,获得子节点的Value
                        t = ((BsonElement)trvData.DatatreeView.SelectedNode.Tag).Value;
                        if (t.IsBsonDocument || t.IsBsonArray)
                        {
                            //2.空的Array
                            //3.空的文档
                            ModifyElementToolStripMenuItem.Enabled = false;
                            AddElementToolStripMenuItem.Enabled    = true;
                            if (t.IsBsonDocument)
                            {
                                //3.空的文档
                                if (ElementHelper.CanPasteAsElement)
                                {
                                    PasteElementToolStripMenuItem.Enabled = true;
                                    PasteElementStripButton.Enabled       = true;
                                }
                            }
                            if (t.IsBsonArray)
                            {
                                //3.Array
                                if (ElementHelper.CanPasteAsValue)
                                {
                                    PasteElementToolStripMenuItem.Enabled = true;
                                    PasteElementStripButton.Enabled       = true;
                                }
                            }
                        }
                        else
                        {
                            //1.简单元素
                            ModifyElementToolStripMenuItem.Enabled = true;
                            AddElementToolStripMenuItem.Enabled    = false;
                        }
                    }
                    else
                    {
                        //子节点是一个Array的Value,获得Value
                        //4.Array中的Value
                        t = (BsonValue)trvData.DatatreeView.SelectedNode.Tag;
                        ModifyElementToolStripMenuItem.Enabled = true;
                        if (t.IsBsonArray || t.IsBsonDocument)
                        {
                            //当这个值是一个数组或者文档时候,仍然允许其添加子元素
                            AddElementToolStripMenuItem.Enabled = true;
                        }
                        else
                        {
                            AddElementToolStripMenuItem.Enabled = false;
                        }
                    }
                }
            }

            return(ModifyElementToolStripMenuItem.Enabled);
        }
        /// <summary>
        ///     将数据库放入Node
        /// </summary>
        /// <param name="strDbName"></param>
        /// <param name="mongoSvrKey"></param>
        /// <param name="client"></param>
        /// <returns></returns>
        public static TreeNode FillDataBaseInfoToTreeNode(string strDbName, string mongoSvrKey,
                                                          MongoClient client = null)
        {
            var strShowDbName = strDbName;

            if (!GuiConfig.IsUseDefaultLanguage)
            {
                if (StringResource.LanguageType == "Chinese")
                {
                    switch (strDbName)
                    {
                    case ConstMgr.DatabaseNameAdmin:
                        strShowDbName = "管理员权限(admin)";
                        break;

                    case "local":
                        strShowDbName = "本地(local)";
                        break;

                    case "config":
                        strShowDbName = "配置(config)";
                        break;
                    }
                }
            }
            var mongoDbNode = new TreeNode(strShowDbName);

            mongoDbNode.Tag = TagInfo.CreateTagInfo(mongoSvrKey, strDbName);

            var userNode = new TreeNode("User", (int)GetSystemIcon.MainTreeImageType.UserIcon,
                                        (int)GetSystemIcon.MainTreeImageType.UserIcon);

            userNode.Tag = ConstMgr.UserListTag + ":" + mongoSvrKey + "/" + strDbName + "/" +
                           ConstMgr.CollectionNameUser;
            mongoDbNode.Nodes.Add(userNode);

            var jsNode = new TreeNode("JavaScript", (int)GetSystemIcon.MainTreeImageType.JavaScriptList,
                                      (int)GetSystemIcon.MainTreeImageType.JavaScriptList);

            jsNode.Tag = ConstMgr.JavascriptTag + ":" + mongoSvrKey + "/" + strDbName + "/" +
                         ConstMgr.CollectionNameJavascript;
            mongoDbNode.Nodes.Add(jsNode);

            var gfsNode = new TreeNode("Grid File System", (int)GetSystemIcon.MainTreeImageType.Gfs,
                                       (int)GetSystemIcon.MainTreeImageType.Gfs);

            gfsNode.Tag = ConstMgr.GridFileSystemTag + ":" + mongoSvrKey + "/" + strDbName + "/" +
                          ConstMgr.CollectionNameGfsFiles;
            mongoDbNode.Nodes.Add(gfsNode);

            var mongoSysColListNode = new TreeNode("Collections(System)",
                                                   (int)GetSystemIcon.MainTreeImageType.SystemCol, (int)GetSystemIcon.MainTreeImageType.SystemCol);

            mongoSysColListNode.Tag = ConstMgr.SystemCollectionListTag + ":" + mongoSvrKey + "/" + strDbName;
            mongoDbNode.Nodes.Add(mongoSysColListNode);

            var mongoColListNode = new TreeNode("Collections(General)",
                                                (int)GetSystemIcon.MainTreeImageType.CollectionList,
                                                (int)GetSystemIcon.MainTreeImageType.CollectionList);

            mongoColListNode.Tag = ConstMgr.CollectionListTag + ":" + mongoSvrKey + "/" + strDbName;
            var colNameList = GetConnectionInfo.GetCollectionList(client, strDbName);

            //Collection按照名称排序
            colNameList.Sort((x, y) => {
                return(x.GetElement("name").Value.ToString().CompareTo(y.GetElement("name").Value.ToString()));
            });
            foreach (var colDoc in colNameList)
            {
                var strColName = colDoc.GetElement("name").Value.ToString();
                switch (strColName)
                {
                case ConstMgr.CollectionNameUser:
                    //system.users,fs,system.js这几个系统级别的Collection不需要放入
                    break;

                case ConstMgr.CollectionNameJavascript:
                    //foreach (var doc in  MongoHelper.NewUtility.GetConnectionInfo.GetCollectionInfo(client, strDBName, ConstMgr.COLLECTION_NAME_JAVASCRIPT).Find<BsonDocument>(null,null))
                    //{
                    //    var js = new TreeNode(doc.GetValue(ConstMgr.KEY_ID).ToString());
                    //    js.ImageIndex = (int) GetSystemIcon.MainTreeImageType.JsDoc;
                    //    js.SelectedImageIndex = (int) GetSystemIcon.MainTreeImageType.JsDoc;
                    //    js.Tag = ConstMgr.JAVASCRIPT_DOC_TAG + ":" + mongoSvrKey + "/" + strDBName + "/" +
                    //             ConstMgr.COLLECTION_NAME_JAVASCRIPT + "/" + doc.GetValue(ConstMgr.KEY_ID);
                    //    JsNode.Nodes.Add(js);
                    //}

                    FillJavaScriptInfoToTreeNode(jsNode,
                                                 GetConnectionInfo.GetCollectionInfo(client, strDbName, strColName), mongoSvrKey, strDbName);

                    break;

                default:
                    TreeNode mongoColNode;
                    try
                    {
                        var col = GetConnectionInfo.GetCollectionInfo(client, strDbName, strColName);
                        mongoColNode = FillCollectionInfoToTreeNode(col, mongoSvrKey);
                    }
                    catch (Exception ex)
                    {
                        mongoColNode                    = new TreeNode(strColName + "[exception:]");
                        mongoColNode.ImageIndex         = (int)GetSystemIcon.MainTreeImageType.Err;
                        mongoColNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Err;
                        Utility.ExceptionDeal(ex);
                    }
                    if (Operater.IsSystemCollection(strDbName, strColName))
                    {
                        switch (strColName)
                        {
                        case ConstMgr.CollectionNameGfsChunks:
                        case ConstMgr.CollectionNameGfsFiles:
                            gfsNode.Nodes.Add(mongoColNode);
                            break;

                        default:
                            mongoSysColListNode.Nodes.Add(mongoColNode);
                            break;
                        }
                    }
                    else
                    {
                        mongoColListNode.Nodes.Add(mongoColNode);
                    }
                    break;
                }
            }
            mongoDbNode.Nodes.Add(mongoColListNode);
            mongoDbNode.ImageIndex         = (int)GetSystemIcon.MainTreeImageType.Database;
            mongoDbNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Database;
            return(mongoDbNode);
        }
예제 #28
0
        /// <summary>
        ///     导出到Excel
        /// </summary>
        /// <param name="dataList"></param>
        /// <param name="filename"></param>
        private static void Export(List <BsonDocument> dataList, string filename, bool IsAutoClose = false)
        {
            var     schame   = MongoHelper.GetCollectionSchame(_processCollection);
            dynamic excelObj = Interaction.CreateObject("Excel.Application");

            excelObj.Visible = true;
            dynamic workbook;
            dynamic worksheet;
            var     isNew = false;

            if (File.Exists(filename))
            {
                workbook  = excelObj.Workbooks.Open(filename);
                worksheet = workbook.Sheets(1);
            }
            else
            {
                isNew     = true;
                workbook  = excelObj.WorkBooks.Add();
                worksheet = workbook.Sheets(1);
            }
            worksheet.Select();
            worksheet.Name = _processCollection.Name;
            var rowCount = 1;
            var colCount = 1;

            foreach (var item in schame)
            {
                worksheet.Cells(rowCount, colCount).Value = item;
                colCount++;
            }
            rowCount++;
            foreach (var docItem in dataList)
            {
                colCount = 1;
                var isSystem = Operater.IsSystemCollection(_processCollection);
                if (!isSystem)
                {
                    BsonElement id;
                    docItem.TryGetElement(ConstMgr.KeyId, out id);
                    worksheet.Cells(rowCount, colCount).Value = !(id.Value is BsonNull)
                        ? docItem.GetValue(ConstMgr.KeyId).ToString()
                        : "[Empty]";
                }
                else
                {
                    worksheet.Cells(rowCount, colCount).Value = docItem.GetValue(schame[0]).ToString();
                }
                //OtherItems
                for (var i = isSystem ? 1 : 0; i < schame.Count; i++)
                {
                    if (schame[i] == ConstMgr.KeyId)
                    {
                        continue;
                    }
                    BsonValue val;
                    docItem.TryGetValue(schame[i], out val);
                    worksheet.Cells(rowCount, i + 1).Value = val == null
                        ? string.Empty
                        : ViewHelper.ConvertToString(val);
                }
                rowCount++;
            }

            if (IsAutoClose)
            {
                if (isNew)
                {
                    workbook.SaveAs(filename);
                }
                else
                {
                    workbook.Save();
                }
                workbook.Close();
                excelObj = null;
            }
        }
예제 #29
0
        /// <summary>
        ///     将数据库放入Node
        /// </summary>
        /// <param name="strDbName"></param>
        /// <param name="mongoSvrKey"></param>
        /// <param name="client"></param>
        /// <returns></returns>
        public static TreeNode FillDataBaseInfoToTreeNode(string strDbName, string mongoSvrKey,
                                                          MongoClient client = null)
        {
            var strShowDbName = strDbName;

            switch (strDbName)
            {
            case ConstMgr.DatabaseNameAdmin:
                strShowDbName = GuiConfig.GetText("admin", "databasename.admin") + "(" + strDbName + ")";
                break;

            case "local":
                strShowDbName = GuiConfig.GetText("local", "databasename.local") + "(" + strDbName + ")";
                break;

            case "config":
                strShowDbName = GuiConfig.GetText("config", "databasename.config") + "(" + strDbName + ")";
                break;
            }
            var mongoDbNode = new TreeNode(strShowDbName);

            mongoDbNode.Tag = TagInfo.CreateTagInfo(mongoSvrKey, strDbName);

            //User Node
            var userNode = new TreeNode(GuiConfig.GetText("Users", "collectionName.system.users"), (int)GetSystemIcon.MainTreeImageType.UserIcon,
                                        (int)GetSystemIcon.MainTreeImageType.UserIcon);

            userNode.Tag = ConstMgr.UserListTag + ":" + mongoSvrKey + "/" + strDbName + "/" +
                           ConstMgr.CollectionNameUsers;
            if (client.GetServer().GetDatabase(strDbName).CollectionExists(ConstMgr.CollectionNameUsers))
            {
                var  usercol  = ConnectionInfo.GetICollection(client, strDbName, ConstMgr.CollectionNameUsers);
                long colCount = ConnectionInfo.GetCollectionCnt(usercol);
                userNode.Text += "(" + colCount + ")";
            }
            mongoDbNode.Nodes.Add(userNode);

            var roleNode = new TreeNode(GuiConfig.GetText("Roles", "collectionName.system.roles"), (int)GetSystemIcon.MainTreeImageType.UserIcon,
                                        (int)GetSystemIcon.MainTreeImageType.UserIcon);

            roleNode.Tag = ConstMgr.RoleListTag + ":" + mongoSvrKey + "/" + strDbName + "/" +
                           ConstMgr.CollectionNameRoles;
            if (client.GetServer().GetDatabase(strDbName).CollectionExists(ConstMgr.CollectionNameRoles))
            {
                var  rolescol = ConnectionInfo.GetICollection(client, strDbName, ConstMgr.CollectionNameRoles);
                long colCount = ConnectionInfo.GetCollectionCnt(rolescol);
                roleNode.Text += "(" + colCount + ")";
            }
            mongoDbNode.Nodes.Add(roleNode);


            //JsNode
            var jsNode = new TreeNode(GuiConfig.GetText("Javascript", "collectionName.system.Javascript"), (int)GetSystemIcon.MainTreeImageType.JavaScriptList,
                                      (int)GetSystemIcon.MainTreeImageType.JavaScriptList);

            jsNode.Tag = ConstMgr.JavascriptTag + ":" + mongoSvrKey + "/" + strDbName + "/" +
                         ConstMgr.CollectionNameJavascript;
            mongoDbNode.Nodes.Add(jsNode);

            //GFS Node
            var gfsNode = new TreeNode(GuiConfig.GetText("Grid File System"), (int)GetSystemIcon.MainTreeImageType.Gfs,
                                       (int)GetSystemIcon.MainTreeImageType.Gfs);

            gfsNode.Tag = ConstMgr.GridFileSystemTag + ":" + mongoSvrKey + "/" + strDbName + "/" +
                          ConstMgr.CollectionNameGfsFiles;
            if (client.GetServer().GetDatabase(strDbName).CollectionExists(ConstMgr.CollectionNameGfsFiles))
            {
                var  gfscol   = ConnectionInfo.GetICollection(client, strDbName, ConstMgr.CollectionNameGfsFiles);
                long colCount = ConnectionInfo.GetCollectionCnt(gfscol);
                gfsNode.Text += "(" + colCount + ")";
            }
            mongoDbNode.Nodes.Add(gfsNode);

            var mongoSysColListNode = new TreeNode("Collections(System)",
                                                   (int)GetSystemIcon.MainTreeImageType.SystemCol, (int)GetSystemIcon.MainTreeImageType.SystemCol);

            mongoSysColListNode.Tag = ConstMgr.SystemCollectionListTag + ":" + mongoSvrKey + "/" + strDbName;
            mongoDbNode.Nodes.Add(mongoSysColListNode);

            var mongoColListNode = new TreeNode("Collections(General)",
                                                (int)GetSystemIcon.MainTreeImageType.CollectionList,
                                                (int)GetSystemIcon.MainTreeImageType.CollectionList);

            mongoColListNode.Tag = ConstMgr.CollectionListTag + ":" + mongoSvrKey + "/" + strDbName;
            var colNameList = ConnectionInfo.GetCollectionInfoList(client, strDbName);

            //Collection按照名称排序
            colNameList.Sort((x, y) =>
            {
                return(x.GetElement("name").Value.ToString().CompareTo(y.GetElement("name").Value.ToString()));
            });

            var viewlist = ConnectionInfo.GetViewInfoList(client, strDbName);

            foreach (var colDoc in colNameList)
            {
                var strColName = colDoc.GetElement("name").Value.ToString();
                if (viewlist.Contains(strDbName + "." + strColName))
                {
                    continue;
                }
                switch (strColName)
                {
                case ConstMgr.CollectionNameSystemViews:
                    //视图
                    TreeNode mongoViewNode;
                    var      ViewCol = ConnectionInfo.GetICollection(client, strDbName, strColName);
                    mongoViewNode     = FillViewInfoToTreeNode(ViewCol, ConstMgr.ViewTag + ":" + mongoSvrKey + "/" + strDbName + "/");
                    mongoViewNode.Tag = ConstMgr.ViewListTag + ":" + mongoSvrKey + "/" + strDbName;
                    mongoDbNode.Nodes.Add(mongoViewNode);
                    break;

                case ConstMgr.CollectionNameUsers:
                case ConstMgr.CollectionNameRoles:
                    break;

                case ConstMgr.CollectionNameJavascript:
                    FillJavaScriptInfoToTreeNode(jsNode, ConnectionInfo.GetICollection(client, strDbName, strColName), mongoSvrKey, strDbName);
                    break;

                case ConstMgr.CollectionNameGfsChunks:
                case ConstMgr.CollectionNameGfsFiles:
                    var gfscol = ConnectionInfo.GetICollection(client, strDbName, strColName);
                    gfsNode.Nodes.Add(FillCollectionInfoToTreeNode(gfscol, mongoSvrKey));
                    break;

                default:
                    TreeNode mongoColNode;
                    try
                    {
                        var col = ConnectionInfo.GetICollection(client, strDbName, strColName);
                        mongoColNode = FillCollectionInfoToTreeNode(col, mongoSvrKey);
                    }
                    catch (Exception ex)
                    {
                        mongoColNode                    = new TreeNode(strColName + "[exception:]");
                        mongoColNode.ImageIndex         = (int)GetSystemIcon.MainTreeImageType.Err;
                        mongoColNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Err;
                        Utility.ExceptionDeal(ex);
                    }
                    if (Operater.IsSystemCollection(strDbName, strColName))
                    {
                        mongoSysColListNode.Nodes.Add(mongoColNode);
                    }
                    else
                    {
                        mongoColListNode.Nodes.Add(mongoColNode);
                    }
                    break;
                }
            }
            mongoDbNode.Nodes.Add(mongoColListNode);
            mongoDbNode.ImageIndex         = (int)GetSystemIcon.MainTreeImageType.Database;
            mongoDbNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Database;
            return(mongoDbNode);
        }
예제 #30
0
        /// <summary>
        ///     Collection  Hanlder.
        /// </summary>
        /// <param name="e">E.</param>
        private void CollectionHandler(TreeNodeMouseClickEventArgs e)
        {
            if (GuiConfig.IsUseDefaultLanguage)
            {
                statusStripMain.Items[0].Text = "Selected Collection:" + RuntimeMongoDbContext.SelectTagData;
            }
            else
            {
                statusStripMain.Items[0].Text =
                    GuiConfig.GetText(TextType.SelectedCollection) + ":" +
                    RuntimeMongoDbContext.SelectTagData;
            }

            var mongoCol = RuntimeMongoDbContext.GetCurrentCollection();

            //解禁 删除数据集
            if (!Operater.IsSystemCollection())
            {
                //系统数据库无法删除!!
                if (!RuntimeMongoDbContext.CurrentMongoConnectionconfig.IsReadOnly)
                {
                    DelMongoCollectionToolStripMenuItem.Enabled = true;
                    RenameCollectionToolStripMenuItem.Enabled   = true;
                }
            }
            if (!RuntimeMongoDbContext.CurrentMongoConnectionconfig.IsReadOnly)
            {
                ImportCollectionToolStripMenuItem.Enabled = true;
                CompactToolStripMenuItem.Enabled          = true;
            }
            if (!Operater.IsSystemCollection() &&
                !RuntimeMongoDbContext.CurrentMongoConnectionconfig.IsReadOnly)
            {
                IndexManageToolStripMenuItem.Enabled = true;
                ReIndexToolStripMenuItem.Enabled     = true;
            }
            DumpCollectionToolStripMenuItem.Enabled   = true;
            ExportCollectionToolStripMenuItem.Enabled = true;
            AggregationToolStripMenuItem.Enabled      = true;
            ViewDataToolStripMenuItem.Enabled         = true;
            CollectionStatusToolStripMenuItem.Enabled = true;
            ValidateToolStripMenuItem.Enabled         = true;
            ExportToFileToolStripMenuItem.Enabled     = true;

            if (!mongoCol.IsCapped())
            {
                ConvertToCappedtoolStripMenuItem.Enabled = true;
            }

            if (e.Button == MouseButtons.Right)
            {
                contextMenuStripMain = new ContextMenuStrip();
                if (SystemManager.MonoMode)
                {
                    //悲催MONO不支持
                    var delMongoCollection = DelMongoCollectionToolStripMenuItem.Clone();
                    delMongoCollection.Click += DelMongoCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(delMongoCollection);

                    var renameCollection = RenameCollectionToolStripMenuItem.Clone();
                    renameCollection.Click += RenameCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(renameCollection);

                    var dumpCollection = DumpCollectionToolStripMenuItem.Clone();
                    dumpCollection.Click += DumpCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(dumpCollection);

                    var restoreMongo = RestoreMongoToolStripMenuItem.Clone();
                    restoreMongo.Click += RestoreMongoToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(restoreMongo);

                    var importCollection = ImportCollectionToolStripMenuItem.Clone();
                    importCollection.Click += ImportCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(importCollection);

                    var exportCollection = ExportCollectionToolStripMenuItem.Clone();
                    exportCollection.Click += ExportCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(exportCollection);

                    var compact = CompactToolStripMenuItem.Clone();
                    compact.Click += CompactToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(compact);

                    contextMenuStripMain.Items.Add(new ToolStripSeparator());

                    var viewData = ViewDataToolStripMenuItem.Clone();
                    viewData.Click += (x, y) => ViewDataObj();
                    contextMenuStripMain.Items.Add(viewData);

                    var aggregationMenu = AggregationToolStripMenuItem.Clone();

                    var distinct = distinctToolStripMenuItem.Clone();
                    distinct.Click += distinctToolStripMenuItem_Click;
                    aggregationMenu.DropDownItems.Add(distinct);

                    var mapReduce = mapReduceToolStripMenuItem.Clone();
                    mapReduce.Click += mapReduceToolStripMenuItem_Click;
                    aggregationMenu.DropDownItems.Add(mapReduce);

                    contextMenuStripMain.Items.Add(aggregationMenu);
                    contextMenuStripMain.Items.Add(new ToolStripSeparator());

                    var indexManage = IndexManageToolStripMenuItem.Clone();
                    indexManage.Click += IndexManageToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(indexManage);

                    var reIndex = ReIndexToolStripMenuItem.Clone();
                    reIndex.Click += ReIndexToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(reIndex);

                    contextMenuStripMain.Items.Add(new ToolStripSeparator());

                    var collectionStatus = CollectionStatusToolStripMenuItem.Clone();
                    collectionStatus.Click += CollectionStatusToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(collectionStatus);
                }
                else
                {
                    contextMenuStripMain.Items.Add(DelMongoCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(RenameCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ConvertToCappedtoolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(DumpCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(RestoreMongoToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ImportCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ExportCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ExportToFileToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(CompactToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(new ToolStripSeparator());
                    contextMenuStripMain.Items.Add(ViewDataToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(AggregationToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(new ToolStripSeparator());
                    contextMenuStripMain.Items.Add(IndexManageToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ReIndexToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(new ToolStripSeparator());
                    contextMenuStripMain.Items.Add(CollectionStatusToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ValidateToolStripMenuItem.Clone());
                }
                e.Node.ContextMenuStrip = contextMenuStripMain;
                contextMenuStripMain.Show(trvsrvlst.PointToScreen(e.Location));
            }
            //PlugIn
            foreach (ToolStripMenuItem item in plugInToolStripMenuItem.DropDownItems)
            {
                if (PlugIn.PlugInList[item.Tag.ToString()].RunLv == PlugInBase.PathLv.CollectionLv)
                {
                    item.Enabled = true;
                }
            }
        }