source: DCWoRMS/branches/coolemall/src/schedframe/scheduling/SchedulerDescription.java @ 1207

Revision 1207, 3.4 KB checked in by wojtekp, 11 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package schedframe.scheduling;
2
3import java.util.ArrayList;
4import java.util.Collection;
5import java.util.HashMap;
6import java.util.Iterator;
7import java.util.List;
8import java.util.Map;
9
10import schedframe.resources.StandardResourceType;
11import schedframe.resources.computing.description.ExecutingResourceDescription;
12import schedframe.resources.computing.description.ResourceDescription;
13import schedframe.resources.providers.ResourceProvider;
14import schedframe.resources.units.ResourceUnit;
15import schedframe.resources.units.ResourceUnitName;
16import schedframe.scheduling.queue.QueueDescription;
17
18public 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}
Note: See TracBrowser for help on using the repository browser.