package schedframe.scheduling; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; 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; public ResourceItem(Map usedResources){ this.usedResources = usedResources; this.resourceNames = new TreeSet(); saveResourceNames(); } public Map getResourceUnits(){ return usedResources; } public Set getResourceNames(){ return resourceNames; } private void saveResourceNames(){ ProcessingElements pes = (ProcessingElements) usedResources.get(StandardResourceUnitName.PE); 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); } } } } } }