/*
* Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation)
*
* This file is part of Akvo FLOW.
*
* Akvo FLOW is free software: you can redistribute it and modify it under the terms of
* the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
* either version 3 of the License or any later version.
*
* Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Affero General Public License included below for more details.
*
* The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
*/
package com.gallatinsystems.device.domain;
import java.lang.reflect.Field;
import java.util.Date;
import javax.jdo.annotations.PersistenceCapable;
import com.gallatinsystems.framework.domain.BaseDomain;
/**
* domain object representing handheld devices capable of running the survey application.
*/
@PersistenceCapable
public class Device extends BaseDomain {
private static final long serialVersionUID = 4894680591207166295L;
public static final String NO_IMEI = "NO_IMEI";
private DeviceType deviceType;
private String androidId;
private String phoneNumber;
private String esn;
private String deviceIdentifier;
private Date inServiceDate;
private Date outServiceDate;
private Date lastUpdate;
private String osVersion;
private String gallatinSoftwareManifest;
private Double lastKnownLat;
private Double lastKnownLon;
private Double lastKnownAccuracy;
private Date lastLocationBeaconTime;
private String deviceGroup;
public String getAndroidId() {
return androidId;
}
public void setAndroidId(String androidId) {
this.androidId = androidId;
}
public String getDeviceIdentifier() {
return deviceIdentifier;
}
public void setDeviceIdentifier(String deviceIdentifier) {
this.deviceIdentifier = deviceIdentifier;
}
public String getDeviceGroup() {
return deviceGroup;
}
public void setDeviceGroup(String deviceGroup) {
this.deviceGroup = deviceGroup;
}
public Double getLastKnownLat() {
return lastKnownLat;
}
public void setLastKnownLat(Double lastKnownLat) {
this.lastKnownLat = lastKnownLat;
}
public Double getLastKnownLon() {
return lastKnownLon;
}
public void setLastKnownLon(Double lastKnownLon) {
this.lastKnownLon = lastKnownLon;
}
public Double getLastKnownAccuracy() {
return lastKnownAccuracy;
}
public void setLastKnownAccuracy(Double lastKnownAccuracy) {
this.lastKnownAccuracy = lastKnownAccuracy;
}
public Date getLastLocationBeaconTime() {
return lastLocationBeaconTime;
}
public void setLastLocationBeaconTime(Date lastLocationBeaconTime) {
this.lastLocationBeaconTime = lastLocationBeaconTime;
}
public enum DeviceType {
CELL_PHONE_ANDROID, TABLET_ANDROID, TABLET_PHONE_ANDROID
}
public DeviceType getDeviceType() {
return deviceType;
}
public void setDeviceType(DeviceType deviceType) {
this.deviceType = deviceType;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getEsn() {
return esn;
}
public void setEsn(String esn) {
this.esn = esn;
}
public Date getInServiceDate() {
return inServiceDate;
}
public void setInServiceDate(Date inServiceDate) {
this.inServiceDate = inServiceDate;
}
public Date getOutServiceDate() {
return outServiceDate;
}
public void setOutServiceDate(Date outServiceDate) {
this.outServiceDate = outServiceDate;
}
public Date getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Date lastUpdate) {
this.lastUpdate = lastUpdate;
}
public String getOsVersion() {
return osVersion;
}
public void setOsVersion(String osVersion) {
this.osVersion = osVersion;
}
public String getGallatinSoftwareManifest() {
return gallatinSoftwareManifest;
}
public void setGallatinSoftwareManifest(String gallatinSoftwareManifest) {
this.gallatinSoftwareManifest = gallatinSoftwareManifest;
}
@Override
public String toString() {
StringBuilder result = new StringBuilder();
String newLine = System.getProperty("line.separator");
result.append(this.getClass().getName());
result.append(" Object {");
result.append(newLine);
// determine fields declared in this class only (no fields of
// superclass)
Field[] fields = this.getClass().getDeclaredFields();
// print field names paired with their values
for (Field field : fields) {
result.append(" ");
try {
result.append(field.getName());
result.append(": ");
// requires access to private field:
result.append(field.get(this));
} catch (IllegalAccessException ex) {
System.out.println(ex);
}
result.append(newLine);
}
result.append("}");
return result.toString();
}
}