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

Revision 1423, 1.7 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
20        public ResourceItem(Map<ResourceUnitName, ResourceUnit> usedResources){
21                this.usedResources = usedResources;
22                this.resourceNames = saveResourceNames();
23        }
24       
25        public Map<ResourceUnitName, ResourceUnit> getResourceUnits(){
26                return usedResources;
27        }
28       
29        public Set<String> getResourceNames(){
30                return resourceNames;
31        }
32       
33        private Set<String> saveResourceNames(){
34                Set<String> resourceNames;
35                ProcessingElements pes = (ProcessingElements) usedResources.get(StandardResourceUnitName.PE);
36                resourceNames = new HashSet<String>(pes.size(), 1);
37                for (ComputingResource resource: pes) {
38
39                        LinkedList<ComputingResource> toExamine = new LinkedList<ComputingResource>();
40                        toExamine.push(resource);
41
42                        while (!toExamine.isEmpty()) {
43                                ComputingResource compResource = toExamine.pop();
44                                List<ComputingResource> resources = compResource.getChildren();
45                                if(resources.isEmpty()){
46                                        if(!resourceNames.contains(compResource.getFullName())){
47                                                resourceNames.add(compResource.getFullName());
48                                        }
49                                } else {
50                                        for (int i = 0; i < resources.size(); i++) {
51                                                ComputingResource resourceChild = resources.get(i);
52                                                toExamine.addLast(resourceChild);
53                                        }
54                                }
55                        }
56                }
57                return resourceNames;
58        }
59}
Note: See TracBrowser for help on using the repository browser.