Пример #1
0
 /// <summary>
 ///     CollectionList右键事件
 /// </summary>
 /// <param name="e"></param>
 private void CollectionListHandler(TreeNodeMouseClickEventArgs e)
 {
     if (e.Button == MouseButtons.Right)
     {
         if (!Operater.IsSystemDataBase(RuntimeMongoDbContext.GetCurrentDataBaseName()))
         {
             CreateMongoCollectionToolStripMenuItem.Enabled = true;
         }
         contextMenuStripMain = new ContextMenuStrip();
         if (SystemManager.MonoMode)
         {
             var createMongoCollection = CreateMongoCollectionToolStripMenuItem.Clone();
             createMongoCollection.Click += CreateMongoCollectionToolStripMenuItem_Click;
             contextMenuStripMain.Items.Add(createMongoCollection);
         }
         else
         {
             contextMenuStripMain.Items.Add(CreateMongoCollectionToolStripMenuItem.Clone());
         }
         e.Node.ContextMenuStrip = contextMenuStripMain;
         contextMenuStripMain.Show(trvsrvlst.PointToScreen(e.Location));
     }
 }
Пример #2
0
        public FrmStageBuilder()
        {
            InitializeComponent();
            txtLimit.Enabled  = chkLimit.Checked;
            txtSkip.Enabled   = chkSkip.Checked;
            txtSample.Enabled = chkSample.Checked;

            txtLimit.KeyPress  += NumberTextBox.NumberTextInt_KeyPress;
            txtSkip.KeyPress   += NumberTextBox.NumberTextInt_KeyPress;
            txtSample.KeyPress += NumberTextBox.NumberTextInt_KeyPress;

            var columnList = MongoHelper.GetCollectionSchame(RuntimeMongoDbContext.GetCurrentCollection());

            foreach (var fieldname in columnList)
            {
                cmbSortByCount.Items.Add("$" + fieldname);
                cmbUnwind.Items.Add("$" + fieldname);
            }

            chkSkip.CheckedChanged   += (x, y) => { txtSkip.Enabled = chkSkip.Checked; };
            chkLimit.CheckedChanged  += (x, y) => { txtLimit.Enabled = chkLimit.Checked; };
            chkSample.CheckedChanged += (x, y) => { txtSample.Enabled = chkSample.Checked; };
        }
Пример #3
0
        /// <summary>
        ///     运行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdRun_Click(object sender, EventArgs e)
        {
            var map    = new BsonJavaScript(ctlMapFunction.Context);
            var reduce = new BsonJavaScript(ctlReduceFunction.Context);
            //TODO:这里可能会超时,失去响应
            //需要设置SocketTimeOut
            var args = new MapReduceArgs();

            args.MapFunction    = map;
            args.ReduceFunction = reduce;
            try
            {
                var mMapReduceResult = RuntimeMongoDbContext.GetCurrentCollection().MapReduce(args);
                UiHelper.FillDataToTreeView("MapReduce Result", trvResult, mMapReduceResult.Response);
                trvResult.DatatreeView.BeginUpdate();
                trvResult.DatatreeView.ExpandAll();
                trvResult.DatatreeView.EndUpdate();
            }
            catch (Exception ex)
            {
                Utility.ExceptionDeal(ex);
            }
        }
Пример #4
0
        public static string Distinct(string strKey, List <DataFilter.QueryConditionInputItem> distinctConditionList)
        {
            var strResult  = string.Empty;
            var resultList = RuntimeMongoDbContext.GetCurrentCollection()
                             .Distinct(strKey, QueryHelper.GetQuery(distinctConditionList)).ToList();

            resultList.Sort();
            //防止错误的条件造成的海量数据
            var count = 0;

            foreach (var item in resultList)
            {
                if (count == 1000)
                {
                    strResult = "Too many result,Display first 1000 records" + Environment.NewLine + strResult;
                    break;
                }
                strResult += item.ToJson(MongoHelper.JsonWriterSettings) + Environment.NewLine;
                count++;
            }
            strResult = "Distinct Count: " + resultList.Count + Environment.NewLine + Environment.NewLine + strResult;
            return(strResult);
        }
Пример #5
0
        /// <summary>
        ///     插入JS到系统JS库
        /// </summary>
        /// <param name="jsName"></param>
        /// <param name="jsCode"></param>
        public static string CreateNewJavascript(string jsName, string jsCode)
        {
            var jsCol = RuntimeMongoDbContext.GetCurrentCollection();

            //标准的JS库格式未知
            if (QueryHelper.IsExistByKey(jsName))
            {
                return(string.Empty);
            }
            CommandResult result;

            try
            {
                result =
                    new CommandResult(
                        jsCol.Insert(new BsonDocument().Add(ConstMgr.KeyId, jsName).Add("value", jsCode)).Response);
            }
            catch (MongoCommandException ex)
            {
                result = new CommandResult(ex.Result);
            }
            return(result.Response["err"] == BsonNull.Value ? string.Empty : result.Response["err"].ToString());
        }
