/** * 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.zwave.internal.config; import java.util.HashMap; import java.util.Map; /** * Defines the configuration record. Used to pass configuration information from * a binding in openHAB to a GUI via the REST interface * * @author Chris Jackson * @since 1.4.0 * */ public class OpenHABConfigurationRecord { public String domain; public String name; public String label; public String description; public boolean optional; public boolean readonly; public TYPE type; public STATE state; public String value; public Integer minimum; public Integer maximum; public Map<String, String> valuelist; public Map<String, String> actionlist; enum TYPE { LIST, FREELIST, MULTILIST, CONSTANT, STRING, GROUP, DECIMAL, HEXADECIMAL, BINARY, BYTE, SHORT, LONG } enum STATE { OK, WARNING, ERROR, INITIALIZING, PENDING } /** * Default constructor */ OpenHABConfigurationRecord() { } /** * Constructor for a record. * * @param domain * Domain in which this record sits. The domain allows the system * to identify a record in a multitierd array. If the domain * terminates in a / it is assumed to have children * @param name * The name is the identifier that the system uses to uniquely * identify the record within the domain. It is not shown to the * user. * @param label * The label is the record name presented to the user * @param readonly * If set to true, the record will be read only. */ OpenHABConfigurationRecord(String domain, String name, String label, boolean readonly) { this.domain = domain + name; this.name = name; this.label = label; this.readonly = readonly; } /** * Constructor for top level domain. This constructor is intended for use with top level domains * * @param domain * Domain in which this record sits. The domain allows the system * to identify a record in a multitierd array. If the domain * terminates in a / it is assumed to have children * @param label * The label is the record name presented to the user */ OpenHABConfigurationRecord(String domain, String label) { this.domain = domain; this.label = label; this.readonly = true; } /** * Adds an action to the record. An action will be displayed in the GUI with * a button that the user can press. * * @param key * @param value */ public void addAction(String key, String value) { if (actionlist == null) { actionlist = new HashMap<String, String>(); } actionlist.put(key, value); } /** * Adds the value to the record * * @param key * @param value */ public void addValue(String key, String value) { if (valuelist == null) { valuelist = new HashMap<String, String>(); } valuelist.put(key, value); } class Action { String name; } }