All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.urbanairship.connect.client.model.responses.region.RegionEvent Maven / Gradle / Ivy

There is a newer version: 5.4.2
Show newest version
/*
Copyright 2015 Urban Airship and Contributors
*/

package com.urbanairship.connect.client.model.responses.region;

import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.annotations.SerializedName;
import com.urbanairship.connect.client.model.EventType;
import com.urbanairship.connect.client.model.GsonUtil;
import com.urbanairship.connect.client.model.responses.EventBody;

import java.nio.charset.StandardCharsets;

public class RegionEvent implements EventBody {

    public static class Builder {
        private RegionAction action;
        @SerializedName("region_id")
        private String regionId;
        private RegionSource source;
        @SerializedName("session_id")
        private String sessionId;
        private Proximity proximity = null;
        @SerializedName("circular_region")
        private CircularRegion circularRegion = null;

        private Builder() {
        }

        public Builder setAction(RegionAction value) {
            this.action = value;
            return this;
        }

        public Builder setRegionId(String value) {
            this.regionId = value;
            return this;
        }

        public Builder setSource(RegionSource value) {
            this.source = value;
            return this;
        }

        public Builder setSessionId(String value) {
            this.sessionId = value;
            return this;
        }

        public Builder setProximity(Proximity value) {
            this.proximity = value;
            return this;
        }

        public Builder setCircularRegion(CircularRegion value) {
            this.circularRegion = value;
            return this;
        }

        public RegionEvent build() {
            Preconditions.checkNotNull(action, "action must be set");
            Preconditions.checkNotNull(regionId, "regionId must be set");
            Preconditions.checkNotNull(source, "source must be set");
            Preconditions.checkNotNull(sessionId, "sessionId must be set");

            return new RegionEvent(action, regionId, source, sessionId, Optional.fromNullable(proximity), Optional.fromNullable(circularRegion));
        }
    }

    private final static JsonParser parser = new JsonParser();
    private final static Gson gson = GsonUtil.getGson();

    private final RegionAction action;
    @SerializedName("region_id")
    private final String regionId;
    private final RegionSource source;
    @SerializedName("session_id")
    private final String sessionId;
    private final Optional proximity;
    @SerializedName("circular_region")
    private final Optional circularRegion;

    private RegionEvent() {
        this(null, null, null, null, Optional.absent(), Optional.absent());
    }

    private RegionEvent(RegionAction action,
                        String regionId,
                        RegionSource source,
                        String sessionId,
                        Optional proximity,
                        Optional circularRegion) {
        this.action = action;
        this.regionId = regionId;
        this.source = source;
        this.sessionId = sessionId;
        this.proximity = proximity;
        this.circularRegion = circularRegion;
    }

    public RegionAction getAction() {
        return action;
    }

    public String getRegionId() {
        return regionId;
    }

    public RegionSource getSource() {
        return source;
    }

    public String getSessionId() {
        return sessionId;
    }

    public Optional getProximity() {
        return proximity;
    }

    public Optional getCircularRegion() {
        return circularRegion;
    }

    public static Builder newBuilder() {
        return new Builder();
    }

    @Override
    public EventType getType() {
        return EventType.REGION;
    }

    public static RegionEvent parseJSONfromBytes(byte[] bytes) {
        String byteString = new String(bytes, StandardCharsets.UTF_8);
        JsonObject jsonObject = parser.parse(byteString).getAsJsonObject();
        return parseJSON(jsonObject.toString());
    }

    public static RegionEvent parseJSON(String json) {
        return gson.fromJson(json, RegionEvent.class);
    }

    public static RegionEvent parseJSON(JsonElement json) {
        return gson.fromJson(json, RegionEvent.class);
    }

    public byte[] serializeToJSONBytes() {
        return gson.toJson(this).toString().getBytes(StandardCharsets.UTF_8);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy