2 * Copyright (c) 2010-2023 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.loxone.internal.controls;
15 import java.util.HashMap;
18 import org.openhab.binding.loxone.internal.controls.LxControl.LxControlInstance;
19 import org.openhab.binding.loxone.internal.types.LxUuid;
22 * A factory of controls of Loxone Miniserver.
23 * It creates various types of control objects based on control type received from Miniserver.
25 * @author Pawel Pieczul - initial contribution
28 class LxControlFactory {
30 CONTROLS = new HashMap<>();
31 add(new LxControlAlarm.Factory());
32 add(new LxControlColorPickerV2.Factory());
33 add(new LxControlDimmer.Factory());
34 add(new LxControlEIBDimmer.Factory());
35 add(new LxControlInfoOnlyAnalog.Factory());
36 add(new LxControlInfoOnlyDigital.Factory());
37 add(new LxControlIRoomControllerV2.Factory());
38 add(new LxControlJalousie.Factory());
39 add(new LxControlLeftRightAnalog.Factory());
40 add(new LxControlLeftRightDigital.Factory());
41 add(new LxControlLightController.Factory());
42 add(new LxControlLightControllerV2.Factory());
43 add(new LxControlMeter.Factory());
44 add(new LxControlPushbutton.Factory());
45 add(new LxControlRadio.Factory());
46 add(new LxControlSauna.Factory());
47 add(new LxControlSlider.Factory());
48 add(new LxControlSwitch.Factory());
49 add(new LxControlTextState.Factory());
50 add(new LxControlTimedSwitch.Factory());
51 add(new LxControlTracker.Factory());
52 add(new LxControlUpDownAnalog.Factory());
53 add(new LxControlUpDownDigital.Factory());
54 add(new LxControlValueSelector.Factory());
55 add(new LxControlWebPage.Factory());
58 private static final Map<String, LxControlInstance> CONTROLS;
61 * Create a {@link LxControl} object for a control received from the Miniserver
63 * @param uuid UUID of the control to create
64 * @param type control type
65 * @return created control object or null if error
67 static LxControl createControl(LxUuid uuid, String type) {
68 LxControlInstance control = CONTROLS.get(type.toLowerCase());
69 if (control != null) {
70 return control.create(uuid);
75 private static void add(LxControlInstance control) {
76 CONTROLS.put(control.getType(), control);