Пример #6
0
        /// <summary>
        ///     保存
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdSave_Click(object sender, EventArgs e)
        {
            var savefile = new SaveFileDialog {
                Filter = Utility.XmlFilter
            };

            if (savefile.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            // 设置DataFilter
            if (string.IsNullOrEmpty(txtSql.Text))
            {
                //设置DataFilter
                SetCurrDataFilter();
            }
            else
            {
                _currentDataViewInfo.MDataFilter = SqlHelper.ConvertQuerySql(txtSql.Text,
                                                                             RuntimeMongoDbContext.GetCurrentCollection());
            }
            _currentDataViewInfo.MDataFilter.SaveFilter(savefile.FileName);
        }
Пример #7
0
 /// <summary>
 ///     鼠标动作(顶层)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void trvData_MouseClick_Top(object sender, MouseEventArgs e)
 {
     if (_isNeedChangeNode)
     {
         //在节点展开和关闭后,不能使用这个方法来重新设定SelectedNode
         trvData.DatatreeView.SelectedNode = trvData.DatatreeView.GetNodeAt(e.Location);
     }
     _isNeedChangeNode = true;
     if (trvData.DatatreeView.SelectedNode == null)
     {
         return;
     }
     SetCurrentDocument(trvData.DatatreeView.SelectedNode, RuntimeMongoDbContext.GetCurrentCollection());
     if (trvData.DatatreeView.SelectedNode.Level == 0)
     {
         if (e.Button == MouseButtons.Right)
         {
             contextMenuStripMain = new ContextMenuStrip();
             //允许删除
             DelSelectRecordToolToolStripMenuItem.Enabled = true;
             contextMenuStripMain.Items.Add(DelSelectRecordToolToolStripMenuItem.Clone());
             //允许添加
             AddElementToolStripMenuItem.Enabled = true;
             contextMenuStripMain.Items.Add(AddElementToolStripMenuItem.Clone());
             //允许粘贴
             PasteElementToolStripMenuItem.Enabled = true;
             contextMenuStripMain.Items.Add(PasteElementToolStripMenuItem.Clone());
             trvData.DatatreeView.ContextMenuStrip = contextMenuStripMain;
             contextMenuStripMain.Show(trvData.DatatreeView.PointToScreen(e.Location));
         }
     }
     else
     {
         //非顶层元素
         trvData_MouseClick_NotTop(e);
     }
 }
Пример #8
0
        /// <summary>
        /// </summary>
        /// <param name="trvSvrStatus"></param>
        /// <param name="mongoConnClientLst"></param>
        public static void FillClientStatusToList(CtlTreeViewColumns trvSvrStatus,
                                                  Dictionary <string, MongoClient> mongoConnClientLst)
        {
            var srvDocList = new List <BsonDocument>();

            foreach (var mongoSvrKey in mongoConnClientLst.Keys)
            {
                try
                {
                    var mongoClient = mongoConnClientLst[mongoSvrKey];
                    //flydreamer提供的代码
                    // 感谢 魏琼东 的Bug信息,一些命令必须以Admin执行
                    if (RuntimeMongoDbContext.GetServerConfigBySvrPath(mongoSvrKey).LoginAsAdmin)
                    {
                        var adminDb = mongoClient.GetDatabase(ConstMgr.DatabaseNameAdmin);
                        //Can't Convert IMongoDB To MongoDB
                        var command = new CommandDocument {
                            { CommandHelper.ServerStatusCommand.CommandString, 1 }
                        };

                        var serverStatusDoc =
                            CommandHelper.ExecuteMongoDBCommand(command, adminDb).Response;
                        srvDocList.Add(serverStatusDoc);
                    }
                }
                catch (Exception ex)
                {
                    Utility.ExceptionDeal(ex);
                }
            }
            UiHelper.FillDataToTreeView("Server Status", trvSvrStatus, srvDocList, 0);
            //打开第一层
            foreach (TreeNode item in trvSvrStatus.DatatreeView.Nodes)
            {
                item.Expand();
            }
        }
Пример #9
0
        /// <summary>
        ///     拖曳终止
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lstData_DragDrop(object sender, DragEventArgs e)
        {
            Array UploadfileList = (Array)e.Data.GetData(DataFormats.FileDrop);

            if (!MyMessageBox.ShowConfirm("UploadFile", "是否上传" + UploadfileList.Length + "个文件"))
            {
                return;
            }
            var opt = new Gfs.UpLoadFileOption();
            var frm = new FrmGfsOption();

            frm.ShowDialog();
            opt.AlreadyOpt             = frm.Option;
            opt.DirectorySeparatorChar = frm.DirectorySeparatorChar;
            opt.FileNameOpt            = frm.Filename;
            opt.IgnoreSubFolder        = frm.IgnoreSubFolder;
            var count = 0;

            foreach (string UploadFilename in UploadfileList)
            {
                if (File.Exists(UploadFilename))
                {
                    Gfs.UpLoadFile(UploadFilename, opt, RuntimeMongoDbContext.GetCurrentDataBase());
                    count++;
                }
                else
                {
                    if (Directory.Exists(UploadFilename))
                    {
                        var uploadDir = new DirectoryInfo(UploadFilename);
                        UploadFolder(uploadDir, ref count, opt);
                    }
                }
            }
            RefreshGui();
            MyMessageBox.ShowMessage("Upload", "Upload Completed! Upload Files Count: " + count);
        }
Пример #10
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);
                        }
                    }
                }
            }
        }
