package com.hitherejoe.watchtower.data.model;
import android.os.Parcel;
import android.os.Parcelable;
public class Beacon implements Parcelable {
public AdvertisedId advertisedId;
public String beaconName;
public Status status;
public Stability expectedStability;
public LatLng latLng;
public String description;
public String placeId;
public enum Status {
STATUS_UNSPECIFIED("Unspecified"),
ACTIVE("Active"),
DECOMMISSIONED("Decommissioned"),
INACTIVE("Inactive");
private String string;
Status(String string) {
this.string = string;
}
public static Status fromString(String string) {
if (string != null) {
for (Status status : Status.values()) {
if (string.equalsIgnoreCase(status.string)) {
return status;
}
}
}
return null;
}
public String getString() {
return string;
}
public String getDisplayName() {
return string.replaceAll("_", " ");
}
}
public enum Stability {
STATUS_UNSPECIFIED("Unspecified"),
STABLE("Stable"),
PORTABLE("Portable"),
MOBILE("Mobile"),
ROVING("Roving");
private String string;
Stability(String string) {
this.string = string;
}
public static Stability fromString(String string) {
if (string != null) {
for (Stability status : Stability.values()) {
if (string.equalsIgnoreCase(status.string)) {
return status;
}
}
}
return null;
}
public String getString() {
return string;
}
public String getDisplayName() {
return string.replaceAll("_", " ");
}
}
private Beacon (BeaconBuilder builder) {
this.advertisedId = builder.advertisedId;
this.beaconName = builder.beaconName;
this.status = builder.status;
this.expectedStability = builder.expectedStability;
this.latLng = builder.latLng;
this.description = builder.description;
this.placeId = builder.placeId;
}
public static class BeaconBuilder {
private AdvertisedId advertisedId;
private String beaconName;
private Status status;
private Stability expectedStability;
private LatLng latLng;
private String description;
private String placeId;
public BeaconBuilder(AdvertisedId advertisedId) {
this.advertisedId = advertisedId;
}
public BeaconBuilder beaconName(String beaconName) {
this.beaconName = beaconName;
return this;
}
public BeaconBuilder status(Status status) {
this.status = status;
return this;
}
public BeaconBuilder stability(Stability stability) {
this.expectedStability = stability;
return this;
}
public BeaconBuilder latLng(LatLng latLng) {
this.latLng = latLng;
return this;
}
public BeaconBuilder description(String description) {
this.description = description;
return this;
}
public BeaconBuilder placeId(String placeId) {
this.placeId = placeId;
return this;
}
public Beacon build() {
return new Beacon(this);
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(this.advertisedId, 0);
dest.writeString(this.beaconName);
dest.writeInt(this.status == null ? -1 : this.status.ordinal());
dest.writeInt(this.expectedStability == null ? -1 : this.expectedStability.ordinal());
dest.writeParcelable(this.latLng, 0);
dest.writeString(this.description);
dest.writeString(this.placeId);
}
public Beacon() { }
protected Beacon(Parcel in) {
this.advertisedId = in.readParcelable(AdvertisedId.class.getClassLoader());
this.beaconName = in.readString();
int tmpStatus = in.readInt();
this.status = tmpStatus == -1 ? null : Status.values()[tmpStatus];
int tmpStability = in.readInt();
this.expectedStability = tmpStability == -1 ? null : Stability.values()[tmpStability];
this.latLng = in.readParcelable(LatLng.class.getClassLoader());
this.description = in.readString();
this.placeId = in.readString();
}
public static final Parcelable.Creator<Beacon> CREATOR = new Parcelable.Creator<Beacon>() {
public Beacon createFromParcel(Parcel source) {
return new Beacon(source);
}
public Beacon[] newArray(int size) {
return new Beacon[size];
}
};
}