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
RevLine 
[477]1package schedframe.scheduling;
2
[1423]3import java.util.HashSet;
[1396]4import java.util.LinkedList;
5import java.util.List;
[477]6import java.util.Map;
[1362]7import java.util.Set;
[477]8
[1396]9import schedframe.resources.computing.ComputingResource;
10import schedframe.resources.units.ProcessingElements;
[477]11import schedframe.resources.units.ResourceUnit;
12import schedframe.resources.units.ResourceUnitName;
[1396]13import schedframe.resources.units.StandardResourceUnitName;
[477]14
[1396]15public class ResourceItem {
[477]16
17        protected Map<ResourceUnitName, ResourceUnit> usedResources;
[1415]18        protected Set<String> resourceNames;
[1434]19        protected Set<ComputingResource> compResource;
[1362]20
[1396]21        public ResourceItem(Map<ResourceUnitName, ResourceUnit> usedResources){
[1362]22                this.usedResources = usedResources;
[1423]23                this.resourceNames = saveResourceNames();
[1434]24                this.compResource = saveResources();
[477]25        }
26       
27        public Map<ResourceUnitName, ResourceUnit> getResourceUnits(){
28                return usedResources;
29        }
30       
[1396]31        public Set<String> getResourceNames(){
[1415]32                return resourceNames;
[477]33        }
[1362]34       
[1434]35        public Set<ComputingResource> getResources(){
36                return compResource;
37        }
38       
[1423]39        private Set<String> saveResourceNames(){
40                Set<String> resourceNames;
[1396]41                ProcessingElements pes = (ProcessingElements) usedResources.get(StandardResourceUnitName.PE);
[1423]42                resourceNames = new HashSet<String>(pes.size(), 1);
43                for (ComputingResource resource: pes) {
[1396]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()){
[1415]52                                        if(!resourceNames.contains(compResource.getFullName())){
53                                                resourceNames.add(compResource.getFullName());
[1396]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                }
[1423]63                return resourceNames;
[1317]64        }
[1434]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        }
[477]92}
Note: See TracBrowser for help on using the repository browser.