Projekt

Obecné

Profil

Stáhnout (3.38 KB) Statistiky
| Větev: | Tag: | Revize:
1

    
2
/**
3
 * The class represents group.
4
 * @param groupSymbol group symbol
5
 * @param idGroup group id
6
 */
7
function Group(groupSymbol, idGroup) {
8
	this.groupSymbol = groupSymbol;
9
	this.idGroup = idGroup;
10
	this.label = 'Group';
11
	this.x = 0;
12
	this.y = 0;
13

    
14
	this.items = new Hash();
15
	this.providedPackage = new Hash();
16
	this.requiredPackage = new Hash();
17

    
18
	var countRequired = 0;
19
	var countProvided = 0;
20
	var decompose = false;
21

    
22
	/**
23
	 * Adds provided packages.
24
	 * @param exportPackages package which be added.
25
	 */
26
	this.addProvidedPackage = function(exportPackages) {
27
		var frequency = 1;
28
		
29
		for (var i = 0; i < exportPackages.length; i++){
30
			if (providedPackage.contains(exportPackages[i])) {
31
				frequency = providedPackage.get(exportPackages[i]) + 1;
32
			}
33
			
34
			providedPackage.add(exportPackages[i], frequency);
35
			frequency = 1;
36
			
37
			// this new provided bundle satisfies required of some old bundle
38
			if (requiredPackage.contains(exportPackages[i])) {
39
				requiredPackage.remove(exportPackages[i]);
40
			}
41
		}
42
	};
43
	
44
	/**
45
	 * Adds required packages.
46
	 * 
47
	 * @param importPackages package which be added.
48
	 */
49
	this.addRequiredPackage = function(importPackages) {
50
		var frequency = 1, i;
51
		
52
		for (i = 0; i < importPackages.length; i++){
53
			// no old provided bundle satisfies required of this new bundle
54
			if (!providedPackage.contains(importPackages[i])) {
55
				if (requiredPackage.contains(importPackages[i])) {
56
					frequency = requiredPackage.get(importPackages[i]) + 1;
57
				}
58

    
59
				requiredPackage.add(importPackages[i], frequency);
60
				frequency = 1;
61
			}
62
		}
63
	};
64
	
65
	/**
66
	 * Delete provided packages.
67
	 * 
68
	 * @param exportPackages package which will be deleted.
69
	 */
70
	this.deleteProvidedPackage = function(exportPackages) {
71
		var frequency = -1;
72
		var i;
73
		
74
		for (i = 0; i < exportPackages.length; i++) {
75
			if (providedPackage.contains(exportPackages[i])) {
76
				frequency = providedPackage.get(exportPackages[i]) - 1;
77
				
78
				if (frequency == 0) {
79
					providedPackage.remove(exportPackages[i]);
80
				} else {
81
					providedPackage.add(exportPackages[i], frequency);
82
				}
83

    
84
				frequency = -1;
85
			}
86
		}
87
	};
88
	
89
	/**
90
	 * Delete required packages.
91
	 * 
92
	 * @param importPackages package which will be deleted.
93
	 */
94
	this.deleteRequiredPackage = function(importPackages) {
95
		var frequency = -1;
96
		var i;
97
		
98
		for (i = 0; i < importPackages.length; i++) {
99
			if (requiredPackage.contains(importPackages[i])){
100
				frequency = requiredPackage.get(importPackages[i]) - 1;
101
				
102
				if (frequency == 0) {
103
					requiredPackage.remove(importPackages[i]);
104
				} else {
105
					requiredPackage.add(importPackages[i], frequency);
106
				}
107

    
108
				frequency = -1;
109
			}
110
		}
111
	};
112

    
113
	/**
114
	 * Adds new item to group.
115
	 * 
116
	 * @param itemId id of saved item (vertex)
117
	 * @param item vertex which will be added
118
	 */
119
	this.addToGroup = function(itemId, item) {
120
		this.items.add(itemId, item);
121
	};
122

    
123
	/**
124
	 * Removes item from group.
125
	 * 
126
	 * @param itemId id of deleted item (vertex)
127
	 */
128
	this.removeFromGroup = function(itemId) {
129
		this.items.remove(itemId);
130
	};
131

    
132
	/**
133
	 * Gets count of item in group.
134
	 * 
135
	 * @returns {number} number of items
136
	 */
137
	this.getGroupItemsLength = function() {
138
		return this.items.size();
139
	};
140

    
141
	/**
142
	 * Writes group item name into console
143
	 */
144
	this.toString = function() {
145
		var groupItems = this.items.getAll();
146

    
147
		for (var key in groupItems) {
148
			if (groupItems.hasOwnProperty(key)) {
149
				console.info('>> ' + groupItems.get(key).name);
150
			}
151
		}
152
	};
153
}
(7-7/19)