} // GetTotalQuotaPercent() /// <summary> /// Determines a percentage for highest quota usage /// </summary> public Double GetHighestQuotaPercent() { Double HighestPercent = 0; Dictionary<Int32, Int32> NodeCountsForNodeType; Dictionary<Int32, Int32> NodeCountsForObjectClass; GetNodeCounts( out NodeCountsForNodeType, out NodeCountsForObjectClass ); foreach( CswNbtMetaDataObjectClass ObjectClass in _CswNbtResources.MetaData.getObjectClasses() ) { if( ObjectClass.Quota > 0 && false == ObjectClass.ExcludeInQuotaBar ) { Double ThisPercent = 0; if( NodeCountsForObjectClass.ContainsKey( ObjectClass.ObjectClassId ) && NodeCountsForObjectClass[ObjectClass.ObjectClassId] > 0 ) { ThisPercent = (Double) NodeCountsForObjectClass[ObjectClass.ObjectClassId] / ObjectClass.Quota * 100; } if( ThisPercent > HighestPercent ) { HighestPercent = ThisPercent; } } } // foreach( CswNbtMetaDataObjectClass ObjectClass in _CswNbtResources.MetaData.ObjectClasses ) foreach( CswNbtMetaDataNodeType NodeType in _CswNbtResources.MetaData.getNodeTypes() ) { if( NodeType.Quota > 0 && false == NodeType.ExcludeInQuotaBar ) { Double ThisPercent = 0; if( NodeCountsForNodeType.ContainsKey( NodeType.NodeTypeId ) && NodeCountsForNodeType[NodeType.NodeTypeId] > 0 ) { ThisPercent = (Double) NodeCountsForNodeType[NodeType.NodeTypeId] / NodeType.Quota * 100; } if( ThisPercent > HighestPercent ) { HighestPercent = ThisPercent; } } } // foreach( CswNbtMetaDataNodeType NodeType in _CswNbtResources.MetaData.getNodeTypes() ) return HighestPercent; } // GetHighestQuotaPercent()
} // _UnlockNodes() /// <summary> /// Determines a percentage for total quota usage /// </summary> public Double GetTotalQuotaPercent() { Double ret = 0; Double TotalUsed = 0; Double TotalQuota = 0; Dictionary<Int32, Int32> NodeCountsForNodeType; Dictionary<Int32, Int32> NodeCountsForObjectClass; GetNodeCounts( out NodeCountsForNodeType, out NodeCountsForObjectClass ); foreach( CswNbtMetaDataObjectClass ObjectClass in _CswNbtResources.MetaData.getObjectClasses() ) { if( ObjectClass.Quota > 0 && false == ObjectClass.ExcludeInQuotaBar ) { TotalQuota += ObjectClass.Quota; if( NodeCountsForObjectClass.ContainsKey( ObjectClass.ObjectClassId ) && NodeCountsForObjectClass[ObjectClass.ObjectClassId] > 0 ) { TotalUsed += NodeCountsForObjectClass[ObjectClass.ObjectClassId]; } } } // foreach( CswNbtMetaDataObjectClass ObjectClass in _CswNbtResources.MetaData.ObjectClasses ) foreach( CswNbtMetaDataNodeType NodeType in _CswNbtResources.MetaData.getNodeTypes() ) { if( NodeType.Quota > 0 && false == NodeType.ExcludeInQuotaBar ) { TotalQuota += NodeType.Quota; if( NodeCountsForNodeType.ContainsKey( NodeType.NodeTypeId ) && NodeCountsForNodeType[NodeType.NodeTypeId] > 0 ) { TotalUsed += NodeCountsForNodeType[NodeType.NodeTypeId]; } } } // foreach( CswNbtMetaDataObjectClass ObjectClass in _CswNbtResources.MetaData.ObjectClasses ) if( TotalQuota > 0 ) { ret = TotalUsed / TotalQuota * 100; } return ret; } // GetTotalQuotaPercent()
public override void update() { //Get the Node count for each OC/NT Dictionary<Int32, Int32> NodeCountsForNodeType; Dictionary<Int32, Int32> NodeCountsForObjectClass; _getCounts( out NodeCountsForNodeType, out NodeCountsForObjectClass ); CswTableUpdate nodetypes_TU = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "initNodeCountNT28355", "nodetypes" ); DataTable nodetypesTbl = nodetypes_TU.getTable(); foreach( DataRow Row in nodetypesTbl.Rows ) { int NodeTypeId = CswConvert.ToInt32( Row["nodetypeid"] ); if( NodeCountsForNodeType.ContainsKey( NodeTypeId ) ) { Row["nodecount"] = NodeCountsForNodeType[NodeTypeId]; } else { Row["nodecount"] = 0; } } nodetypes_TU.update( nodetypesTbl ); CswTableUpdate objclass_TU = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "initNodeCountOC28355", "object_class" ); DataTable objClassTbl = objclass_TU.getTable(); foreach( DataRow Row in objClassTbl.Rows ) { int objclassid = CswConvert.ToInt32( Row["objectclassid"] ); if( NodeCountsForObjectClass.ContainsKey( objclassid ) ) { Row["nodecount"] = NodeCountsForObjectClass[objclassid]; } else { Row["nodecount"] = 0; } } objclass_TU.update( objClassTbl ); } // update()
public JObject GetQuotas() { JObject ret = new JObject(); Dictionary <Int32, Int32> NodeCountsForNodeType; Dictionary <Int32, Int32> NodeCountsForObjectClass; _CswNbtActQuotas.GetNodeCounts(out NodeCountsForNodeType, out NodeCountsForObjectClass); ret["canedit"] = _CanEditQuotas.ToString().ToLower(); ret["objectclasses"] = new JObject(); foreach (CswNbtMetaDataObjectClass ObjectClass in from _ObjectClass in _CswNbtResources.MetaData.getObjectClasses() orderby _ObjectClass.ObjectClass select _ObjectClass) { string OCId = "oc_" + ObjectClass.ObjectClassId.ToString(); ret["objectclasses"][OCId] = new JObject(); ret["objectclasses"][OCId]["objectclass"] = ObjectClass.ObjectClass.ToString(); ret["objectclasses"][OCId]["objectclassid"] = ObjectClass.ObjectClassId.ToString(); if (NodeCountsForObjectClass.ContainsKey(ObjectClass.ObjectClassId)) { ret["objectclasses"][OCId]["currentusage"] = NodeCountsForObjectClass[ObjectClass.ObjectClassId]; } else { ret["objectclasses"][OCId]["currentusage"] = "0"; } if (ObjectClass.Quota != Int32.MinValue) { ret["objectclasses"][OCId]["quota"] = ObjectClass.Quota; } else { ret["objectclasses"][OCId]["quota"] = ""; } ret["objectclasses"][OCId]["nodetypecount"] = ObjectClass.getNodeTypes().Count().ToString(); ret["objectclasses"][OCId]["excludeinquotabar"] = ObjectClass.ExcludeInQuotaBar; bool readOnly = ObjectClass.ObjectClass == CswEnumNbtObjectClass.InventoryGroupClass && false == _CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.MultiInventoryGroup); //case 29298 ret["objectclasses"][OCId]["readonly"] = readOnly; ret["objectclasses"][OCId]["nodetypes"] = new JObject(); foreach (CswNbtMetaDataNodeType NodeType in from _NodeType in ObjectClass.getNodeTypes() orderby _NodeType.NodeTypeName select _NodeType) { if (NodeType.IsLatestVersion()) { Int32 NodeTypeId = NodeType.FirstVersionNodeTypeId; string NodeTypeName = NodeType.NodeTypeName; Int32 Quota = NodeType.getFirstVersionNodeType().Quota; string NTId = "nt_" + NodeType.FirstVersionNodeTypeId.ToString(); ret["objectclasses"][OCId]["nodetypes"][NTId] = new JObject(); ret["objectclasses"][OCId]["nodetypes"][NTId]["nodetypename"] = NodeTypeName; ret["objectclasses"][OCId]["nodetypes"][NTId]["nodetypeid"] = NodeTypeId; ret["objectclasses"][OCId]["nodetypes"][NTId]["excludeinquotabar"] = NodeType.ExcludeInQuotaBar; ret["objectclasses"][OCId]["nodetypes"][NTId]["readonly"] = readOnly || (NodeTypeName.Equals("Site") && false == _CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.MultiSite)); //case 29298 if (NodeCountsForNodeType.ContainsKey(NodeTypeId)) { ret["objectclasses"][OCId]["nodetypes"][NTId]["currentusage"] = NodeCountsForNodeType[NodeTypeId]; } else { ret["objectclasses"][OCId]["nodetypes"][NTId]["currentusage"] = "0"; } if (Quota != Int32.MinValue) { ret["objectclasses"][OCId]["nodetypes"][NTId]["quota"] = Quota; } else { ret["objectclasses"][OCId]["nodetypes"][NTId]["quota"] = ""; } } // if( NodeType.IsLatestVersion ) } // foreach( CswNbtMetaDataNodeType NodeType in ObjectClass.NodeTypes ) } // foreach( CswNbtMetaDataObjectClass ObjectClass in _CswNbtResources.MetaData.ObjectClasses ) return(ret); } // GetQuotas()