/** * 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.thing.type; import org.eclipse.smarthome.core.thing.Thing; /** * The {@link ChannelGroupDefinition} class defines a {@link ChannelGroupType} of a {@link ThingType}. * <p> * A {@link ChannelGroupType} is part of a {@link Thing} that represents a set of channels (functionalities) of it. * <p> * <b>Hint:</b> This class is immutable. * * @author Michael Grammling - Initial Contribution * @author Dennis Nobel - Introduced ChannelTypeRegistry and channel type references */ public class ChannelGroupDefinition { private String id; private ChannelGroupTypeUID typeUID; private final String label; private final String description; /** * Creates a new instance of this class with the specified parameters. * * @param id the identifier of the channel group (must neither be null nor empty) * @param typeUID the type UID of the channel group (must not be null) * @param label the label for the channel group to override ChannelGroupType (could be null) * @param description the description for the channel group to override ChannelGroupType (could be null) * * @throws IllegalArgumentException if the ID is null or empty, or the type is null */ public ChannelGroupDefinition(String id, ChannelGroupTypeUID typeUID, String label, String description) throws IllegalArgumentException { if ((id == null) || (id.isEmpty())) { throw new IllegalArgumentException("The ID must neither be null nor empty!"); } if (typeUID == null) { throw new IllegalArgumentException("The channel group type UID must not be null"); } this.id = id; this.typeUID = typeUID; this.label = label; this.description = description; } /** * Creates a new instance of this class with the specified parameters. * * @param id the identifier of the channel group (must neither be null nor empty) * @param typeUID the type UID of the channel group (must not be null) * * @throws IllegalArgumentException if the ID is null or empty, or the type is null */ public ChannelGroupDefinition(String id, ChannelGroupTypeUID typeUID) throws IllegalArgumentException { this(id, typeUID, null, null); } /** * Returns the identifier of the channel group. * * @return the identifier of the channel group (neither null, nor empty) */ public String getId() { return this.id; } /** * Returns the type UID of the channel group. * * @return the type UID of the channel group (not null) */ public ChannelGroupTypeUID getTypeUID() { return this.typeUID; } /** * Returns the label (if set). * If no label is set, getLabel will return null and the default label for the {@link ChannelGroupType} is used. * * @return the label for the channel group. Can be null. */ public String getLabel() { return this.label; } /** * Returns the description (if set). * If no description is set, getDescription will return null and the default description for the * {@link ChannelGroupType} is used. * * @return the description for the channel group. Can be null. */ public String getDescription() { return this.description; } @Override public String toString() { return "ChannelGroupDefinition [id=" + id + ", typeUID=" + typeUID + "]"; } }