]> git.basschouten.com Git - openhab-addons.git/blob
14248c36f6dccda61129b0cf832834aac3e18237
[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.tankerkoenig.internal.serializer;
14
15 import java.lang.reflect.Type;
16
17 import org.openhab.binding.tankerkoenig.internal.dto.LittleStation;
18 import org.openhab.binding.tankerkoenig.internal.dto.OpeningTime;
19 import org.openhab.binding.tankerkoenig.internal.dto.OpeningTimes;
20 import org.openhab.binding.tankerkoenig.internal.dto.TankerkoenigDetailResult;
21
22 import com.google.gson.JsonDeserializationContext;
23 import com.google.gson.JsonDeserializer;
24 import com.google.gson.JsonElement;
25 import com.google.gson.JsonObject;
26 import com.google.gson.JsonParseException;
27
28 /***
29  * Custom Deserializer for the detail result of tankerkoenigs api response
30  *
31  * @author Jürgen Baginski - Initial contribution
32  */
33 public class CustomTankerkoenigDetailResultDeserializer implements JsonDeserializer<TankerkoenigDetailResult> {
34
35     @Override
36     public TankerkoenigDetailResult deserialize(final JsonElement json, final Type typeOfT,
37             final JsonDeserializationContext context) throws JsonParseException {
38         final JsonObject jsonObject = json.getAsJsonObject();
39         final Boolean isOK = jsonObject.get("ok").getAsBoolean();
40         TankerkoenigDetailResult result = new TankerkoenigDetailResult();
41         if (isOK) {
42             final JsonObject jsonStation = jsonObject.get("station").getAsJsonObject();
43             final Boolean isWholeDay = jsonStation.get("wholeDay").getAsBoolean();
44             final LittleStation littleStation = new LittleStation();
45             if (!jsonStation.get("e10").isJsonNull()) {
46                 final String e10 = jsonStation.get("e10").getAsString();
47                 littleStation.setE10(e10);
48             }
49             if (!jsonStation.get("e5").isJsonNull()) {
50                 final String e5 = jsonStation.get("e5").getAsString();
51                 littleStation.setE5(e5);
52             }
53             if (!jsonStation.get("diesel").isJsonNull()) {
54                 final String diesel = jsonStation.get("diesel").getAsString();
55                 littleStation.setDiesel(diesel);
56             }
57             final Boolean isOpen = jsonStation.get("isOpen").getAsBoolean();
58             final String stationID = jsonStation.get("id").getAsString();
59             OpeningTime[] openingTime = context.deserialize(jsonStation.get("openingTimes"), OpeningTime[].class);
60             littleStation.setOpen(isOpen);
61             littleStation.setID(stationID);
62             final OpeningTimes openingTimes = new OpeningTimes(stationID, isWholeDay, openingTime);
63             result.setLittleStation(littleStation);
64             result.setOk(isOK);
65             result.setwholeDay(isWholeDay);
66             result.setOpeningTimes(openingTimes);
67         } else {
68             final String message = jsonObject.get("message").getAsString();
69             result.setOk(isOK);
70             result.setMessage(message);
71         }
72         return result;
73     }
74 }