]> git.basschouten.com Git - openhab-addons.git/blob
716da1c188b9ef0f1c4daea4d6d141bfa0cd7060
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
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
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.loxone.internal.controls;
14
15 import java.util.HashMap;
16 import java.util.Map;
17
18 import org.openhab.binding.loxone.internal.controls.LxControl.LxControlInstance;
19 import org.openhab.binding.loxone.internal.types.LxUuid;
20
21 /**
22  * A factory of controls of Loxone Miniserver.
23  * It creates various types of control objects based on control type received from Miniserver.
24  *
25  * @author Pawel Pieczul - initial contribution
26  *
27  */
28 class LxControlFactory {
29     static {
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());
56     }
57
58     private static final Map<String, LxControlInstance> CONTROLS;
59
60     /**
61      * Create a {@link LxControl} object for a control received from the Miniserver
62      *
63      * @param uuid UUID of the control to create
64      * @param type control type
65      * @return created control object or null if error
66      */
67     static LxControl createControl(LxUuid uuid, String type) {
68         LxControlInstance control = CONTROLS.get(type.toLowerCase());
69         if (control != null) {
70             return control.create(uuid);
71         }
72         return null;
73     }
74
75     private static void add(LxControlInstance control) {
76         CONTROLS.put(control.getType(), control);
77     }
78 }