package org.opennaas.extensions.power.capabilities; import org.opennaas.core.resources.descriptor.CapabilityDescriptor; import org.opennaas.extensions.gim.controller.capabilities.IPowerSupplyController; import org.opennaas.extensions.gim.model.energy.Energy; import org.opennaas.extensions.power.capabilities.driver.ConsumerDriverInstantiator; public class PowerSupplyCapability extends AbstractPowerConsumerCapability implements IPowerSupplyCapability { public static String CAPABILITY_TYPE = "consumer_pw_sup"; private String resourceId = ""; private IPowerSupplyController driver; public PowerSupplyCapability(CapabilityDescriptor descriptor, String resourceId) { super(descriptor); this.resourceId = resourceId; } @Override public String getCapabilityName() { return CAPABILITY_TYPE; } @Override public Energy getAggregatedEnergy() throws Exception { return getDriver().getAggregatedEnergy(); } @Override public double getAggregatedPricePerEnergyUnit() throws Exception { return getDriver().getAggregatedPricePerEnergyUnit(); } @Override public void resyncModel() throws Exception { // Nothing to do } private IPowerSupplyController getDriver() throws Exception { // FIXME CAPABILITY SHOULD NOT INSTANTIATE IT'S OWN DRIVER. if (driver == null) driver = instantiateDriver(); return driver; } // FIXME CAPABILITY SHOULD NOT INSTANTIATE IT'S OWN DRIVER. private IPowerSupplyController instantiateDriver() throws Exception { // FIXME PDUDriverInstantiator should be unknown for the capability // capability should take the driver from an OSGI service. return (IPowerSupplyController) ConsumerDriverInstantiator.create(resourceId, getPowernetId(), consumerId, descriptor); } }