123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- function AgentItemsReferenceTracker(){
- this.agentItemRefs = new Object();
- }
- AgentItemsReferenceTracker.prototype.toString = function(){
- var state = "\n ******* topic references *******\n";
-
- for(var modelItem in this.agentItemRefs){
- state += modelItem + " (" + this.agentItemRefs[modelItem] + " references)\n";
- }
-
- return state
- }
- AgentItemsReferenceTracker.prototype.addReference = function(modelItem){
- var count = 0;
-
- if(this.agentItemRefs[modelItem]){
- count = this.agentItemRefs[modelItem];
- }
-
- this.agentItemRefs[modelItem] = ++count;
- }
- AgentItemsReferenceTracker.prototype.addReferences = function(modelItems){
- for(var i = 0; modelItems && modelItems.length && i < modelItems.length; i++){
- this.addReference(modelItems[i]);
- }
- }
- AgentItemsReferenceTracker.prototype.removeReferences = function(modelItems){
-
- var deleted_items = new Array();
-
- for(var i = 0; modelItems && modelItems.length && i < modelItems.length; i++){
- var deleted_item = this.removeReference(modelItems[i]);
-
- if(deleted_item){
- deleted_items.push(deleted_item);
- }
- }
-
- return deleted_items;
- }
- AgentItemsReferenceTracker.prototype.removeReference = function(modelItem){
- var count = 0;
- var deleted_item;
-
- if(this.agentItemRefs[modelItem]){
- count = this.agentItemRefs[modelItem];
-
- if(count > 1){
- this.agentItemRefs[modelItem] = --count;
- }else if(count == 1){
- delete this.agentItemRefs[modelItem];
-
-
- }else{
-
- alert("warning: ags count for model item " + modelItem + " is now " + count);
- }
- }
- return deleted_item;
- }
- AgentItemsReferenceTracker.prototype.countReferences = function(modelItem){
- var count = 0;
-
- if(this.agentItemRefs[modelItem]){
- count = this.agentItemRefs[modelItem];
- }
-
- return count;
- }
- AgentItemsReferenceTracker.prototype.getReferencedModelItems = function(modelItem){
- var modelItems = new Array();
-
- for(var modelItem in this.agentItemRefs){
- if(modelItem && this.agentItemRefs[modelItem] > 0){
- modelItems.push(modelItem);
- }
- }
-
- return modelItems;
- }
|