Search in sources :

Example 1 with AstroBindingConfig

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);
                }
            }
        }
    });
}
Also used : Item(org.openhab.core.items.Item) ItemIteratorCallback(org.openhab.binding.astro.internal.util.ItemIterator.ItemIteratorCallback) Planet(org.openhab.binding.astro.internal.model.Planet) AstroBindingConfig(org.openhab.binding.astro.internal.config.AstroBindingConfig) ItemIterator(org.openhab.binding.astro.internal.util.ItemIterator)

Example 2 with AstroBindingConfig

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());
    }
}
Also used : AstroBindingProvider(org.openhab.binding.astro.AstroBindingProvider) AstroBindingConfig(org.openhab.binding.astro.internal.config.AstroBindingConfig)

Example 3 with AstroBindingConfig

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);
        }
    }
}
Also used : Item(org.openhab.core.items.Item) AstroBindingProvider(org.openhab.binding.astro.AstroBindingProvider) AstroBindingConfig(org.openhab.binding.astro.internal.config.AstroBindingConfig)

Example 4 with AstroBindingConfig

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;
}
Also used : ArrayList(java.util.ArrayList) AstroBindingProvider(org.openhab.binding.astro.AstroBindingProvider) AstroBindingConfig(org.openhab.binding.astro.internal.config.AstroBindingConfig)

Example 5 with AstroBindingConfig

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);
}
Also used : AstroBindingConfig(org.openhab.binding.astro.internal.config.AstroBindingConfig)

Aggregations

AstroBindingConfig (org.openhab.binding.astro.internal.config.AstroBindingConfig)6 AstroBindingProvider (org.openhab.binding.astro.AstroBindingProvider)3 Item (org.openhab.core.items.Item)2 ArrayList (java.util.ArrayList)1 Planet (org.openhab.binding.astro.internal.model.Planet)1 PlanetName (org.openhab.binding.astro.internal.model.PlanetName)1 ItemIterator (org.openhab.binding.astro.internal.util.ItemIterator)1 ItemIteratorCallback (org.openhab.binding.astro.internal.util.ItemIterator.ItemIteratorCallback)1 BindingConfigParseException (org.openhab.model.item.binding.BindingConfigParseException)1