Пример #11
0
        /// <summary>
        /// </summary>
        /// <param name="uploadDir"></param>
        /// <param name="fileCount"></param>
        /// <param name="opt"></param>
        /// <returns>是否继续执行后续的所有操作</returns>
        private bool UploadFolder(DirectoryInfo uploadDir, ref int fileCount, Gfs.UpLoadFileOption opt)
        {
            foreach (var file in uploadDir.GetFiles())
            {
                var rtn = Gfs.UpLoadFile(file.FullName, opt, RuntimeMongoDbContext.GetCurrentDataBase());
                switch (rtn)
                {
                case Gfs.UploadResult.Complete:
                    fileCount++;
                    break;

                case Gfs.UploadResult.Skip:
                    if (opt.AlreadyOpt == Gfs.EnumGfsAlready.Stop)
                    {
                        //这个操作返回为False,停止包括父亲过程在内的所有操作
                        return(false);
                    }
                    break;

                case Gfs.UploadResult.Exception:
                    return(MyMessageBox.ShowConfirm("Upload Exception", "Is Continue?"));
                }
            }
            if (!opt.IgnoreSubFolder)
            {
                foreach (var dir in uploadDir.GetDirectories())
                {
                    //递归文件夹操作,如果下层有任何停止的意愿,则立刻停止,并且使上层也立刻停止
                    var isContinue = UploadFolder(dir, ref fileCount, opt);
                    if (!isContinue)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
Пример #12
0
        /// <summary>
        ///     数据绑定
        /// </summary>
        private void DataBind()
        {
            ChangeEnable(false);

            try
            {
                //数据来源绑定
                var db       = RuntimeMongoDbContext.GetCurrentDataBase();
                var treeNode = new TreeNode(db.Name);
                foreach (var name in db.GetCollectionNames())
                {
                    treeNode.Nodes.Add(name);
                }
                TreeNodeBind(treeNode);

                ComboxBind(comboBoxServer, RuntimeMongoDbContext.MongoConnSvrLst);
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }

            ChangeEnable(true);
        }
Пример #13
0
        /// <summary>
        /// </summary>
        /// <param name="mIsShow"></param>
        public void InitByCurrentCollection(bool mIsShow)
        {
            var columnList =
                MongoHelper.GetCollectionSchame(RuntimeMongoDbContext.GetCurrentCollection());
            var fieldList = new List <DataFilter.QueryFieldItem>();

            foreach (var item in columnList)
            {
                //输出配置的初始化
                var queryFieldItem = new DataFilter.QueryFieldItem()
                {
                    ColName  = item,
                    IsShow   = mIsShow,
                    SortType = DataFilter.SortType.NoSort
                };
                if (queryFieldItem.ColName == ConstMgr.KeyId)
                {
                    queryFieldItem.IsShow = true;
                }
                fieldList.Add(queryFieldItem);
            }
            _mQueryFieldList = fieldList;
            SetFieldList();
        }
Пример #14
0
        private void cmdGeoNear_Click(object sender, EventArgs e)
        {
            BsonDocument mGeoNearAs = null;
            bool         IsHaystack = chkHaystack.Checked;

            try
            {
                if (IsHaystack)
                {
                    var geoSearchOption = new GeoHaystackSearchArgs();
                    geoSearchOption.MaxDistance = double.Parse(NumMaxDistance.Text);
                    geoSearchOption.Limit       = (int)NumResultCount.Value;
                    geoSearchOption.Near        = new XYPoint(double.Parse(NumGeoX.Text), double.Parse(NumGeoY.Text));
                    //geoSearch
                    mGeoNearAs = RuntimeMongoDbContext.GetCurrentCollection().GeoHaystackSearchAs <BsonDocument>(geoSearchOption).Response;
                }
                else
                {
                    var geoOption = new GeoNearArgs();
                    geoOption.DistanceMultiplier = double.Parse(NumDistanceMultiplier.Text);
                    geoOption.MaxDistance        = double.Parse(NumMaxDistance.Text);
                    geoOption.Spherical          = chkSpherical.Checked;
                    geoOption.Limit = (int)NumResultCount.Value;
                    geoOption.Near  = new XYPoint(double.Parse(NumGeoX.Text), double.Parse(NumGeoY.Text));
                    //geoNear
                    mGeoNearAs = RuntimeMongoDbContext.GetCurrentCollection().GeoNearAs <BsonDocument>(geoOption).Response;
                }
            }
            catch (Exception ex)
            {
                Utility.ExceptionDeal(ex);
                return;
            }
            UiHelper.FillDataToTreeView("Result", trvGeoResult, mGeoNearAs);
            trvGeoResult.DatatreeView.Nodes[0].Expand();
        }
Пример #15
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,
                                                       RuntimeMongoDbContext.GetCurrentJavaScript());
         };
         if (!GuiConfig.IsUseDefaultLanguage)
         {
             cmdSave.Text      = GuiConfig.GetText(TextType.CommonSave);
             cmdSaveLocal.Text =
                 GuiConfig.GetText(TextType.CommonSaveLocal);
             cmdLoadLocal.Text =
                 GuiConfig.GetText(TextType.QueryActionLoad);
         }
     }
 }
