package com.dataart.android.devicehive;
import java.io.Serializable;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.gson.annotations.SerializedName;
/**
* Represents a device notification, a unit of information dispatched from
* {@link Client}s.
*/
public class Notification implements Parcelable {
private int id;
@SerializedName("notification")
private String name;
private String timestamp;
private ObjectWrapper<Serializable> parameters;
protected Notification(int id, String name, String timestamp,
Serializable parameters) {
this.id = id;
this.name = name;
this.timestamp = timestamp;
this.parameters = new ObjectWrapper<Serializable>(parameters);
}
/**
* Construct a new notification with given name and parameters.
*
* @param name
* Notification name.
* @param parameters
* Notification parameters.
*/
public Notification(String name, Serializable parameters) {
this(-1, name, null, parameters);
}
/**
* Get notification identifier.
*
* @return Notification identifier.
*/
public int getId() {
return id;
}
/**
* Get notification name.
*
* @return Notification name.
*/
public String getName() {
return name;
}
/**
* Get notification timestamp(UTC).
*
* @return Notification timestamp(UTC).
*/
public String getTimestamp() {
return timestamp;
}
/**
* Get notification parameters dictionary.
*
* @return Notification parameters dictionary.
*/
public Serializable getParameters() {
return parameters != null ? parameters.getObject() : parameters;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(name);
dest.writeSerializable(timestamp);
dest.writeSerializable(parameters != null ? parameters.getObject()
: parameters);
}
public static Parcelable.Creator<Notification> CREATOR = new Parcelable.Creator<Notification>() {
@Override
public Notification[] newArray(int size) {
return new Notification[size];
}
@Override
public Notification createFromParcel(Parcel source) {
return new Notification(source.readInt(), source.readString(),
source.readString(), source.readSerializable());
}
};
@Override
public String toString() {
return "Notification [id=" + id + ", name=" + name + ", timestamp="
+ timestamp + ", parameters=" + parameters + "]";
}
}