package test.rewolucja.resources.manager.utils; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import schedframe.resources.units.Memory; import schedframe.resources.units.ResourceUnit; import schedframe.scheduling.utils.ResourceParameterName; import test.rewolucja.resources.ProcessingElements; import test.rewolucja.resources.ResourceStatus; import test.rewolucja.resources.UnitState; import test.rewolucja.resources.physical.base.ComputingResource; public class ResourceManagerUtils { public static void clearPendingResources(Map choosenResources){ ProcessingElements processingElements = (ProcessingElements)choosenResources.get(ResourceParameterName.PROCESSINGELEMENTS); if(processingElements != null) { for (int i = 0; i < processingElements.size(); i++) { ComputingResource pe = processingElements.get(i); if (pe.getStatus() == ResourceStatus.PENDING) { pe.setStatus(ResourceStatus.FREE); } } } Memory memory = (Memory)choosenResources.get(ResourceParameterName.MEMORY); if(memory != null){ if(memory.getState()==UnitState.PENDING) memory.setState(UnitState.FREE); } } public static void setPendingResources(Map choosenResources){ ProcessingElements processingElements = (ProcessingElements)choosenResources.get(ResourceParameterName.PROCESSINGELEMENTS); if(processingElements != null) { for (int i = 0; i < processingElements.size(); i++) { ComputingResource pe = processingElements.get(i); if (pe.getStatus() == ResourceStatus.FREE) { pe.setStatus(ResourceStatus.PENDING); } } } Memory memory = (Memory)choosenResources.get(ResourceParameterName.MEMORY); if(memory != null){ if(memory.getState()==UnitState.FREE) memory.setState(UnitState.PENDING); } } public static ComputingResource getCommonParent(List resources){ Set parents = new HashSet(resources); while(parents.size() != 1){ parents = new HashSet(); for(ComputingResource resource: resources){ parents.add(resource.getParent()); } resources = new ArrayList(parents); } return resources.get(0); } }