Пример #16
0
 ///// <summary>
 ///// 数据树形被选择后(TOP)
 ///// </summary>
 ///// <param name="sender"></param>
 ///// <param name="e"></param>
 private void trvData_AfterSelect_Top(object sender, TreeViewEventArgs e)
 {
     //InitControlsEnable();
     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();
     }
 }
Пример #17
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;
                }
            }
        }
Пример #18
0
 /// <summary>
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void trvData_AfterCollapse(object sender, TreeViewEventArgs e)
 {
     trvData.DatatreeView.SelectedNode = e.Node;
     _isNeedChangeNode = false;
     SetCurrentDocument(e.Node, RuntimeMongoDbContext.GetCurrentCollection());
 }
Пример #19
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);
        }
Пример #20
0
        /// <summary>
        ///     确认
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdOK_Click(object sender, EventArgs e)
        {
            var mongoCol  = RuntimeMongoDbContext.GetCurrentCollection();
            var query     = QueryHelper.GetQuery(GroupConditionList);
            var groupdoc  = new GroupByDocument();
            var chartTite = string.Empty;

            foreach (CheckBox item in panColumn.Controls)
            {
                if (!item.Checked)
                {
                    continue;
                }
                groupdoc.Add(item.Name, true);
                chartTite += item.Name + ",";
            }
            chartTite = chartTite.TrimEnd(",".ToCharArray());
            var initial = new BsonDocument();

            for (var i = 0; i < _conditionCount; i++)
            {
                var ctl = (ctlBsonValueTypeName)Controls.Find("BsonEl" + (i + 1), true)[0];
                if (ctl.IsSetted)
                {
                    initial.Add(ctl.GetElement());
                }
            }

            var reduce    = new BsonJavaScript(ctlReduce.Context);
            var finalize  = new BsonJavaScript(ctlFinalize.Context);
            var resultlst = new List <BsonDocument>();

            try
            {
                //SkipCnt Reset
                var result = mongoCol.Group(query, groupdoc, initial, reduce, finalize);
                //图形化初始化
                chartResult.Series.Clear();
                chartResult.Titles.Clear();
                var seriesResult = new Series("Result");

                //防止错误的条件造成的海量数据
                var count = 0;
                foreach (var item in result)
                {
                    if (count == 1000)
                    {
                        break;
                    }
                    resultlst.Add(item);
                    //必须带有Count元素
                    var dPoint = new DataPoint(0, (double)item.GetElement("count").Value);
                    seriesResult.Points.Add(dPoint);
                    count++;
                }
                ViewHelper.FillJsonDataToTextBox(txtResult, resultlst, 0);
                if (count == 1001)
                {
                    txtResult.Text = "Too many result,Display first 1000 records" + Environment.NewLine + txtResult.Text;
                }
                txtResult.Select(0, 0);
                //图形化加载
                chartResult.Series.Add(seriesResult);
                chartResult.Titles.Add(new Title(chartTite));
                tabGroup.SelectedIndex = 4;
            }
            catch (Exception ex)
            {
                Utility.ExceptionDeal(ex, "Exception", "Exception is Happened");
            }
        }
