package com.nightscout.core.preferences;
import com.nightscout.core.drivers.SupportedDevices;
import com.nightscout.core.model.GlucoseUnit;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class TestPreferences implements NightscoutPreferences {
private boolean restApiEnabled = false;
private List<String> restApiBaseUris = new ArrayList<>();
private boolean calibrationUploadEnabled = false;
private boolean sensorUploadEnabled = false;
private boolean rawUploadEnabled = false;
private boolean mongoUploadEnabled = false;
private boolean mqttUploadEnabled = false;
private String mongoClientUri = null;
private String mongoCollection = "entries";
private String mongoDeviceStatusCollection = "devicestatus";
private boolean dataDonateEnabled;
private GlucoseUnit units;
private String pwdName;
private boolean understand;
private boolean askedForData;
private String mqttEndpoint;
private String serialNumber;
private boolean mgbUploadEnabled = false;
private String btAddress = null;
private String btDeviceName = null;
private HashMap<String, HashMap<String, Long>> lastUpload;
private SupportedDevices deviceType = SupportedDevices.UNKNOWN;
@Override
public boolean isRestApiEnabled() {
return restApiEnabled;
}
@Override
public void setRestApiEnabled(boolean restApiEnabled) {
this.restApiEnabled = restApiEnabled;
}
@Override
public GlucoseUnit getPreferredUnits() {
return units;
}
@Override
public void setPreferredUnits(GlucoseUnit units) {
this.units = units;
}
@Override
public List<String> getRestApiBaseUris() {
return restApiBaseUris;
}
@Override
public void setRestApiBaseUris(List<String> restApiBaseUris) {
this.restApiBaseUris = restApiBaseUris;
}
@Override
public boolean isCalibrationUploadEnabled() {
return calibrationUploadEnabled;
}
@Override
public void setCalibrationUploadEnabled(boolean calibrationUploadEnabled) {
this.calibrationUploadEnabled = calibrationUploadEnabled;
}
@Override
public boolean isSensorUploadEnabled() {
return sensorUploadEnabled;
}
@Override
public void setSensorUploadEnabled(boolean sensorUploadEnabled) {
this.sensorUploadEnabled = sensorUploadEnabled;
}
@Override
public boolean isRawEnabled() {
return rawUploadEnabled;
}
@Override
public void setRawEnabled(boolean rawUploadEnabled) {
this.rawUploadEnabled = rawUploadEnabled;
}
@Override
public boolean isMongoUploadEnabled() {
return mongoUploadEnabled;
}
@Override
public void setMongoUploadEnabled(boolean mongoUploadEnabled) {
this.mongoUploadEnabled = mongoUploadEnabled;
}
@Override
public boolean isDataDonateEnabled() {
return dataDonateEnabled;
}
@Override
public void setDataDonateEnabled(boolean toDonate) {
this.dataDonateEnabled = toDonate;
}
@Override
public String getMongoClientUri() {
return mongoClientUri;
}
@Override
public void setMongoClientUri(String mongoClientUri) {
this.mongoClientUri = mongoClientUri;
}
@Override
public String getMongoCollection() {
return mongoCollection;
}
@Override
public void setMongoCollection(String mongoCollection) {
this.mongoCollection = mongoCollection;
}
@Override
public String getMongoDeviceStatusCollection() {
return mongoDeviceStatusCollection;
}
@Override
public void setMongoDeviceStatusCollection(String mongoDeviceStatusCollection) {
this.mongoDeviceStatusCollection = mongoDeviceStatusCollection;
}
@Override
public boolean isMqttEnabled() {
return mqttUploadEnabled;
}
@Override
public void setMqttUploadEnabled(boolean mqttUploadEnabled) {
this.mqttUploadEnabled = mqttUploadEnabled;
}
@Override
public String getMqttEndpoint() {
return mqttEndpoint;
}
@Override
public void setMqttEndpoint(String endpoint) {
mqttEndpoint = endpoint;
}
@Override
public String getMqttUser() {
return null;
}
@Override
public String getMqttPass() {
return null;
}
@Override
public boolean getIUnderstand() {
return understand;
}
@Override
public void setIUnderstand(boolean bool) {
understand = bool;
}
@Override
public boolean hasAskedForData() {
return askedForData;
}
@Override
public void setAskedForData(boolean askedForData) {
this.askedForData = askedForData;
}
@Override
public SupportedDevices getDeviceType() {
return deviceType;
}
public void setDeviceType(SupportedDevices deviceType) {
this.deviceType = deviceType;
}
@Override
public void setBluetoothDevice(String btDeviceName, String btAddress) {
this.btAddress = btAddress;
this.btDeviceName = btDeviceName;
}
@Override
public String getBtAddress() {
return this.btAddress;
}
@Override
public String getShareSerial() {
return this.serialNumber;
}
@Override
public void setShareSerial(String serialNumber) {
this.serialNumber = serialNumber;
}
@Override
public boolean isMeterUploadEnabled() {
return mgbUploadEnabled;
}
@Override
public void setMeterUploadEnabled(boolean enabled) {
mgbUploadEnabled = enabled;
}
@Override
public boolean isInsertionUploadEnabled() {
return false;
}
@Override
public void setInsertionUploadEnabled(boolean enabled) {
}
@Override
public long getLastMeterSysTime() {
return getLastBaseUpload("ui", "meter");
}
@Override
public void setLastMeterSysTime(long meterSysTime) {
setLastBaseUpload(meterSysTime, "ui", "meter");
}
@Override
public long getLastEgvSysTime() {
return getLastBaseUpload("ui", "egv");
}
@Override
public void setLastEgvSysTime(long egvSysTime) {
setLastBaseUpload(egvSysTime, "ui", "egv");
}
@Override
public long getLastEgvMqttUpload() {
return getLastBaseUpload("mqtt", "egv");
}
@Override
public void setLastEgvMqttUpload(long timestamp) {
setLastBaseUpload(timestamp, "mqtt", "egv");
}
@Override
public long getLastSensorMqttUpload() {
return getLastBaseUpload("mqtt", "sensor");
}
@Override
public void setLastSensorMqttUpload(long timestamp) {
setLastBaseUpload(timestamp, "mqtt", "sensor");
}
@Override
public long getLastCalMqttUpload() {
return getLastBaseUpload("mqtt", "cal");
}
@Override
public void setLastCalMqttUpload(long timestamp) {
setLastBaseUpload(timestamp, "mqtt", "cal");
}
@Override
public long getLastMeterMqttUpload() {
return getLastBaseUpload("mqtt", "meter");
}
@Override
public void setLastMeterMqttUpload(long timestamp) {
setLastBaseUpload(timestamp, "mqtt", "meter");
}
@Override
public long getLastInsMqttUpload() {
return getLastBaseUpload("mqtt", "ins");
}
@Override
public void setLastInsMqttUpload(long timestamp) {
setLastBaseUpload(timestamp, "mqtt", "ins");
}
@Override
public void setLastEgvBaseUpload(long timestamp, String postfix) {
setLastBaseUpload(timestamp, postfix, "egv");
}
@Override
public void setLastSensorBaseUpload(long timestamp, String postfix) {
setLastBaseUpload(timestamp, postfix, "sensor");
}
@Override
public void setLastCalBaseUpload(long timestamp, String postfix) {
setLastBaseUpload(timestamp, postfix, "cal");
}
@Override
public void setLastMeterBaseUpload(long timestamp, String postfix) {
setLastBaseUpload(timestamp, postfix, "meter");
}
@Override
public void setLastInsBaseUpload(long timestamp, String postfix) {
setLastBaseUpload(timestamp, postfix, "ins");
}
@Override
public long getLastEgvBaseUpload(String postfix) {
return getLastBaseUpload(postfix, "egv");
}
@Override
public long getLastSensorBaseUpload(String postfix) {
return getLastBaseUpload(postfix, "sensor");
}
@Override
public long getLastCalBaseUpload(String postfix) {
return getLastBaseUpload(postfix, "cal");
}
@Override
public long getLastMeterBaseUpload(String postfix) {
return getLastBaseUpload(postfix, "meter");
}
@Override
public long getLastInsBaseUpload(String postfix) {
return getLastBaseUpload(postfix, "ins");
}
@Override
public int getUrgentHighThreshold() {
return 0;
}
@Override
public int getWarningHighThreshold() {
return 0;
}
@Override
public int getWarningLowThreshold() {
return 0;
}
@Override
public int getUrgentLowThreshold() {
return 0;
}
@Override
public Integer getAlarmStrategy() {
return 0;
}
private void setLastBaseUpload(long value, String postfix, String recordType) {
HashMap<String, Long> record = new HashMap<>();
record.put(recordType, value);
lastUpload.put(postfix, record);
}
private long getLastBaseUpload(String postfix, String recordType) {
if (lastUpload.containsKey(postfix) && lastUpload.get(postfix).containsKey(recordType)) {
return lastUpload.get(postfix).get(recordType);
} else {
return 0;
}
}
@Override
public String getPwdName() {
return pwdName;
}
@Override
public void setPwdName(String pwdName) {
this.pwdName = pwdName;
}
}