/** * Copyright (c) 1997, 2015 by ProSyst Software GmbH 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.eclipse.smarthome.automation.template; import java.util.Set; import org.eclipse.smarthome.automation.Rule; import org.eclipse.smarthome.automation.Visibility; /** * The templates define types of shared, ready to use rule definitions, which * can be instantiated and configured to produce {@link Rule} instances . Each * Template has a unique id (UID). * <p> * The {@link Template}s can be used by any creator of Rules, but they can be modified only by its owner. The template * modification is done by updating the {@link Template} through {@link TemplateRegistry} * <p> * Templates can have <code>tags</code> - non-hierarchical keywords or terms for describing them. * * @author Yordan Mihaylov - Initial Contribution * @author Ana Dimova - Initial Contribution * @author Vasil Ilchev - Initial Contribution */ public interface Template { /** * This method is used for getting the type of Template. It is unique in scope * of RuleEngine. * * @return the unique id of Template. */ public String getUID(); /** * Templates can have * <ul> * <li><code>tags</code> - non-hierarchical keywords or terms for describing them. The tags are * used to filter the templates. This method is used for getting the assign tags to this Template.</li> * </ul> * * @return tags of the template */ public Set<String> getTags(); /** * This method is used for getting the label of the Template. The label is a * short, user friendly name of the Template defined by this descriptor. * * @return the label of the Template. */ public String getLabel(); /** * This method is used for getting the description of the Template. The * description is a long, user friendly description of the Template defined by * this descriptor. * * @return the description of the Template. */ public String getDescription(); /** * This method is used to show visibility of the template * * @return visibility of template */ public Visibility getVisibility(); }