/**
* Copyright (c) 2010-2016 by the respective copyright holders.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.openhab.binding.onewire.internal;
import java.util.Map;
import java.util.Set;
import org.openhab.binding.onewire.OneWireBindingProvider;
import org.openhab.core.binding.BindingConfig;
import org.openhab.core.items.Item;
import org.openhab.model.item.binding.AbstractGenericBindingProvider;
import org.openhab.model.item.binding.BindingConfigParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <p>
* This class handles Binding configurations
* It registers as a {@link OneWireBindingProvider} service as well.
* </p>
*
* <p>
* The syntax of the binding configuration is listed in each available OneWireDevicePropertyBindingConfig class
* <p>
*
* @author Thomas.Eichstaedt-Engelen, Dennis Riegelbauer
* @since 0.6.0
*/
public class OneWireGenericBindingProvider extends AbstractGenericBindingProvider implements OneWireBindingProvider {
private static final Logger logger = LoggerFactory.getLogger(OneWireGenericBindingProvider.class);
/*
* (non-Javadoc)
*
* @see org.openhab.model.item.binding.BindingConfigReader#getBindingType()
*/
@Override
public String getBindingType() {
return "onewire";
}
/*
* (non-Javadoc)
*
* @see org.openhab.model.item.binding.BindingConfigReader#validateItemType(org.openhab.core.items.Item,
* java.lang.String)
*/
@Override
public void validateItemType(Item pvItem, String pvBindingConfig) throws BindingConfigParseException {
logger.debug("validateItemType: {} - bindingConfig:{}", pvItem.getName(), pvBindingConfig);
if (OneWireBindingConfigFactory.isValidItemType(pvItem, pvBindingConfig)) {
return;
}
throw new BindingConfigParseException("item '" + pvItem.getName() + "' is of type '"
+ pvItem.getClass().getSimpleName()
+ "', only Number- Contact- and Switch type is allowed - please check your *.items configuration");
}
/*
* (non-Javadoc)
*
* @see org.openhab.model.item.binding.AbstractGenericBindingProvider#processBindingConfiguration(java.lang.String,
* org.openhab.core.items.Item, java.lang.String)
*/
@Override
public void processBindingConfiguration(String pvContext, Item pvItem, String pvBindingConfig)
throws BindingConfigParseException {
OneWireBindingConfig pvDevicePropertyBindingConfig = OneWireBindingConfigFactory
.createOneWireDeviceProperty(pvItem, pvBindingConfig);
addBindingConfig(pvItem, pvDevicePropertyBindingConfig);
super.processBindingConfiguration(pvContext, pvItem, pvBindingConfig);
}
/*
* (non-Javadoc)
*
* @see org.openhab.binding.onewire.OneWireBindingProvider#getItem(java.lang.String)
*/
@Override
public Item getItem(String pvItemName) {
for (Set<Item> lvItems : contextMap.values()) {
if (lvItems != null) {
for (Item lvItem : lvItems) {
if (pvItemName.equals(lvItem.getName())) {
return lvItem;
}
}
}
}
return null;
}
/*
* (non-Javadoc)
*
* @see org.openhab.binding.onewire.OneWireBindingProvider#getBindingConfig(java.lang.String)
*/
@Override
public OneWireBindingConfig getBindingConfig(String pvItemName) {
return (OneWireBindingConfig) bindingConfigs.get(pvItemName);
}
/*
* (non-Javadoc)
*
* @see org.openhab.binding.onewire.OneWireBindingProvider#getBindingConfigs()
*/
@Override
public Map<String, BindingConfig> getBindingConfigs() {
return bindingConfigs;
}
}