Package org.openhab.binding.fht.internal

Source Code of org.openhab.binding.fht.internal.FHTGenericBindingProvider

/**
* Copyright (c) 2010-2014, openHAB.org and others.
*
* 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.fht.internal;

import java.util.ArrayList;
import java.util.List;

import org.openhab.binding.fht.FHTBindingConfig;
import org.openhab.binding.fht.FHTBindingConfig.Datapoint;
import org.openhab.binding.fht.FHTBindingProvider;
import org.openhab.core.binding.BindingConfig;
import org.openhab.core.items.Item;
import org.openhab.core.library.items.ContactItem;
import org.openhab.core.library.items.NumberItem;
import org.openhab.core.library.items.SwitchItem;
import org.openhab.model.item.binding.AbstractGenericBindingProvider;
import org.openhab.model.item.binding.BindingConfigParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* This class is responsible for parsing the binding configuration.
*
* @author Till Klocke
* @since 1.4.0
*/
public class FHTGenericBindingProvider extends AbstractGenericBindingProvider
    implements FHTBindingProvider {

  private final static Logger logger = LoggerFactory
      .getLogger(FHTGenericBindingProvider.class);

  /**
   * {@inheritDoc}
   */
  public String getBindingType() {
    return "fht";
  }

  /**
   * @{inheritDoc
   */
  @Override
  public void validateItemType(Item item, String bindingConfig)
      throws BindingConfigParseException {
    if (!(item instanceof SwitchItem || item instanceof NumberItem || item instanceof ContactItem)) {
      throw new BindingConfigParseException(
          "item '"
              + item.getName()
              + "' is of type '"
              + item.getClass().getSimpleName()
              + "', only Switch-, Contact- and NumberItems are allowed - please check your *.items configuration");
    }
  }

  /**
   * Binding in the type of
   * {fht="housecode=<housecode>;address=<optional>;datapoint=<optional>"}
   * {@inheritDoc}
   */
  @Override
  public void processBindingConfiguration(String context, Item item,
      String bindingConfig) throws BindingConfigParseException {
    super.processBindingConfiguration(context, item, bindingConfig);
    String[] configParts = bindingConfig.split(";");

    String housecode = null;
    String address = null;
    Datapoint datapoint = null;
    for (String s : configParts) {
      String[] entryParts = s.split("=");
      if ("housecode".equals(entryParts[0])) {
        housecode = entryParts[1];
      } else if ("address".equals(entryParts[0])) {
        address = entryParts[1];
      } else if ("datapoint".equals(entryParts[0])) {
        datapoint = Datapoint.valueOf(entryParts[1]);
      }
    }

    if (housecode == null) {
      throw new BindingConfigParseException("housecode mustn't be null");
    }
    if (datapoint == null) {
      throw new BindingConfigParseException(
          "datapoint must be one of MEASURED_TEMP, DESIRED_TEMP, BATTERY, WINDOW or VALVE");
    }

    if ((datapoint == Datapoint.WINDOW || datapoint == Datapoint.VALVE)
        && address == null) {
      throw new BindingConfigParseException(
          "Address of window contact needed");
    }
    FHTBindingConfig config = new FHTBindingConfig(item, housecode,
        address, datapoint);
    addBindingConfig(item, config);
  }

  @Override
  public FHTBindingConfig getConfigByItemName(String itemName) {
    return (FHTBindingConfig) bindingConfigs.get(itemName);
  }

  @Override
  public FHTBindingConfig getConfigByFullAddress(String fullAddress,
      Datapoint datapoint) {
    for (BindingConfig c : bindingConfigs.values()) {
      FHTBindingConfig fhtConfig = (FHTBindingConfig) c;
      if (fhtConfig.getFullAddress().equals(fullAddress)
          && fhtConfig.getDatapoint() == datapoint) {
        return fhtConfig;
      }
    }
    return null;
  }

  @Override
  public List<FHTBindingConfig> getAllFHT80bBindingConfigs() {
    List<FHTBindingConfig> configs = new ArrayList<FHTBindingConfig>();
    for (BindingConfig c : bindingConfigs.values()) {
      FHTBindingConfig config = (FHTBindingConfig) c;
      if (config.getFullAddress().length() == 4
          && !configs.contains(config)) {
        configs.add(config);
      }
    }
    return configs;
  }

}
TOP

Related Classes of org.openhab.binding.fht.internal.FHTGenericBindingProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.