/** * 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.control; import org.openhab.binding.onewire.internal.OneWireBinding; import org.openhab.binding.onewire.internal.OneWireBindingConfig; import org.openhab.core.types.Command; import org.openhab.model.item.binding.BindingConfigParseException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Abstract class which can control functions of the onewire-binding, like clearing the ItemStateCache * * Basic Configuration for an OneWire Control Binding: * <code> * onewire="control=<i>controlname</i>" * </code> * * Example: <code> * onewire="control=CLEAR_CACHE" * </code> * * @author Dennis Riegelbauer * @since 1.7.0 */ public abstract class AbstractOneWireControlBindingConfig implements OneWireBindingConfig { private static final Logger logger = LoggerFactory.getLogger(AbstractOneWireControlBindingConfig.class); /** * control Name like <code>CLEAR_CASH</code> */ private String ivControlName; public AbstractOneWireControlBindingConfig(String pvBindingConfig) throws BindingConfigParseException { super(); parseBindingConfig(pvBindingConfig); } private void parseBindingConfig(String pvBindingConfig) throws BindingConfigParseException { String[] pvConfigParts = pvBindingConfig.trim().split(";"); for (String pvConfigPart : pvConfigParts) { parseControl(pvConfigPart); } // control must be filled if (this.ivControlName == null) { logger.error("control is not set in config!"); throw new BindingConfigParseException( "Onewire binding control configuration must contain at least the 'control' name"); } } private void parseControl(String pvConfigPart) { String lvConfigProperty = null; lvConfigProperty = "control="; if (pvConfigPart.startsWith(lvConfigProperty)) { String lvConfigValue = pvConfigPart.substring(lvConfigProperty.length()); this.setControlName(lvConfigValue); } } public String getControlName() { return ivControlName; } public void setControlName(String pvControlName) { this.ivControlName = pvControlName; } /** * Abstract method, which must be implemented by specialized Classes * * @param pvOneWireBinding * @param pvCommand * return new Type for item */ abstract public void executeControl(OneWireBinding pvOneWireBinding, Command pvCommand); @Override public String toString() { return "AbstractOneWireControlBindingConfig [ivControlName=" + ivControlName + "]"; } }