]> git.basschouten.com Git - openhab-addons.git/blob
4df90556afcc780669bd1600a0e06f1f9220bd42
[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.nest.internal.wwn.dto;
14
15 import java.io.BufferedReader;
16 import java.io.IOException;
17 import java.io.InputStream;
18 import java.io.InputStreamReader;
19 import java.io.Reader;
20 import java.nio.charset.StandardCharsets;
21 import java.util.stream.Collectors;
22
23 import javax.measure.Unit;
24 import javax.measure.quantity.Temperature;
25
26 import org.openhab.binding.nest.internal.wwn.WWNUtils;
27 import org.openhab.core.library.unit.ImperialUnits;
28 import org.openhab.core.library.unit.SIUnits;
29
30 /**
31  * Utility class for working with Nest test data in unit tests.
32  *
33  * @author Wouter Born - Initial contribution
34  */
35 public final class WWNDataUtil {
36
37     public static final String COMPLETE_DATA_FILE_NAME = "top-level-streaming-data.json";
38     public static final String INCOMPLETE_DATA_FILE_NAME = "top-level-streaming-data-incomplete.json";
39     public static final String EMPTY_DATA_FILE_NAME = "top-level-streaming-data-empty.json";
40
41     public static final String CAMERA1_DEVICE_ID = "_LK8j9rRXwCKEBOtDo7JskNxzWfHBOIm3CLouCT3FQZzrvokK_DzFQ";
42     public static final String CAMERA1_WHERE_ID = "z8fK075vJJPPWnXxLx1m3GskRSZQ64iQydB59k-UPsKCxvyZfxNpKA";
43
44     public static final String CAMERA2_DEVICE_ID = "VG7C7BU6Zf8OjEfizmBCVnwnuKHSnOBIHgbQKa57xKJzrvokK_DzFQ";
45     public static final String CAMERA2_WHERE_ID = "qpWvTu89Knhn6GRFM-VtGoE4KYwbzbJg9INR6WyPfhW1EJ04GRyYbQ";
46
47     public static final String SMOKE1_DEVICE_ID = "p1b1oySOcs_sbi4iczruW3Ou-iQr8PMV";
48     public static final String SMOKE1_WHERE_ID = "z8fK075vJJPPWnXxLx1m3GskRSZQ64iQydB59k-UPsIm5E0NfJPeeg";
49
50     public static final String SMOKE2_DEVICE_ID = "p1b1oySOcs8W9WwaNu80oXOu-iQr8PMV";
51     public static final String SMOKE2_WHERE_ID = "z8fK075vJJPPWnXxLx1m3GskRSZQ64iQydB59k-UPsKCxvyZfxNpKA";
52
53     public static final String SMOKE3_DEVICE_ID = "p1b1oySOcs-OJHIgmgeMkHOu-iQr8PMV";
54     public static final String SMOKE3_WHERE_ID = "6UAWzz8czKpFrH6EK3AcjDiTjbRgts8x5MJxEnn1yKKQpYTBO7n2UQ";
55
56     public static final String SMOKE4_DEVICE_ID = "p1b1oySOcs8Qu7IAJVrQ7XOu-iQr8PMV";
57     public static final String SMOKE4_WHERE_ID = "z8fK075vJJPPWnXxLx1m3GskRSZQ64iQydB59k-UPsKQrCrjN0yXiw";
58
59     public static final String STRUCTURE1_STRUCTURE_ID = "ysCnsCaq1pQwKUPP9H4AqE943C1XtLin3x6uCVN5Qh09IDyTg7Ey5A";
60
61     public static final String THERMOSTAT1_DEVICE_ID = "G1jouHN5yl6mXFaQw5iGwXOu-iQr8PMV";
62     public static final String THERMOSTAT1_WHERE_ID = "z8fK075vJJPPWnXxLx1m3GskRSZQ64iQydB59k-UPsKQrCrjN0yXiw";
63
64     private WWNDataUtil() {
65         // Hidden utility class constructor
66     }
67
68     public static Reader openDataReader(String fileName) {
69         String packagePath = (WWNDataUtil.class.getPackage().getName()).replaceAll("\\.", "/");
70         String filePath = "/" + packagePath + "/" + fileName;
71         InputStream inputStream = WWNDataUtil.class.getClassLoader().getResourceAsStream(filePath);
72         return new InputStreamReader(inputStream, StandardCharsets.UTF_8);
73     }
74
75     public static <T> T fromJson(String fileName, Class<T> dataClass) throws IOException {
76         try (Reader reader = openDataReader(fileName)) {
77             return WWNUtils.fromJson(reader, dataClass);
78         }
79     }
80
81     public static String fromFile(String fileName, Unit<Temperature> temperatureUnit) throws IOException {
82         String json = fromFile(fileName);
83         if (SIUnits.CELSIUS.equals(temperatureUnit)) {
84             json = json.replace("\"temperature_scale\": \"F\"", "\"temperature_scale\": \"C\"");
85         } else if (ImperialUnits.FAHRENHEIT.equals(temperatureUnit)) {
86             json = json.replace("\"temperature_scale\": \"C\"", "\"temperature_scale\": \"F\"");
87         }
88         return json;
89     }
90
91     public static String fromFile(String fileName) throws IOException {
92         try (Reader reader = openDataReader(fileName)) {
93             return new BufferedReader(reader).lines().parallel().collect(Collectors.joining("\n"));
94         }
95     }
96 }