org.openhab.binding.netatmo.internal.camera.GetHomeDataResponse.java Source code

Java tutorial

Introduction

Here is the source code for org.openhab.binding.netatmo.internal.camera.GetHomeDataResponse.java

Source

/**
 * Copyright (c) 2010-2019 by the respective copyright holders.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 */
package org.openhab.binding.netatmo.internal.camera;

import java.util.Date;
import java.util.List;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.openhab.binding.netatmo.internal.messages.AbstractMessagePart;
import org.openhab.binding.netatmo.internal.messages.AbstractResponse;

/**
 * Java Bean to represent a JSON response to a <code>gethomedata</code> API
 * method call.
 * <p>
 * Sample response:
 *
 * <pre>
 *  {
 * "body":  {
 *   "homes":  [
 *     {
 *       "id":  "55817b8da88d1fb55d8b4689",
 *       "name":  "Home Tom",
 *       "place":  {
 *         "country":  "SE",
 *         "timezone":  "Europe/Stockholm"
 *       },
 *       "persons":  [
 *          {
 *           "id":  "0c08eedb-cc6b-4299-8b8f-1fbb939536c8",
 *            "last_seen":  1441110023,
 *           "out_of_sight":  false,
 *            "face":  {
 *              "id":  "55e598250a6e6e6170cf7cfb",
 *              "version":  1,
 *             "key":  "f06de130500990d5286a11d9b9c83eeaa530d984b0a2f6bca433472827f3f25c"
 *           }
 *         },
 *         {
 *           "id":  "0e52b4da-2d5a-42f5-be6e-85d8db7adfe8",
 *           "last_seen":  1441112288,
 *           "out_of_sight":  false,
 *           "face":  {
 *             "id":  "55e5a1240a6e6e5e70cf7e0a",
 *             "version":  1,
 *             "key":  "2c24b42ee7b87a47d16a046a6d0c0821523c5474b30c0b142ffc3510beddd67f"
 *           }
 *         },
 *         {
 *           "id":  "13e843a4-2bcb-4d52-855c-1c5570663f76",
 *           "last_seen":  1441114497,
 *           "out_of_sight":  false,
 *           "face":  {
 *             "id":  "55e5a98d0a6e6e6170cf7d4c",
 *             "version":  1,
 *             "key":  "42d2c1dd175c9128b2188537551680c3fc2c8d14eb1126c82342007db6b52848"
 *           }
 *         },
 *         {
 *           "id":  "3550700b-36cd-4c92-8b97-b64dba19f62e",
 *           "last_seen":  1441120682,
 *           "out_of_sight":  false,
 *           "face":  {
 *             "id":  "559b9b3f0a6e6ed8668b466b",
 *             "key":  "311e4ca310587a1ac0ffb2f31e7d2fc99ef5f7a7ca85cbe59242aaafacd82c25",
 *             "version":  1
 *           },
 *           "pseudo":  "Tom"
 *         }
 *       ],
 *       "events":  [
 *          {
 *           "id":  "55e5c1c50a6e6e5f70cf7e4e",
 *           "type":  "person",
 *           "time":  1441120682,
 *           "camera_id":  "70:ee:50:13:8b:35",
 *           "person_id":  "3550700b-36cd-4c92-8b97-b64dba19f62e",
 *           "snapshot":  {
 *             "id":  "55e5c1c50a6e6e5f70cf7e50",
 *             "version":  1,
 *             "key":  "8bbbe58c7b4fba061e8c29c2b7a57e6d16956b06c6ebd992e01267e755f7df72"
 *           },
 *           "is_arrival":  false,
 *           "message":  "Tom seen"
 *         }
 *       ],
 *       "cameras":  [
 *         {
 *           "id":  "70:ee:50:13:8b:35",
 *           "status":  "on",
 *           "sd_status":  "on",
 *           "alim_status":  "on",
 *           "name":  "Tom's"
 *         },
 *         {
 *            "id":  "70:ee:50:13:eb:35",
 *           "status":  "disconnected",
 *           "sd_status":  "on",
 *           "alim_status":  "on"
 *         }
 *       ]
 *     }
 *   ],
 *   "user":  {
 *     "reg_locale":  "en-US",
 *     "lang":  "en-US"
 *   }
 * },
 * "status": "ok",
 * "time_exec":  0.015316009521484,
 * "time_server":  1441120797
 *}
 * </pre>
 *
 * @author Ing. Peter Weiss
 * @since 1.8.0
 */