Пример #21
0
        /// <summary>
        ///     当前对象的MONGO命令
        /// </summary>
        /// <param name="mMongoCommand">命令对象</param>
        /// <returns></returns>
        public static CommandResult ExecuteMongoCommand(MongoCommand mMongoCommand)
        {
            var resultCommandList = new List <CommandResult>();

            var mCommandResult = new CommandResult(new BsonDocument());

            switch (mMongoCommand.RunLevel)
            {
            case EnumMgr.PathLevel.CollectionAndView:
                if (string.IsNullOrEmpty(mMongoCommand.CommandString))
                {
                    mCommandResult = ExecuteMongoColCommand(mMongoCommand.CmdDocument,
                                                            RuntimeMongoDbContext.GetCurrentCollection());
                }
                else
                {
                    mCommandResult = ExecuteMongoColCommand(mMongoCommand.CommandString,
                                                            RuntimeMongoDbContext.GetCurrentCollection());
                }
                break;

            case EnumMgr.PathLevel.Database:
                if (string.IsNullOrEmpty(mMongoCommand.DatabaseName))
                {
                    mCommandResult = ExecuteMongoDBCommand(mMongoCommand.CmdDocument, RuntimeMongoDbContext.GetCurrentDataBase());
                }
                else
                {
                    var db = RuntimeMongoDbContext.GetCurrentClient().GetDatabase(mMongoCommand.DatabaseName);
                    mCommandResult = ExecuteMongoDBCommand(mMongoCommand.CmdDocument, db);
                }
                break;

            case EnumMgr.PathLevel.Instance:
                mCommandResult = ExecuteMongoSvrCommand(mMongoCommand.CmdDocument,
                                                        RuntimeMongoDbContext.GetCurrentServer());
                break;
            }
            resultCommandList.Add(mCommandResult);
            return(mCommandResult);
        }
Пример #22
0
        /// <summary>
        ///     Create a DataView Tab
        /// </summary>
        private void ViewDataRecord()
        {
            //由于Collection 和 Document 都可以触发这个事件,所以,先把Tag以前的标题头去掉
            //Collectiong:XXXX 和 Document:XXXX 都统一成 XXXX
            var dataKey = RuntimeMongoDbContext.SelectTagData;

            if (MultiTabManger.IsExist(dataKey))
            {
                MultiTabManger.SelectTab(dataKey);
                return;
            }

            var mDataViewInfo = new DataViewInfo
            {
                strCollectionPath = RuntimeMongoDbContext.SelectObjectTag,
                IsReadOnly        = RuntimeMongoDbContext.CurrentMongoConnectionconfig.IsReadOnly,
            };

            CtlDataView dataViewctl;

            switch (RuntimeMongoDbContext.SelectTagType)
            {
            case ConstMgr.GridFileSystemTag:
                dataViewctl           = new CtlGfsView(mDataViewInfo);
                dataViewctl.AllowDrop = true;
                break;

            case ConstMgr.UserListTag:
                dataViewctl = new CtlUserView(mDataViewInfo);
                break;

            case ConstMgr.ViewTag:
                mDataViewInfo.IsView = true;
                dataViewctl          = new CtlDocumentView(mDataViewInfo);
                break;

            default:
                dataViewctl = new CtlDocumentView(mDataViewInfo);
                break;
            }

            dataViewctl.mDataViewInfo   = mDataViewInfo;
            dataViewctl.SelectObjectTag = RuntimeMongoDbContext.SelectObjectTag;
            dataViewctl.ParentMenu      = CollectionToolStripMenuItem;
            var TabTitle = UiHelper.GetShowName(RuntimeMongoDbContext.GetCurrentDataBaseName(), RuntimeMongoDbContext.GetCurrentCollectionName());

            MultiTabManger.AddView(dataViewctl, TabTitle, RuntimeMongoDbContext.SelectTagType);
        }
Пример #23
0
 /// <summary>
 ///     是否为合法的数据库名称
 /// </summary>
 /// <param name="strDbName"></param>
 /// <param name="errMessage"></param>
 /// <returns></returns>
 public static bool IsDatabaseNameValid(string strDbName, out string errMessage)
 {
     return(RuntimeMongoDbContext.GetCurrentServer().IsDatabaseNameValid(strDbName, out errMessage));
 }
