source: DCWoRMS/branches/coolemall/src/schedframe/resources/devices/DevicePowerInterface.java @ 1317

Revision 1317, 2.9 KB checked in by wojtekp, 11 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package schedframe.resources.devices;
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.EnergyEvent;
10import schedframe.resources.computing.profiles.energy.EnergyEventType;
11import schedframe.resources.computing.profiles.energy.power.PowerProfile;
12import schedframe.resources.computing.profiles.energy.power.PowerState;
13import schedframe.resources.computing.profiles.energy.power.PowerStateName;
14import schedframe.resources.computing.profiles.energy.power.PowerUsage;
15import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName;
16import schedframe.resources.computing.profiles.energy.power.ui.PowerInterface;
17
18public class DevicePowerInterface implements PowerInterface{
19       
20        protected PowerStateName currentPowerState;
21        protected PowerProfile powerProfile;
22        protected PhysicalResource resource;
23       
24        public DevicePowerInterface(PhysicalResource resource, PowerProfile powerProfile){
25                this.resource = resource;
26                this.powerProfile = powerProfile;
27                this.currentPowerState = StandardPowerStateName.ON;
28        }
29       
30        public boolean setPowerState(PowerStateName state) {
31                if(supportPowerState(state)){
32                        currentPowerState = state;
33
34                        resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.getFullName()));
35
36                        return true;
37                }
38                return false;
39        }
40       
41
42        public PowerStateName getPowerState() {
43                return currentPowerState;
44        }
45
46        public List<PowerState> getSupportedPowerStates() throws NoSuchFieldException {
47                List<PowerState> powerStates = new ArrayList<PowerState>();
48                for(PowerState powerState: powerProfile.getSupportedPowerStates()){
49                        powerStates.add(powerState);
50                }
51                return powerStates;
52        }
53
54        public boolean supportPowerState(PowerStateName state) {
55                for(PowerState powerState: powerProfile.getSupportedPowerStates()){
56                        if(powerState.getName().equals(state)){
57                                return true;
58                        }
59                }
60                return false;
61               
62        }
63       
64        public double getPowerConsumption(PowerStateName state) throws NoSuchFieldException {
65                double powerConsumption = 0;
66                if(supportPowerState(state)){
67                        for(PowerState powerState: powerProfile.getSupportedPowerStates()){
68                                if(powerState.getName().equals(state)){
69                                        powerConsumption = powerState.getPowerUsage();
70                                        break;
71                                }
72                        }
73                } else {
74                        throw new NoSuchFieldException("Power state not supported");
75                }
76                return powerConsumption;
77        }
78
79        public PowerUsage getRecentPowerUsage() {
80                PowerUsage powerUsage = null;
81                int lastIdx = getPowerUsageHistory().size() - 1;
82                if(lastIdx >= 0)
83                        powerUsage = getPowerUsageHistory().get(lastIdx);
84                else { 
85                        try {
86                                powerUsage = new PowerUsage(DateTimeUtils.currentTimeMillis(), getPowerConsumption(currentPowerState));
87                        } catch (NoSuchFieldException e) {
88                        }
89                }
90                return powerUsage;
91        }
92       
93        public List<PowerUsage> getPowerUsageHistory(){
94                return powerProfile.getPowerUsageHistory();
95        }
96       
97        public Parameters getParameters() {
98                return powerProfile.getParameters();
99        }
100
101}
Note: See TracBrowser for help on using the repository browser.