[477] | 1 | package schedframe.scheduling; |
---|
| 2 | |
---|
| 3 | import java.util.ArrayList; |
---|
[1207] | 4 | import java.util.Collection; |
---|
[477] | 5 | import java.util.HashMap; |
---|
| 6 | import java.util.Iterator; |
---|
| 7 | import java.util.List; |
---|
| 8 | import java.util.Map; |
---|
| 9 | |
---|
| 10 | import schedframe.resources.StandardResourceType; |
---|
| 11 | import schedframe.resources.computing.description.ExecutingResourceDescription; |
---|
[1207] | 12 | import schedframe.resources.computing.description.ResourceDescription; |
---|
[477] | 13 | import schedframe.resources.providers.ResourceProvider; |
---|
| 14 | import schedframe.resources.units.ResourceUnit; |
---|
| 15 | import schedframe.resources.units.ResourceUnitName; |
---|
| 16 | import schedframe.scheduling.queue.QueueDescription; |
---|
| 17 | |
---|
[1207] | 18 | public class SchedulerDescription extends ResourceDescription implements ExecutingResourceDescription{ |
---|
[477] | 19 | |
---|
| 20 | protected ResourceProvider provider; |
---|
| 21 | protected List<QueueDescription> accesQueues; |
---|
[1207] | 22 | protected Map<ResourceUnitName, List<ResourceUnit>> resUnits; |
---|
[477] | 23 | |
---|
| 24 | public SchedulerDescription(ResourceProvider provider){ |
---|
| 25 | super(StandardResourceType.ResourceProvider); |
---|
| 26 | this.id = provider.getProviderId(); |
---|
| 27 | this.provider = provider; |
---|
| 28 | this.resUnits = new HashMap<ResourceUnitName, List<ResourceUnit>>(); |
---|
| 29 | this.accesQueues = new ArrayList<QueueDescription>(1); |
---|
| 30 | } |
---|
| 31 | |
---|
| 32 | public SchedulerDescription(String id){ |
---|
| 33 | super(StandardResourceType.ResourceProvider); |
---|
| 34 | this.id = id; |
---|
| 35 | this.provider = new ResourceProvider(id, null, null, null); |
---|
| 36 | this.resUnits = new HashMap<ResourceUnitName, List<ResourceUnit>>(); |
---|
| 37 | this.accesQueues = new ArrayList<QueueDescription>(1); |
---|
| 38 | } |
---|
| 39 | |
---|
| 40 | public void addQueueDescription(QueueDescription queue){ |
---|
| 41 | accesQueues.add(queue); |
---|
| 42 | } |
---|
| 43 | |
---|
| 44 | public void addQueuesDescription(List<QueueDescription> queue){ |
---|
| 45 | accesQueues.addAll(queue); |
---|
| 46 | } |
---|
| 47 | |
---|
| 48 | public List<QueueDescription> getAvailableQueues(){ |
---|
| 49 | return this.accesQueues; |
---|
| 50 | } |
---|
| 51 | |
---|
| 52 | public void addResourceUnit(Map<ResourceUnitName, ResourceUnit> allUnits){ |
---|
| 53 | Iterator<ResourceUnit> itr = allUnits.values().iterator(); |
---|
| 54 | while(itr.hasNext()){ |
---|
| 55 | addResourceUnit(itr.next()); |
---|
| 56 | } |
---|
| 57 | } |
---|
| 58 | |
---|
| 59 | public void addResourceUnitList(Map<ResourceUnitName, List<ResourceUnit>> allUnits){ |
---|
| 60 | this.resUnits.putAll(allUnits); |
---|
| 61 | } |
---|
| 62 | |
---|
| 63 | public ResourceProvider getProvider() { |
---|
| 64 | return provider; |
---|
| 65 | } |
---|
[1207] | 66 | |
---|
| 67 | public void addResourceUnit(ResourceUnit unit) { |
---|
| 68 | if (this.resUnits == null) |
---|
| 69 | this.resUnits = new HashMap<ResourceUnitName, List<ResourceUnit>>(1); |
---|
| 70 | List<ResourceUnit> list = null; |
---|
| 71 | if (this.resUnits.containsKey(unit.getName())) { |
---|
| 72 | list = this.resUnits.get(unit.getName()); |
---|
| 73 | } else { |
---|
| 74 | list = new ArrayList<ResourceUnit>(1); |
---|
| 75 | this.resUnits.put(unit.getName(), list); |
---|
| 76 | } |
---|
| 77 | list.add(unit); |
---|
| 78 | } |
---|
| 79 | |
---|
| 80 | public ResourceUnit getResourceUnit(ResourceUnitName unitName) throws NoSuchFieldException { |
---|
| 81 | return getResourceUnitList(unitName).get(0); |
---|
| 82 | } |
---|
| 83 | |
---|
| 84 | public List<ResourceUnit> getResourceUnitList(ResourceUnitName unitName) throws NoSuchFieldException { |
---|
| 85 | if (resUnits.containsKey(unitName)) |
---|
| 86 | return resUnits.get(unitName); |
---|
| 87 | else |
---|
| 88 | throw new NoSuchFieldException("Resource unit " + unitName + " is not available in resource " + this.id); |
---|
| 89 | } |
---|
| 90 | |
---|
| 91 | public Collection<ResourceUnit> getResourceUnit() { |
---|
| 92 | if (resUnits == null) |
---|
| 93 | return null; |
---|
| 94 | List<ResourceUnit> values = new ArrayList<ResourceUnit>(); |
---|
| 95 | Collection<List<ResourceUnit>> lists = resUnits.values(); |
---|
| 96 | Iterator<List<ResourceUnit>> itr = lists.iterator(); |
---|
| 97 | |
---|
| 98 | while (itr.hasNext()) { |
---|
| 99 | List<ResourceUnit> list = itr.next(); |
---|
| 100 | values.addAll(list); |
---|
| 101 | } |
---|
| 102 | |
---|
| 103 | return values; |
---|
| 104 | } |
---|
| 105 | |
---|
| 106 | public Map<ResourceUnitName, List<ResourceUnit>> getResourceUnits() { |
---|
| 107 | return resUnits; |
---|
| 108 | } |
---|
[477] | 109 | } |
---|