Пример #24
0
        /// <summary>
        ///     Is Exist by Key
        /// </summary>
        /// <param name="keyValue">KeyValue</param>
        /// <returns></returns>
        public static bool IsExistByKey(string keyValue)
        {
            var mongoCol = MongoHelper.GetCurrentJsCollection(RuntimeMongoDbContext.GetCurrentDataBase());

            return(mongoCol.FindAs <BsonDocument>(Query.EQ(ConstMgr.KeyId, keyValue)).Any());
        }
Пример #25
0
 /// <summary>
 ///     保存
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnSave_Click(object sender, EventArgs e)
 {
     MongoHelper.ActionDone += (x, y) => MyMessageBox.ShowMessage("ExportImport", y.Message);
     ExportImport.ExportToFile(_viewinfo, ctlExportFilePicker.SelectedPathOrFileName, _exportType,
                               RuntimeMongoDbContext.GetCurrentCollection());
 }
Пример #26
0
        private void RefreshDbStatusChart(string strField)
        {
            //图形化初始化
            chartResult.Series.Clear();
            chartResult.Titles.Clear();
            var seriesResult = new Series(strField);

            foreach (var colName in RuntimeMongoDbContext.GetCurrentDataBase().GetCollectionNames())
            {
                DataPoint colPoint = null;
                switch (strField)
                {
                case "AverageObjectSize":
                    try
                    {
                        if (RuntimeMongoDbContext.GetCurrentDataBase()
                            .GetCollection(colName).GetStats().ObjectCount > 0)
                        {
                            //如果没有任何对象的时候,平均值无法取得
                            colPoint = new DataPoint(0,
                                                     RuntimeMongoDbContext.GetCurrentDataBase()
                                                     .GetCollection(colName)
                                                     .GetStats()
                                                     .AverageObjectSize);
                        }
                        else
                        {
                            colPoint = new DataPoint(0, 0);
                        }
                    }
                    catch (Exception ex)
                    {
                        Utility.ExceptionDeal(ex);
                    }
                    break;

                case "DataSize":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().DataSize);
                    break;

                case "ExtentCount":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().ExtentCount);
                    break;

                //case "Flags":
                //    ColPoint = new DataPoint(0, MongoHelper.Core.RuntimeMongoDBContext.GetCurrentDataBase().GetCollection(colName).GetStats().Flags);
                //    break;
                case "IndexCount":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().IndexCount);
                    break;

                case "LastExtentSize":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().LastExtentSize);
                    break;

                case "MaxDocuments":
                    //    仅在CappedCollection时候有效
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().MaxDocuments);
                    break;

                case "ObjectCount":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().ObjectCount);
                    break;

                case "PaddingFactor":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().PaddingFactor);
                    break;

                case "StorageSize":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().StorageSize);
                    break;

                default:
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().StorageSize);
                    break;
                }

                colPoint.LegendText   = colName;
                colPoint.LabelToolTip = colName;
                colPoint.ToolTip      = colName;
                seriesResult.Points.Add(colPoint);
            }
            //图形化加载

            seriesResult.ChartType = SeriesChartType.Pie;
            chartResult.Series.Add(seriesResult);
            chartResult.Titles.Add(new Title(strField));
        }
Пример #27
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));
            }
        }
Пример #28
0
        private void RefreshDbStatusChart(string strField)
        {
            //图形化初始化
            chartResult.Series.Clear();
            chartResult.Titles.Clear();
            var seriesResult = new Series(strField);
            var viewlist     = RuntimeMongoDbContext.GetCurrentDBViewNameList();

            foreach (var colName in RuntimeMongoDbContext.GetCurrentDataBase().GetCollectionNames())
            {
                if (viewlist.Contains(colName))
                {
                    continue;
                }
                DataPoint colPoint = new DataPoint(0, 0);
                switch (strField)
                {
                case "AverageObjectSize":
                    if (RuntimeMongoDbContext.GetCurrentDataBase()
                        .GetCollection(colName).GetStats().ObjectCount > 0)
                    {
                        //如果没有任何对象的时候,平均值无法取得
                        colPoint = new DataPoint(0, RuntimeMongoDbContext.GetCurrentDataBase()
                                                 .GetCollection(colName)
                                                 .GetStats()
                                                 .AverageObjectSize);
                    }
                    else
                    {
                        colPoint = new DataPoint(0, 0);
                    }
                    break;

                case "DataSize":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().DataSize);
                    break;

                case "ExtentCount":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().ExtentCount);
                    break;

                case "IndexCount":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().IndexCount);
                    break;

                case "LastExtentSize":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().LastExtentSize);
                    break;

                case "MaxDocuments":
                    //    仅在CappedCollection时候有效
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().MaxDocuments);
                    break;

                case "ObjectCount":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().ObjectCount);
                    break;

                case "PaddingFactor":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().PaddingFactor);
                    break;

                case "StorageSize":
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().StorageSize);
                    break;

                default:
                    colPoint = new DataPoint(0,
                                             RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(colName).GetStats().StorageSize);
                    break;
                }

                colPoint.LegendText   = colName;
                colPoint.LabelToolTip = colName;
                colPoint.ToolTip      = colName;
                seriesResult.Points.Add(colPoint);
            }
            //图形化加载

            seriesResult.ChartType = SeriesChartType.Pie;
            chartResult.Series.Add(seriesResult);
            chartResult.Titles.Add(new Title(strField));
        }
