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.tankerkoenig.internal.serializer;
15 import java.lang.reflect.Type;
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;
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;
29 * Custom Deserializer for the detail result of tankerkoenigs api response
31 * @author Jürgen Baginski - Initial contribution
33 public class CustomTankerkoenigDetailResultDeserializer implements JsonDeserializer<TankerkoenigDetailResult> {
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();
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);
49 if (!jsonStation.get("e5").isJsonNull()) {
50 final String e5 = jsonStation.get("e5").getAsString();
51 littleStation.setE5(e5);
53 if (!jsonStation.get("diesel").isJsonNull()) {
54 final String diesel = jsonStation.get("diesel").getAsString();
55 littleStation.setDiesel(diesel);
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);
65 result.setwholeDay(isWholeDay);
66 result.setOpeningTimes(openingTimes);
68 final String message = jsonObject.get("message").getAsString();
70 result.setMessage(message);