@JsonIgnoreProperties(ignoreUnknown = true)
public class GetHomeDataResponse extends AbstractResponse {

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Body extends AbstractMessagePart {
        private List<Home> homes;
        private User user;

        /**
         * "homes": [
         * ...
         * ],
         */
        @JsonProperty("homes")
        public List<Home> getHomes() {
            return this.homes;
        }

        /**
         * "user": {
         * "reg_locale": "en-US",
         * "lang": "en-US"
         */
        @JsonProperty("user")
        public User getUser() {
            return user;
        }

        @Override
        public String toString() {
            final ToStringBuilder builder = createToStringBuilder();
            builder.appendSuper(super.toString());
            builder.append("homes", this.homes);
            builder.append("user", this.user);

            return builder.toString();
        }

    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Home extends AbstractMessagePart {
        private String id;
        private String name;
        private Place place;
        private List<Person> persons;
        private List<Event> events;
        private List<Camera> cameras;

        /**
         * "id": "55817b8da88d1fb55d8b4689",
         */
        @JsonProperty("id")
        public String getId() {
            return id;
        }

        /**
         * "name": "Home Tom",
         */
        @JsonProperty("name")
        public String getName() {
            return name;
        }

        /**
         * "place": {
         * "country": "SE",
         * "timezone": "Europe/Stockholm"
         * },
         */
        @JsonProperty("place")
        public Place getPlace() {
            return place;
        }

        /**
         * "persons": [
         * ...
         * ],
         */
        @JsonProperty("persons")
        public List<Person> getPersons() {
            return persons;
        }

        /**
         * "events": [
         * ...
         * ],
         */
        @JsonProperty("events")
        public List<Event> getEvents() {
            return events;
        }

        /**
         * "cameras": [
         * ...
         * ],
         */
        @JsonProperty("cameras")
        public List<Camera> getCameras() {
            return cameras;
        }

        @Override
        public String toString() {
            final ToStringBuilder builder = createToStringBuilder();
            builder.appendSuper(super.toString());
            builder.append("id", this.id);
            builder.append("name", this.name);
            builder.append("place", this.place);
            builder.append("persons", this.persons);
            builder.append("events", this.events);
            builder.append("cameras", this.cameras);

            return builder.toString();
        }

    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Place extends AbstractMessagePart {
        private String country;
        private String timezone;

        /**
         * "country": "SE",
         */
        @JsonProperty("country")
        public String getCountry() {
            return this.country;
        }

        /**
         * "timezone": "Europe/Stockholm"
         */
        @JsonProperty("timezone")
        public String getTimezone() {
            return this.timezone;
        }

        @Override
        public String toString() {
            final ToStringBuilder builder = createToStringBuilder();
            builder.appendSuper(super.toString());
            builder.append("country", this.country);
            builder.append("timezone", this.timezone);

            return builder.toString();
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Person extends AbstractMessagePart {
        private String id;
        private Date lastSeen;
        private Boolean out_of_sight;
        private Face face;
        private String pseudo;

        /**
         * "id": "0c08eedb-cc6b-4299-8b8f-1fbb939536c8",
         */
        @JsonProperty("id")
        public String getId() {
            return id;
        }

        /**
         * "last_seen": 1441110023,
         */
        @JsonProperty("last_seen")
        public Date getLastSeen() {
            return lastSeen;
        }

        /**
         * "out_of_sight": false,
         */
        @JsonProperty("out_of_sight")
        public Boolean getOut_of_sight() {
            return out_of_sight;
        }

        /**
         * "face": {
         * "id": "55e598250a6e6e6170cf7cfb",
         * "version": 1,
         * "key": "f06de130500990d5286a11d9b9c83eeaa530d984b0a2f6bca433472827f3f25c"
         * }
         */
        @JsonProperty("face")
        public Face getFace() {
            return face;
        }

        /**
         * "pseudo": "Tom"
         */
        @JsonProperty("pseudo")
        public String getPseudo() {
            return pseudo;
        }

        @Override
        public String toString() {
            final ToStringBuilder builder = createToStringBuilder();
            builder.appendSuper(super.toString());
            builder.append("id", this.id);
            builder.append("lastSeen", this.lastSeen);
            builder.append("out_of_sight", this.out_of_sight);
            builder.append("face", this.face);
            builder.append("pseudo", this.pseudo);

            return builder.toString();
        }

    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Face extends AbstractMessagePart {
        private String id;
        private Integer version;
        private String key;

        /**
         * "id": "55e598250a6e6e6170cf7cfb",
         */
        @JsonProperty("id")
        public String getId() {
            return id;
        }

        /**
         * "version": 1,
         */
        @JsonProperty("version")
        public Integer getVersion() {
            return version;
        }

        /**
         * "key": "f06de130500990d5286a11d9b9c83eeaa530d984b0a2f6bca433472827f3f25c"
         */
        @JsonProperty("key")
        public String getKey() {
            return key;
        }

        @Override
        public String toString() {
            final ToStringBuilder builder = createToStringBuilder();
            builder.appendSuper(super.toString());
            builder.append("id", this.id);
            builder.append("version", this.version);
            builder.append("key", this.key);

            return builder.toString();
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Event extends AbstractMessagePart {
        private String id;
        private String type;
        private Date time;
        private String camera_id;
        private String person_id;
        private Snapshot snapshot;
        private Boolean is_arrival;
        private String message;

        /**
         * "id": "55e5c1c50a6e6e5f70cf7e4e",
         */
        @JsonProperty("id")
        public String getId() {
            return id;
        }

        /**
         * "type": "person",
         */
        @JsonProperty("type")
        public String getType() {
            return type;
        }

        /**
         * "time": 1441120682,
         */
        @JsonProperty("time")
        public Date getTime() {
            return time;
        }

        /**
         * "camera_id": "70:ee:50:13:8b:35",
         */
        @JsonProperty("camera_id")
        public String getCamera_id() {
            return camera_id;
        }

        /**
         * "person_id": "3550700b-36cd-4c92-8b97-b64dba19f62e",
         */
        @JsonProperty("person_id")
        public String getPerson_id() {
            return person_id;
        }

        /**
         * "snapshot": {
         * "id": "55e5c1c50a6e6e5f70cf7e50",
         * "version": 1,
         * "key": "8bbbe58c7b4fba061e8c29c2b7a57e6d16956b06c6ebd992e01267e755f7df72"
         * },
         */
        @JsonProperty("snapshot")
        public Snapshot getSnapshot() {
            return snapshot;
        }

        /**
         * "is_arrival": false,
         */
        @JsonProperty("is_arrival")
        public Boolean getIs_arrival() {
            return is_arrival;
        }

        /**
         * "message": "Tom seen"
         */
        @JsonProperty("message")
        public String getMessage() {
            return message;
        }

        @Override
        public String toString() {
            final ToStringBuilder builder = createToStringBuilder();
            builder.appendSuper(super.toString());
            builder.append("id", this.id);
            builder.append("type", this.type);
            builder.append("time", this.time);
            builder.append("camera_id", this.camera_id);
            builder.append("person_id", this.person_id);
            builder.append("snapshot", this.snapshot);
            builder.append("is_arrival", this.is_arrival);
            builder.append("message", this.message);

            return builder.toString();
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Snapshot extends AbstractMessagePart {
        private String id;
        private Integer version;
        private String key;

        /**
         * "id": "55e5c1c50a6e6e5f70cf7e50",
         */
        @JsonProperty("id")
        public String getId() {
            return id;
        }

        /**
         * "version": 1,
         */
        @JsonProperty("version")
        public Integer getVersion() {
            return version;
        }

        /**
         * "key": "8bbbe58c7b4fba061e8c29c2b7a57e6d16956b06c6ebd992e01267e755f7df72"
         */
        @JsonProperty("key")
        public String getKey() {
            return key;
        }

        @Override
        public String toString() {
            final ToStringBuilder builder = createToStringBuilder();
            builder.appendSuper(super.toString());
            builder.append("id", this.id);
            builder.append("version", this.version);
            builder.append("key", this.key);

            return builder.toString();
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Camera extends AbstractMessagePart {
        private String id;
        private String status;
        private String sd_status;
        private String alim_status;
        private String name;

        /**
         * "id": "70:ee:50:13:8b:35",
         */
        @JsonProperty("id")
        public String getId() {
            return id;
        }

        /**
         * "status": "on",
         */
        @JsonProperty("status")
        public String getStatus() {
            return status;
        }

        /**
         * "sd_status": "on",
         */
        @JsonProperty("sd_status")
        public String getSd_status() {
            return sd_status;
        }

        /**
         * "alim_status": "on",
         */
        @JsonProperty("alim_status")
        public String getAlim_status() {
            return alim_status;
        }

        /**
         * "name": "Tom's"
         */
        @JsonProperty("name")
        public String getName() {
            return name;
        }

        @Override
        public String toString() {
            final ToStringBuilder builder = createToStringBuilder();
            builder.appendSuper(super.toString());
            builder.append("id", this.id);
            builder.append("status", this.status);
            builder.append("sd_status", this.sd_status);
            builder.append("alim_status", this.alim_status);
            builder.append("name", this.name);

            return builder.toString();
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class User extends AbstractMessagePart {
        private String reg_locale;
        private String lang;

        /**
         * "reg_locale": "en-US",
         */
        @JsonProperty("reg_locale")
        public String getReg_locale() {
            return reg_locale;
        }

        /**
         * "lang": "en-US"
         */
        @JsonProperty("lang")
        public String getLang() {
            return lang;
        }

        @Override
        public String toString() {
            final ToStringBuilder builder = createToStringBuilder();
            builder.appendSuper(super.toString());
            builder.append("reg_locale", this.reg_locale);
            builder.append("reg_locale", this.reg_locale);

            return builder.toString();
        }
    }

    private Body body;
    private String status;
    private Double time_exec;
    private Date time_server;

    @JsonProperty("body")
    public Body getBody() {
        return this.body;
    }

    public List<Home> getHomes() {
        return this.body.homes;
    }

    public User getUser() {
        return this.body.user;
    }

    /**
     * "status": "ok",
     */
    @JsonProperty("status")
    public String getStatus() {
        return this.status;
    }

    /**
     * "time_exec": 0.019799947738647
     */
    @JsonProperty("time_exec")
    public Double getTime_exec() {
        return this.time_exec;
    }

    /**
     * "time_server": 1441120797
     */
    @JsonProperty("time_server")
    public Date getTime_server() {
        return this.time_server;
    }

    @Override
    public String toString() {
        final ToStringBuilder builder = createToStringBuilder();
        builder.appendSuper(super.toString());
        builder.append("body", this.body);
        builder.append("status", this.status);
        builder.append("time_exec", this.time_exec);
        builder.append("time_server", this.time_server);

        return builder.toString();
    }
}