Пример #29
0
        /// <summary>
        ///     窗体初始化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmStatus_Load(object sender, EventArgs e)
        {
            if (!GuiConfig.IsMono)
            {
                Icon = GetSystemIcon.ConvertImgToIcon(Resources.KeyInfo);
            }
            GuiConfig.Translateform(this);
            var strType   = RuntimeMongoDbContext.SelectTagType;
            var docStatus = new BsonDocument();

            cmbChartField.Visible          = false;
            chartResult.Visible            = false;
            tempIsDisplayNumberWithKSystem = CtlTreeViewColumns.IsDisplayNumberWithKSystem;
            CtlTreeViewColumns.IsDisplayNumberWithKSystem = true;

            switch (strType)
            {
            case ConstMgr.ServerTag:
            case ConstMgr.SingleDbServerTag:
                if (RuntimeMongoDbContext.GetCurrentServerConfig().LoginAsAdmin)
                {
                    var StatusList = new List <BsonDocument>();
                    var Status     = CommandExecute.ExecuteMongoSvrCommand(DataBaseCommand.ServerStatusCommand,
                                                                           RuntimeMongoDbContext.GetCurrentServer()).Response;
                    StatusList.Add(Status);
                    try
                    {
                        var ServerDesripter = MongoUtility.ToolKit.MongoHelper.GetCurrentServerDescription();
                        StatusList.Add(ServerDesripter);
                    }
                    catch (Exception)
                    {
                        //Repl的时候,无法获得
                    }
                    UiHelper.FillDataToTreeView(strType, trvStatus, StatusList, 0);
                    trvStatus.Height = trvStatus.Height * 2;
                    trvStatus.DatatreeView.Nodes[0].Expand();
                    trvStatus.DatatreeView.Nodes[1].Expand();
                    return;
                }
                break;

            case ConstMgr.DatabaseTag:
            case ConstMgr.SingleDatabaseTag:
                docStatus             = RuntimeMongoDbContext.GetCurrentDataBase().GetStats().Response.ToBsonDocument();
                cmbChartField.Visible = true;
                chartResult.Visible   = true;
                //{{ "db" : "aaaa",
                //   "collections" : 8,
                //   "objects" : 0,
                //   "avgObjSize" : 0.0,
                //   "dataSize" : 0.0,
                //   "storageSize" : 32768.0,
                //   "numExtents" : 0,
                //   "indexes" : 8,
                //   "indexSize" : 32768.0,
                //   "ok" : 1.0 }}
                var statuspoint = docStatus.AsBsonDocument;
                //这里其实应该看Collection的Status,不同的引擎所拥有的状态不一样
                if (statuspoint.Contains("avgObjSize"))
                {
                    cmbChartField.Items.Add("AverageObjectSize");
                }
                if (statuspoint.Contains("dataSize"))
                {
                    cmbChartField.Items.Add("DataSize");
                }
                if (statuspoint.Contains("extentCount"))
                {
                    cmbChartField.Items.Add("ExtentCount");
                }
                if (statuspoint.Contains("indexes"))
                {
                    cmbChartField.Items.Add("IndexCount");
                }
                if (statuspoint.Contains("lastExtentSize"))
                {
                    cmbChartField.Items.Add("LastExtentSize");
                }
                //MaxDocuments仅在CapedCollection时候有效
                if (statuspoint.Contains("MaxDocuments"))
                {
                    cmbChartField.Items.Add("MaxDocuments");
                }
                if (statuspoint.Contains("ObjectCount"))
                {
                    cmbChartField.Items.Add("ObjectCount");
                }
                if (statuspoint.Contains("PaddingFactor"))
                {
                    cmbChartField.Items.Add("PaddingFactor");
                }
                if (statuspoint.Contains("storageSize"))
                {
                    cmbChartField.Items.Add("StorageSize");
                }
                cmbChartField.SelectedIndex = 0;
                try
                {
                    RefreshDbStatusChart("StorageSize");
                }
                catch (Exception ex)
                {
                    Utility.ExceptionDeal(ex);
                }
                break;

            case ConstMgr.CollectionTag:
                //TODO:这里无法看到Collection的Document Validation信息。
                docStatus = RuntimeMongoDbContext.GetCurrentCollection().GetStats().Response.ToBsonDocument();
                //图形化初始化
                chartResult.Visible = true;

                chartResult.Series.Clear();
                chartResult.Titles.Clear();
                var seriesResult = new Series("Usage");
                var dpDataSize   = new DataPoint(0, RuntimeMongoDbContext.GetCurrentCollection().GetStats().DataSize)
                {
                    LegendText    = "DataSize",
                    LegendToolTip = "DataSize",
                    ToolTip       = "DataSize"
                };
                seriesResult.Points.Add(dpDataSize);

                var dpTotalIndexSize = new DataPoint(0,
                                                     RuntimeMongoDbContext.GetCurrentCollection().GetStats().TotalIndexSize)
                {
                    LegendText    = "TotalIndexSize",
                    LegendToolTip = "TotalIndexSize",
                    ToolTip       = "TotalIndexSize"
                };
                seriesResult.Points.Add(dpTotalIndexSize);

                var dpFreeSize = new DataPoint(0,
                                               RuntimeMongoDbContext.GetCurrentCollection().GetStats().StorageSize -
                                               RuntimeMongoDbContext.GetCurrentCollection().GetStats().TotalIndexSize -
                                               RuntimeMongoDbContext.GetCurrentCollection().GetStats().DataSize)
                {
                    LegendText    = "FreeSize",
                    LegendToolTip = "FreeSize",
                    ToolTip       = "FreeSize"
                };
                seriesResult.Points.Add(dpFreeSize);

                seriesResult.ChartType = SeriesChartType.Pie;
                chartResult.Series.Add(seriesResult);
                chartResult.Titles.Add(new Title("Usage"));

                break;

            default:
                if (RuntimeMongoDbContext.GetCurrentServerConfig().LoginAsAdmin)
                {
                    docStatus =
                        CommandExecute.ExecuteMongoSvrCommand(DataBaseCommand.ServerStatusCommand,
                                                              RuntimeMongoDbContext.GetCurrentServer()).Response;
                    trvStatus.Height = trvStatus.Height * 2;
                }
                break;
            }
            UiHelper.FillDataToTreeView(strType, trvStatus, docStatus);
            trvStatus.DatatreeView.Nodes[0].Expand();
        }
