package schedframe.scheduling; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import schedframe.resources.computing.ComputingResource; import schedframe.resources.units.ProcessingElements; import schedframe.resources.units.ResourceUnit; import schedframe.resources.units.ResourceUnitName; import schedframe.resources.units.StandardResourceUnitName; public class ResourceItem { protected Map usedResources; protected Set resourceNames; protected Set compResource; public ResourceItem(Map usedResources){ this.usedResources = usedResources; this.resourceNames = saveResourceNames(); this.compResource = saveResources(); } public Map getResourceUnits(){ return usedResources; } public Set getResourceNames(){ return resourceNames; } public Set getResources(){ return compResource; } private Set saveResourceNames(){ Set resourceNames; ProcessingElements pes = (ProcessingElements) usedResources.get(StandardResourceUnitName.PE); resourceNames = new HashSet(pes.size(), 1); for (ComputingResource resource: pes) { LinkedList toExamine = new LinkedList(); toExamine.push(resource); while (!toExamine.isEmpty()) { ComputingResource compResource = toExamine.pop(); List resources = compResource.getChildren(); if(resources.isEmpty()){ if(!resourceNames.contains(compResource.getFullName())){ resourceNames.add(compResource.getFullName()); } } else { for (int i = 0; i < resources.size(); i++) { ComputingResource resourceChild = resources.get(i); toExamine.addLast(resourceChild); } } } } return resourceNames; } private Set saveResources(){ Set compResources; ProcessingElements pes = (ProcessingElements) usedResources.get(StandardResourceUnitName.PE); compResources = new HashSet(pes.size(), 1); for (ComputingResource resource: pes) { LinkedList toExamine = new LinkedList(); toExamine.push(resource); while (!toExamine.isEmpty()) { ComputingResource compResource = toExamine.pop(); List resources = compResource.getChildren(); if(resources.isEmpty()){ if(!compResources.contains(compResource)){ compResources.add(compResource); } } else { for (int i = 0; i < resources.size(); i++) { ComputingResource resourceChild = resources.get(i); toExamine.addLast(resourceChild); } } } } return compResources; } }