/// <summary> /// 获取实例节点 /// 这里将形成左侧的树型目录 /// </summary> /// <param name="mongoConnKey"></param> /// <param name="config">由于是结构体,必须ref</param> /// <param name="mongoConn"></param> /// <param name="mMasterServerInstace"></param> /// <param name="userList"></param> /// <returns></returns> private static TreeNode GetInstanceNode(string mongoConnKey, ref MongoConnectionConfig config, MongoClient mongoClient) { //无论如何,都改为主要服务器读优先 var svrInstanceNode = new TreeNode(); var connSvrKey = mongoConnKey + "/" + mongoConnKey; svrInstanceNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.WebServer; svrInstanceNode.ImageIndex = (int)GetSystemIcon.MainTreeImageType.WebServer; svrInstanceNode.Text = "Server"; if (!string.IsNullOrEmpty(config.UserName) & (!string.IsNullOrEmpty(config.Password))) { //是否是认证模式,应该取决于服务器! config.AuthMode = true; } //获取ReadOnly config.IsReadOnly = false; if (!string.IsNullOrEmpty(config.DataBaseName)) { //单数据库模式 var mongoSingleDbNode = FillDataBaseInfoToTreeNode(config.DataBaseName, mongoConnKey + "/" + mongoConnKey, null); mongoSingleDbNode.Tag = ConstMgr.SingleDatabaseTag + ":" + connSvrKey + "/" + config.DataBaseName; mongoSingleDbNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; mongoSingleDbNode.ImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; svrInstanceNode.Nodes.Add(mongoSingleDbNode); svrInstanceNode.Tag = ConstMgr.SingleDbServerTag + ":" + connSvrKey; } else { var setting = RuntimeMongoDbContext.CreateMongoClientSettingsByConfig(ref config); var client = new MongoClient(setting); var databaseNameList = GetConnectionInfo.GetDatabaseList(client); foreach (var strDbName in databaseNameList) { TreeNode mongoDbNode; try { var dbName = strDbName.GetElement("name").Value.ToString(); mongoDbNode = FillDataBaseInfoToTreeNode(dbName, connSvrKey, client); mongoDbNode.ImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; mongoDbNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; svrInstanceNode.Nodes.Add(mongoDbNode); } catch (Exception ex) { Utility.ExceptionDeal(ex, strDbName + "Exception", strDbName + "Exception"); mongoDbNode = new TreeNode(strDbName + " (Exception)") { ImageIndex = (int)GetSystemIcon.MainTreeImageType.Database, SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Database }; svrInstanceNode.Nodes.Add(mongoDbNode); } } } svrInstanceNode.Tag = ConstMgr.ServerTag + ":" + mongoConnKey + "/" + mongoConnKey; return(svrInstanceNode); }
/// <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); }