Пример #30
0
        /// <summary>
        ///     Load
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmUser_Load(object sender, EventArgs e)
        {
            if (_modifyName != string.Empty)
            {
                Text = "Change User Config";
                txtUserName.Enabled = false;
                txtUserName.Text    = _modifyName;
                var userInfo = RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(ConstMgr.CollectionNameUsers)
                               .FindOneAs <BsonDocument>(Query.EQ("user", _modifyName));

                BsonElement role;
                if (userInfo.TryGetElement("roles", out role))
                {
                    var roles = role.Value.AsBsonArray;
                    foreach (var _role in roles)
                    {
                        if (_role.IsBsonDocument)
                        {
                            _roleList.Add(new Role.GrantRole()
                            {
                                Role = _role.AsBsonDocument.GetElement("role").Value.ToString(),
                                Db   = _role.AsBsonDocument.GetElement("db").Value.ToString()
                            });
                        }
                        else
                        {
                            _roleList.Add(new Role.GrantRole()
                            {
                                Role = _role.ToString(),
                            });
                        }
                    }
                }
                RefreshRoles();

                BsonElement custom;
                if (userInfo.TryGetElement("customData", out custom))
                {
                    customData             = custom.Value.AsBsonDocument;
                    lblcustomDocument.Text = "Custom Document:" + customData.ToString();
                }
            }

            GuiConfig.Translateform(this);

            if (!GuiConfig.IsUseDefaultLanguage)
            {
                if (_modifyName == string.Empty)
                {
                    if (!GuiConfig.IsMono)
                    {
                        Icon = GetSystemIcon.ConvertImgToIcon(Resources.AddUserToDB);
                    }
                    Text = GuiConfig.GetText(_isAdmin ? "MainMenu.OperationServerAddUserToAdmin" : "MainMenu.OperationDatabaseAddUser");
                }
                else
                {
                    if (!GuiConfig.IsMono)
                    {
                        Icon = GetSystemIcon.ConvertImgToIcon(Resources.DBkey);
                    }
                    Text = GuiConfig.GetText("CommonChangePassword");
                }
            }
        }