2 * Copyright (c) 2010-2022 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.http.internal.config;
15 import java.math.BigDecimal;
16 import java.util.HashMap;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.eclipse.jdt.annotation.Nullable;
21 import org.openhab.binding.http.internal.converter.ColorItemConverter;
22 import org.openhab.core.library.types.IncreaseDecreaseType;
23 import org.openhab.core.library.types.NextPreviousType;
24 import org.openhab.core.library.types.OnOffType;
25 import org.openhab.core.library.types.OpenClosedType;
26 import org.openhab.core.library.types.PlayPauseType;
27 import org.openhab.core.library.types.RewindFastforwardType;
28 import org.openhab.core.library.types.StopMoveType;
29 import org.openhab.core.library.types.UpDownType;
30 import org.openhab.core.types.Command;
31 import org.openhab.core.types.State;
34 * The {@link HttpChannelConfig} class contains fields mapping channel configuration parameters.
36 * @author Jan N. Klug - Initial contribution
39 public class HttpChannelConfig {
40 private final Map<String, State> stringStateMap = new HashMap<>();
41 private final Map<Command, @Nullable String> commandStringMap = new HashMap<>();
42 private boolean initialized = false;
44 public @Nullable String stateExtension;
45 public @Nullable String commandExtension;
46 public @Nullable String stateTransformation;
47 public @Nullable String commandTransformation;
48 public String stateContent = "";
50 public HttpChannelMode mode = HttpChannelMode.READWRITE;
53 public @Nullable String unit;
55 // switch, dimmer, color
56 public @Nullable String onValue;
57 public @Nullable String offValue;
60 public BigDecimal step = BigDecimal.ONE;
61 public @Nullable String increaseValue;
62 public @Nullable String decreaseValue;
65 public ColorItemConverter.ColorMode colorMode = ColorItemConverter.ColorMode.RGB;
68 public @Nullable String openValue;
69 public @Nullable String closedValue;
72 public @Nullable String upValue;
73 public @Nullable String downValue;
74 public @Nullable String stopValue;
75 public @Nullable String moveValue;
78 public @Nullable String playValue;
79 public @Nullable String pauseValue;
80 public @Nullable String nextValue;
81 public @Nullable String previousValue;
82 public @Nullable String rewindValue;
83 public @Nullable String fastforwardValue;
86 * maps a command to a user-defined string
88 * @param command the command to map
89 * @return a string or null if no mapping found
91 public @Nullable String commandToFixedValue(Command command) {
96 return commandStringMap.get(command);
100 * maps a user-defined string to a state
102 * @param string the string to map
103 * @return the state or null if no mapping found
105 public @Nullable State fixedValueToState(String string) {
110 return stringStateMap.get(string);
113 private void createMaps() {
114 addToMaps(this.onValue, OnOffType.ON);
115 addToMaps(this.offValue, OnOffType.OFF);
116 addToMaps(this.openValue, OpenClosedType.OPEN);
117 addToMaps(this.closedValue, OpenClosedType.CLOSED);
118 addToMaps(this.upValue, UpDownType.UP);
119 addToMaps(this.downValue, UpDownType.DOWN);
121 commandStringMap.put(IncreaseDecreaseType.INCREASE, increaseValue);
122 commandStringMap.put(IncreaseDecreaseType.DECREASE, decreaseValue);
123 commandStringMap.put(StopMoveType.STOP, stopValue);
124 commandStringMap.put(StopMoveType.MOVE, moveValue);
125 commandStringMap.put(PlayPauseType.PLAY, playValue);
126 commandStringMap.put(PlayPauseType.PAUSE, pauseValue);
127 commandStringMap.put(NextPreviousType.NEXT, nextValue);
128 commandStringMap.put(NextPreviousType.PREVIOUS, previousValue);
129 commandStringMap.put(RewindFastforwardType.REWIND, rewindValue);
130 commandStringMap.put(RewindFastforwardType.FASTFORWARD, fastforwardValue);
135 private void addToMaps(@Nullable String value, State state) {
137 commandStringMap.put((Command) state, value);
138 stringStateMap.put(value, state);