/** * Copyright (c) 2014-2017 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.eclipse.smarthome.core.types; import java.util.Formatter; /** * This is a parent interface for all states and commands. * It was introduced as many states can be commands at the same time and * vice versa. E.g a light can have the state ON or OFF and one can * also send ON and OFF as commands to the device. This duality is * captured by this marker interface and allows implementing classes * to be both state and command at the same time. * * @author Kai Kreuzer - Initial contribution and API * @author Markus Rathgeb - Add the simple and full type string methods */ public interface Type { /** * Formats the value of this type according to a pattern (see {@link Formatter}). * * @param pattern the pattern to use * @return the formatted string */ String format(String pattern); /** * Get a string representation that contains the whole internal representation of the type. * * <p> * The returned string could be consumed by the static 'valueOf(String)' method of the respective type to build a * new type that is equal to this type. * * @return a full string representation of the type to be consumed by 'valueOf(String)' */ String toFullString(); }