package test.rewolucja.energy.profile; import java.util.Arrays; import java.util.List; import schedframe.resources.PowerState; import test.rewolucja.energy.extension.EnergyExtension; import test.rewolucja.extensions.ExtensionType; import test.rewolucja.resources.ResourceStatus; import test.rewolucja.resources.physical.base.ComputingResource; import test.rewolucja.resources.physical.implementation.DataCenter; public class DataCenterPowerProfile extends AbstractPowerProfile { protected DataCenter dataCenter; DataCenterPowerProfile(){ powerState = PowerState.ON; } public void visit(DataCenter dataCent){ dataCenter = dataCent; energyExtension = (EnergyExtension) dataCenter.getExtensionList().getExtension(ExtensionType.ENERGY_EXTENSION); } public boolean setPowerState(PowerState state) { if(!supportPowerState(state)) return false; powerState = state; if(dataCenter.getChildren() != null) { for(ComputingResource child: dataCenter.getChildren()){ child.getPowerInterface().setPowerState(state); } } return true; } public double getPowerConsumption(PowerState state) { throw new RuntimeException("not implememted"); } public boolean supportPowerState(PowerState state) { switch(state){ case ON: return true; case OFF: return true; default: return false; } } public List getSupportedPowerStates() { return Arrays.asList(new PowerState[]{PowerState.ON, PowerState.OFF}); } }