source: DCWoRMS/branches/coolemall/src/schedframe/scheduling/ResourceItem.java @ 1434

Revision 1434, 2.8 KB checked in by wojtekp, 11 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package schedframe.scheduling;
2
3import java.util.HashSet;
4import java.util.LinkedList;
5import java.util.List;
6import java.util.Map;
7import java.util.Set;
8
9import schedframe.resources.computing.ComputingResource;
10import schedframe.resources.units.ProcessingElements;
11import schedframe.resources.units.ResourceUnit;
12import schedframe.resources.units.ResourceUnitName;
13import schedframe.resources.units.StandardResourceUnitName;
14
15public class ResourceItem {
16
17        protected Map<ResourceUnitName, ResourceUnit> usedResources;
18        protected Set<String> resourceNames;
19        protected Set<ComputingResource> compResource;
20
21        public ResourceItem(Map<ResourceUnitName, ResourceUnit> usedResources){
22                this.usedResources = usedResources;
23                this.resourceNames = saveResourceNames();
24                this.compResource = saveResources();
25        }
26       
27        public Map<ResourceUnitName, ResourceUnit> getResourceUnits(){
28                return usedResources;
29        }
30       
31        public Set<String> getResourceNames(){
32                return resourceNames;
33        }
34       
35        public Set<ComputingResource> getResources(){
36                return compResource;
37        }
38       
39        private Set<String> saveResourceNames(){
40                Set<String> resourceNames;
41                ProcessingElements pes = (ProcessingElements) usedResources.get(StandardResourceUnitName.PE);
42                resourceNames = new HashSet<String>(pes.size(), 1);
43                for (ComputingResource resource: pes) {
44
45                        LinkedList<ComputingResource> toExamine = new LinkedList<ComputingResource>();
46                        toExamine.push(resource);
47
48                        while (!toExamine.isEmpty()) {
49                                ComputingResource compResource = toExamine.pop();
50                                List<ComputingResource> resources = compResource.getChildren();
51                                if(resources.isEmpty()){
52                                        if(!resourceNames.contains(compResource.getFullName())){
53                                                resourceNames.add(compResource.getFullName());
54                                        }
55                                } else {
56                                        for (int i = 0; i < resources.size(); i++) {
57                                                ComputingResource resourceChild = resources.get(i);
58                                                toExamine.addLast(resourceChild);
59                                        }
60                                }
61                        }
62                }
63                return resourceNames;
64        }
65       
66        private Set<ComputingResource> saveResources(){
67                Set<ComputingResource> compResources;
68                ProcessingElements pes = (ProcessingElements) usedResources.get(StandardResourceUnitName.PE);
69                compResources = new HashSet<ComputingResource>(pes.size(), 1);
70                for (ComputingResource resource: pes) {
71
72                        LinkedList<ComputingResource> toExamine = new LinkedList<ComputingResource>();
73                        toExamine.push(resource);
74
75                        while (!toExamine.isEmpty()) {
76                                ComputingResource compResource = toExamine.pop();
77                                List<ComputingResource> resources = compResource.getChildren();
78                                if(resources.isEmpty()){
79                                        if(!compResources.contains(compResource)){
80                                                compResources.add(compResource);
81                                        }
82                                } else {
83                                        for (int i = 0; i < resources.size(); i++) {
84                                                ComputingResource resourceChild = resources.get(i);
85                                                toExamine.addLast(resourceChild);
86                                        }
87                                }
88                        }
89                }
90                return compResources;
91        }
92}
Note: See TracBrowser for help on using the repository browser.