package com.dataart.android.devicehive;
import java.io.Serializable;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Represents a device class which holds meta-information about {@link Client}s.
*/
public class DeviceClass extends DataContainer {
private int id;
private String name;
private String version;
private boolean isPermanent;
private Integer offlineTimeout;
/**
* Construct a new device class with given parameters. This method is
* intended for internal use.
*
* @param id
* Device class identifier.
* @param name
* Device class display name.
* @param version
* Device class version.
* @param isPermanent
* Whether this device class is permanent.
* @param offlineTimeout
* If set, specifies inactivity timeout in seconds before the
* framework changes device status to "Offline".
*/
public DeviceClass(int id, String name, String version,
boolean isPermanent, Integer offlineTimeout) {
this(null, id, name, version, isPermanent, offlineTimeout);
}
/* package */DeviceClass(Serializable data, int id, String name,
String version, boolean isPermanent, Integer offlineTimeout) {
super(data);
this.id = id;
this.name = name;
this.version = version;
this.isPermanent = isPermanent;
this.offlineTimeout = offlineTimeout;
}
/**
* Construct a new device class with given parameters.
*
* @param name
* Device class display name.
* @param version
* Device class version.
* @param isPermanent
* Whether this device class is permanent.
* @param offlineTimeout
* If set, specifies inactivity timeout in seconds before the
* framework changes device status to "Offline".
*/
public DeviceClass(String name, String version, boolean isPermanent,
Integer offlineTimeout) {
this(-1, name, version, isPermanent, offlineTimeout);
}
/**
* Constructs a new device class with given parameters.
*
* @param name
* Device class display name.
* @param version
* Device class version.
*/
public DeviceClass(String name, String version) {
this(-1, name, version, false, null);
}
/**
* Get device class identifier.
*
* @return Device class identifier.
*/
public int getId() {
return id;
}
/**
* Get device class display name.
*
* @return Device class display name.
*/
public String getName() {
return name;
}
/**
* Get device class version.
*
* @return Device class version.
*/
public String getVersion() {
return version;
}
/**
* Check whether the device class is permanent. Permanent device classes
* could not be modified by devices during registration.
*
* @return true if device class is permanent, otherwise returns false.
*/
public boolean isPermanent() {
return isPermanent;
}
/**
* Get offline timeout. If set, specifies inactivity timeout in seconds
* before the framework changes device status to "Offline".
*
* @return Inactivity timeout value in seconds.
*/
public Integer getOfflineTimeout() {
return offlineTimeout;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeInt(id);
dest.writeString(name);
dest.writeString(version);
dest.writeInt(isPermanent ? 1 : 0);
dest.writeValue(offlineTimeout);
}
public static Parcelable.Creator<DeviceClass> CREATOR = new Parcelable.Creator<DeviceClass>() {
@Override
public DeviceClass[] newArray(int size) {
return new DeviceClass[size];
}
@Override
public DeviceClass createFromParcel(Parcel source) {
return new DeviceClass(source.readSerializable(), source.readInt(),
source.readString(), source.readString(),
source.readInt() > 0, (Integer) source.readValue(null));
}
};
@Override
public String toString() {
return "DeviceClass [id=" + id + ", name=" + name + ", version="
+ version + ", isPermanent=" + isPermanent
+ ", offlineTimeout=" + offlineTimeout + ", data=" + data + "]";
}
}