1 | package schedframe.scheduling; |
---|
2 | |
---|
3 | import java.util.ArrayList; |
---|
4 | import java.util.Collection; |
---|
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; |
---|
12 | import schedframe.resources.computing.description.ResourceDescription; |
---|
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 | |
---|
18 | public class SchedulerDescription extends ResourceDescription implements ExecutingResourceDescription{ |
---|
19 | |
---|
20 | protected ResourceProvider provider; |
---|
21 | protected List<QueueDescription> accesQueues; |
---|
22 | protected Map<ResourceUnitName, List<ResourceUnit>> resUnits; |
---|
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 | } |
---|
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 | } |
---|
109 | } |
---|