package schedframe.resources.computing.description; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import schedframe.Parameters; import schedframe.resources.ResourceType; import schedframe.resources.units.ResourceUnit; import schedframe.resources.units.ResourceUnitName; public class ExecutingResourceDescription extends AbstractResourceDescription { protected Map> resUnits; protected Parameters parameters; public ExecutingResourceDescription(ResourceType type) { super(type); } public Parameters getParameters() { return parameters; } public String getCompResourceParameterValue(String name){ return getParameters().get(name).get(0).getContent(); } public void addResourceUnit(ResourceUnit unit) { if (this.resUnits == null) this.resUnits = new HashMap>(1); List list = null; if (this.resUnits.containsKey(unit.getName())) { list = this.resUnits.get(unit.getName()); } else { list = new ArrayList(1); this.resUnits.put(unit.getName(), list); } list.add(unit); } public ResourceUnit getResourceUnit(ResourceUnitName unitName) throws NoSuchFieldException { return getResourceUnitList(unitName).get(0); } public List getResourceUnitList(ResourceUnitName unitName) throws NoSuchFieldException { if (resUnits.containsKey(unitName)) return resUnits.get(unitName); else throw new NoSuchFieldException("Resource unit " + unitName + " is not available in resource " + this.id); } public Collection getResourceUnit() { if (resUnits == null) return null; List values = new ArrayList(); Collection> lists = resUnits.values(); Iterator> itr = lists.iterator(); while (itr.hasNext()) { List list = itr.next(); values.addAll(list); } return values; } public Map> getResourceUnits() { return resUnits; } }