source: DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/load/LoadProfile.java @ 1285

Revision 1285, 2.5 KB checked in by wojtekp, 11 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package schedframe.resources.computing.profiles.load;
2
3import java.util.ArrayList;
4import java.util.List;
5
6import org.joda.time.DateTimeUtils;
7
8import schedframe.Parameters;
9import schedframe.resources.computing.profiles.energy.MeasurementHistory;
10import schedframe.resources.computing.profiles.load.plugin.LoadEstimationPlugin;
11import schemas.LoadCalendar;
12import schemas.WeekDay;
13import schemas.WeekDayTypeChoice;
14import schemas.types.DayType;
15
16public class LoadProfile {
17
18        protected List<MeasurementHistory> utlizationHistory;
19        protected LoadEstimationPlugin loadEstimationPlugin;
20
21        protected ResourceLoadCalendar loadCalendar;
22       
23        protected Parameters parameters;
24       
25
26        public LoadProfile(LoadEstimationPlugin loadEstimationPlugin, ResourceLoadCalendar loadCal) {
27                this.loadEstimationPlugin = loadEstimationPlugin;
28                this.loadCalendar = loadCal;
29                this.utlizationHistory = new ArrayList<MeasurementHistory>();
30        }
31
32
33        public LoadEstimationPlugin getLoadEstimationPlugin() {
34                return loadEstimationPlugin;
35        }
36       
37        public ResourceLoadCalendar getLoadCalendar() {
38                if(loadCalendar == null){
39                        LoadCalendar lc = new LoadCalendar();
40                        WeekDay weekDay = new WeekDay();
41                        weekDay.setType(DayType.VALUE_0);
42                        WeekDayTypeChoice wdc = new WeekDayTypeChoice();
43                        wdc.setLoadLevel(0);
44                        weekDay.setWeekDayTypeChoice(wdc);
45                        lc.addWeekDay(weekDay);
46                        return new ResourceLoadCalendar(lc);
47                }
48                return loadCalendar;
49        }
50
51        public boolean addToLoadHistory(double load) {
52
53                if (utlizationHistory.size() == 0) {
54                        MeasurementHistory usage = new MeasurementHistory(DateTimeUtils.currentTimeMillis(), load);
55                        utlizationHistory.add(usage);
56                        return true;
57                }
58
59                boolean status = false;
60                int lastIdx = utlizationHistory.size() - 1;
61                double lastLoad = utlizationHistory.get(lastIdx).getValue();
62                if (lastLoad != load) {
63                        status = true;
64                        MeasurementHistory util = utlizationHistory.get(lastIdx);
65                        long currentTime = DateTimeUtils.currentTimeMillis();
66                        if (util.getTimestamp() == currentTime) {
67                                util.setValue(load);
68                                if(lastIdx > 0 && utlizationHistory.get(lastIdx - 1).getValue() == load)
69                                        utlizationHistory.remove(util);
70                        } else {
71                                util = new MeasurementHistory(DateTimeUtils.currentTimeMillis(), load);
72                                utlizationHistory.add(util);
73                        }
74                }
75                return status;
76        }
77
78        public List<MeasurementHistory> getUtilizationHistory() {
79                return utlizationHistory;
80        }
81
82        public void init(Parameters params){
83                this.parameters = params;
84        }
85       
86        public Parameters getParameters() {
87                return parameters;
88        }
89
90}
Note: See TracBrowser for help on using the repository browser.