package org.starfishrespect.myconsumption.android.data;
import org.starfishrespect.myconsumption.android.SingleInstance;
import org.starfishrespect.myconsumption.server.api.dto.SensorDTO;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import java.io.Serializable;
import java.util.Date;
/**
* Object used to store sensor information on database
* S23Y (2015). Licensed under the Apache License, Version 2.0.
*/
@DatabaseTable(tableName = "sensors")
public class SensorData implements Serializable, Comparable<SensorData> {
@DatabaseField(id = true, unique = true)
private String sensorId;
@DatabaseField
private String name;
@DatabaseField
private String type;
@DatabaseField
private Date firstLocalValue = new Date(0);
@DatabaseField
private Date lastLocalValue = new Date(0);
@DatabaseField
private Date firstServerValue = new Date(0);
@DatabaseField
private Date lastServerValue = new Date(0);
@DatabaseField
private boolean visible = true;
@DatabaseField
private int color = 0xFFAA00;
@DatabaseField
private boolean dead = false;
public SensorData() {
}
public SensorData(SensorDTO from) {
this.sensorId = from.getId();
this.name = from.getName();
this.type = from.getType();
this.firstServerValue = from.getFirstValue();
this.lastServerValue = from.getLastValue();
this.dead = from.isDead();
color = SingleInstance.getRandomColor();
}
public String getSensorId() {
return sensorId;
}
public void setSensorId(String sensorId) {
this.sensorId = sensorId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Date getFirstLocalValue() {
return firstLocalValue;
}
public void setFirstLocalValue(Date firstLocalValue) {
this.firstLocalValue = firstLocalValue;
}
public Date getLastLocalValue() {
return lastLocalValue;
}
public void setLastLocalValue(Date lastLocalValue) {
this.lastLocalValue = lastLocalValue;
}
public Date getFirstServerValue() {
return firstServerValue;
}
public void setFirstServerValue(Date firstServerValue) {
this.firstServerValue = firstServerValue;
}
public Date getLastServerValue() {
return lastServerValue;
}
public void setLastServerValue(Date lastServerValue) {
this.lastServerValue = lastServerValue;
}
public boolean isVisible() {
return visible;
}
public void setVisible(boolean visible) {
this.visible = visible;
}
public int getColor() {
return color;
}
public void setColor(int color) {
this.color = color;
}
@Override
public int compareTo(SensorData another) {
return sensorId.compareTo(another.sensorId);
}
public boolean sameId(SensorData another) {
if (another == null) {
return false;
}
return sensorId.equals(another.sensorId);
}
public boolean updateSettings(SensorData from) {
boolean edited = false;
if (!this.getName().equals(from.getName())) {
this.setName(from.getName());
edited = true;
}
if (this.isDead() != from.isDead()) {
this.setDead(from.isDead());
edited = true;
}
if (!this.getFirstServerValue().equals(from.getFirstServerValue())) {
this.setFirstServerValue(from.getFirstServerValue());
edited = true;
}
if (!this.getLastServerValue().equals(from.getLastServerValue())) {
this.setLastServerValue(from.getLastServerValue());
edited = true;
}
return edited;
}
public boolean isDead() {
return dead;
}
public void setDead(boolean dead) {
this.dead = dead;
}
@Override
public String toString() {
return "SensorData{" +
"sensorId='" + sensorId + '\'' +
", name='" + name + '\'' +
", type='" + type + '\'' +
", firstLocalValue=" + firstLocalValue +
", lastLocalValue=" + lastLocalValue +
", firstServerValue=" + firstServerValue +
", lastServerValue=" + lastServerValue +
", visible=" + visible +
", color=" + color +
", dead=" + dead +
'}';
}
}