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
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;
[1362]19
[1396]20        public ResourceItem(Map<ResourceUnitName, ResourceUnit> usedResources){
[1362]21                this.usedResources = usedResources;
[1423]22                this.resourceNames = saveResourceNames();
[477]23        }
24       
25        public Map<ResourceUnitName, ResourceUnit> getResourceUnits(){
26                return usedResources;
27        }
28       
[1396]29        public Set<String> getResourceNames(){
[1415]30                return resourceNames;
[477]31        }
[1362]32       
[1423]33        private Set<String> saveResourceNames(){
34                Set<String> resourceNames;
[1396]35                ProcessingElements pes = (ProcessingElements) usedResources.get(StandardResourceUnitName.PE);
[1423]36                resourceNames = new HashSet<String>(pes.size(), 1);
37                for (ComputingResource resource: pes) {
[1396]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()){
[1415]46                                        if(!resourceNames.contains(compResource.getFullName())){
47                                                resourceNames.add(compResource.getFullName());
[1396]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                }
[1423]57                return resourceNames;
[1317]58        }
[477]59}
Note: See TracBrowser for help on using the repository browser.