source: DCWoRMS/trunk/src/schedframe/resources/computing/profiles/energy/airthroughput/AirThroughputProfile.java @ 495

Revision 495, 1.9 KB checked in by wojtekp, 13 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package schedframe.resources.computing.profiles.energy.airthroughput;
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.airthroughput.plugin.AirThroughputEstimationPlugin;
10
11public class AirThroughputProfile {
12       
13        protected List<AirFlowValue> airFlowHistory;
14       
15        protected AirThroughputEstimationPlugin airThroughputEstimationPlugin;
16        protected List <AirThroughputState> airThroughputStates;
17        protected Parameters parameters;
18
19        public AirThroughputProfile(AirThroughputEstimationPlugin airThroughputEstimationPlugin, List<AirThroughputState> airThroughputStates) {
20                super();
21                this.airThroughputEstimationPlugin = airThroughputEstimationPlugin;
22                this.airThroughputStates = airThroughputStates;
23                this.airFlowHistory = new ArrayList<AirFlowValue>();
24        }
25
26        public List<AirThroughputState> getAirThroughputStates() {
27                return airThroughputStates;
28        }
29       
30        public void addToPowerUsageHistory(double airFlow) {
31
32                if (airFlowHistory.size() == 0) {
33                        AirFlowValue usage = new AirFlowValue(DateTimeUtils.currentTimeMillis(), airFlow);
34                        airFlowHistory.add(usage);
35                        return;
36                }
37
38                int lastIdx = airFlowHistory.size() - 1;
39                double lastAirFlow = airFlowHistory.get(lastIdx).getValue();
40                if (lastAirFlow != airFlow) {
41                        AirFlowValue usage = airFlowHistory.get(lastIdx);
42                        long currentTime = DateTimeUtils.currentTimeMillis();
43                        if (usage.getTimestamp() == currentTime) {
44                                usage.setValue(airFlow);
45                                if(lastIdx > 0 && airFlowHistory.get(lastIdx - 1).getValue() == airFlow)
46                                        airFlowHistory.remove(usage);
47                        } else {
48                                usage = new AirFlowValue(DateTimeUtils.currentTimeMillis(), airFlow);
49                                airFlowHistory.add(usage);
50                        }
51                }
52        }
53
54        public List<AirFlowValue> getAirThroughputHistory() {
55                return airFlowHistory;
56        }
57       
58        public void init(Parameters params){
59                this.parameters = params;
60        }
61
62        public Parameters getParameters() {
63                return parameters;
64        }
65}
Note: See TracBrowser for help on using the repository browser.