use of org.openhab.binding.astro.internal.config.AstroBindingConfig in project openhab1-addons by openhab.
the class PlanetPublisher method publish.
/**
* Iterates through all items and publishes the states.
*/
public void publish(final PlanetName planetName) {
final Planet planet = context.getPlanet(planetName);
new ItemIterator().iterate(new ItemIteratorCallback() {
@Override
public void next(AstroBindingConfig bindingConfig, Item item) {
if (planetName == bindingConfig.getPlanetName()) {
try {
Object value = PropertyUtils.getPropertyValue(planet, bindingConfig.getPlanetProperty());
if (!equalsCachedValue(value, item)) {
publishValue(item, value, bindingConfig);
itemCache.put(item.getName(), value);
}
} catch (Exception ex) {
logger.warn(ex.getMessage(), ex);
}
}
}
});
}
use of org.openhab.binding.astro.internal.config.AstroBindingConfig in project openhab1-addons by openhab.
the class PlanetPublisher method republishItem.
/**
* Republish the state of the item.
*/
public void republishItem(String itemName) {
AstroBindingConfig bindingConfig = null;
for (AstroBindingProvider provider : context.getProviders()) {
if (bindingConfig == null) {
bindingConfig = provider.getBindingFor(itemName);
}
}
if (bindingConfig == null) {
logger.warn("Astro binding for item {} not found", itemName);
} else {
itemCache.remove(itemName);
publish(bindingConfig.getPlanetName());
}
}
use of org.openhab.binding.astro.internal.config.AstroBindingConfig in project openhab1-addons by openhab.
the class ItemIterator method iterate.
/**
* Iterates through all items and calls the callback.
*/
public void iterate(ItemIteratorCallback callback) {
for (AstroBindingProvider provider : context.getProviders()) {
for (String itemName : provider.getItemNames()) {
AstroBindingConfig bindingConfig = provider.getBindingFor(itemName);
Item item = provider.getItem(itemName);
callback.next(bindingConfig, item);
}
}
}
use of org.openhab.binding.astro.internal.config.AstroBindingConfig in project openhab1-addons by openhab.
the class JobScheduler method isBindingForIntervalJobAvailable.
/**
* Checks if a binding for the IntervalJob is available.
*/
private boolean isBindingForIntervalJobAvailable() {
List<AstroBindingConfig> intervalBindings = new ArrayList<AstroBindingConfig>();
intervalBindings.add(new AstroBindingConfig(PlanetName.SUN, "position", "azimuth"));
intervalBindings.add(new AstroBindingConfig(PlanetName.SUN, "position", "elevation"));
intervalBindings.add(new AstroBindingConfig(PlanetName.MOON, "distance", "kilometer"));
intervalBindings.add(new AstroBindingConfig(PlanetName.MOON, "distance", "miles"));
intervalBindings.add(new AstroBindingConfig(PlanetName.MOON, "distance", "date"));
intervalBindings.add(new AstroBindingConfig(PlanetName.MOON, "phase", "illumination"));
intervalBindings.add(new AstroBindingConfig(PlanetName.MOON, "zodiac", "sign"));
intervalBindings.add(new AstroBindingConfig(PlanetName.MOON, "position", "azimuth"));
intervalBindings.add(new AstroBindingConfig(PlanetName.MOON, "position", "elevation"));
for (AstroBindingProvider provider : context.getProviders()) {
for (AstroBindingConfig astroBindingConfig : intervalBindings) {
if (provider.hasBinding(astroBindingConfig)) {
return true;
}
}
}
return false;
}
use of org.openhab.binding.astro.internal.config.AstroBindingConfig in project openhab1-addons by openhab.
the class AstroGenericBindingProvider method processBindingConfiguration.
/**
* {@inheritDoc}
*/
@Override
public void processBindingConfiguration(String context, Item item, String bindingConfig) throws BindingConfigParseException {
super.processBindingConfiguration(context, item, bindingConfig);
AstroBindingConfig config = parser.parse(item, bindingConfig);
logger.debug("Adding item {} with {}", item.getName(), config);
items.put(item.getName(), item);
addBindingConfig(item, config);
}
Aggregations