Esempio n. 1
0
        /// <summary>
        ///     fill Collection status to ListView
        /// </summary>
        /// <param name="lstData"></param>
        public static void FillCollectionStatusToList(ListView lstData)
        {
            lstData.Clear();

            if (SystemManager.IsUseDefaultLanguage)
            {
                lstData.Columns.Add("CollectionName");
                lstData.Columns.Add("ObjectCount");
                lstData.Columns.Add("DataSize");
                lstData.Columns.Add("LastExtentSize");
                lstData.Columns.Add("StorageSize");
                lstData.Columns.Add("TotalIndexSize");

                //2012-3-6
                lstData.Columns.Add("IsCapped");
                lstData.Columns.Add("MaxDocuments");

                lstData.Columns.Add("AverageObjectSize");
                lstData.Columns.Add("PaddingFactor");
            }
            else
            {
                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_CollectionName));
                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_ObjectCount));
                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_DataSize));
                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_LastExtentSize));
                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_StorageSize));
                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_TotalIndexSize));

                //2012-3-6
                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_IsCapped));
                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_MaxDocuments));


                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_AverageObjectSize));
                lstData.Columns.Add(
                    SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_PaddingFactor));
            }
            foreach (String mongoSvrKey in _mongoConnSvrLst.Keys)
            {
                try
                {
                    MongoServer mongoSvr = _mongoConnSvrLst[mongoSvrKey];
                    //感谢 魏琼东 的Bug信息,一些命令必须以Admin执行
                    if (!SystemManager.GetCurrentServerConfig(mongoSvrKey).Health ||
                        !SystemManager.GetCurrentServerConfig(mongoSvrKey).LoginAsAdmin)
                    {
                        continue;
                    }
                    List <String> databaseNameList = mongoSvr.GetDatabaseNames().ToList();
                    foreach (String strDBName in databaseNameList)
                    {
                        MongoDatabase mongoDB = mongoSvr.GetDatabase(strDBName);

                        List <String> colNameList = mongoDB.GetCollectionNames().ToList();
                        foreach (String strColName in colNameList)
                        {
                            try
                            {
                                CollectionStatsResult CollectionStatus = mongoDB.GetCollection(strColName).GetStats();
                                var lst = new ListViewItem(mongoSvrKey + "." + strDBName + "." + strColName);
                                lst.SubItems.Add(CollectionStatus.ObjectCount.ToString());
                                lst.SubItems.Add(GetSize(CollectionStatus.DataSize));
                                lst.SubItems.Add(GetSize(CollectionStatus.LastExtentSize));
                                lst.SubItems.Add(GetSize(CollectionStatus.StorageSize));
                                lst.SubItems.Add(GetSize(CollectionStatus.TotalIndexSize));

                                //2012-3-6
                                lst.SubItems.Add(CollectionStatus.IsCapped.ToString());
                                //https://jira.mongodb.org/browse/CSHARP-665
                                try
                                {
                                    //注意:这个MaxDocuments只是在CappedCollection时候有效
                                    lst.SubItems.Add(CollectionStatus.MaxDocuments.ToString());
                                }
                                catch (Exception ex)
                                {
                                    //溢出
                                    lst.SubItems.Add(Int32.MaxValue.ToString());
                                    SystemManager.ExceptionLog(ex);
                                }

                                lst.SubItems.Add(CollectionStatus.ObjectCount != 0
                                    ? GetSize((long)CollectionStatus.AverageObjectSize)
                                    : "0");

                                try
                                {
                                    //在某些条件下,这个值会抛出异常,IndexKeyNotFound
                                    lst.SubItems.Add(CollectionStatus.PaddingFactor.ToString());
                                }
                                catch (Exception)
                                {
                                    lst.SubItems.Add("0");
                                }
                                lstData.Items.Add(lst);
                            }
                            catch (Exception ex)
                            {
                                //throw;
                                //TODO:排序时候会发生错误,所以暂时不对应
                                //lstData.Items.Add(new ListViewItem(strColName + "[Exception]"));
                                SystemManager.ExceptionDeal(ex);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    SystemManager.ExceptionDeal(ex);
                }
            }
            lstData.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
        }