package schedframe.resources; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import schedframe.resources.units.ResourceUnit; import schedframe.scheduling.utils.ResourceParameterName; import test.rewolucja.resources.physical.base.ComputingResource; /** * * @author Marcin Krystek * */ public class ResourceStateDescription extends ResourceDescription { protected ResourceType type; protected Map queue_size; protected List compResources; public ResourceStateDescription(ResourceProvider provider){ super(); this.provider = provider; this.queue_size = new HashMap(); this.compResources = new ArrayList(); } public ResourceStateDescription(ResourceDescription r){ super(r); } public void addResourceUnit(ResourceUnit unit){ List list = null; if(this.resUnits.containsKey(unit.getName())){ list = this.resUnits.get(unit.getName()); } else { list = new ArrayList(); this.resUnits.put(unit.getName(), list); } list.add(unit); } public void addResourceUnit(Map allUnits){ Iterator itr = allUnits.values().iterator(); while(itr.hasNext()){ addResourceUnit(itr.next()); } } public void addResourceUnitList(Map> allUnits){ this.resUnits.putAll(allUnits); } public void setType(ResourceType type){ this.type = type; } public ResourceType getType() { return type; } public void setQueuesSize(Map queue_size){ this.queue_size = queue_size; } public long getQueueLoad(String queueName) throws NoSuchFieldException{ long load = 0; if(queueName == null){ for(String queue: queue_size.keySet()){ load += queue_size.get(queue); } return load; } else if(queue_size.containsKey(queueName)) return queue_size.get(queueName); else throw new NoSuchFieldException("Queue " + queueName + " is not available in resource " + provider.id); } public void addComputingResources(List compRes){ compResources.addAll(compRes); } }