Added fundamentals of the Model View ViewModel Structure of the device data handling
This commit is contained in:
parent
559a95b1c2
commit
28c98ba766
57
app/src/main/java/com/example/greenwatch/models/Device.java
Normal file
57
app/src/main/java/com/example/greenwatch/models/Device.java
Normal file
@ -0,0 +1,57 @@
|
||||
package com.example.greenwatch.models;
|
||||
|
||||
|
||||
public class Device {
|
||||
|
||||
private String timeStamp;
|
||||
private String deviceID;
|
||||
private boolean sensorStatus;
|
||||
private String sensorType;
|
||||
private int sensorMassage;
|
||||
|
||||
public Device(String timeStamp, String deviceID, boolean sensorStatus, String sensorType, int sensorMassage) {
|
||||
this.timeStamp = timeStamp;
|
||||
this.deviceID = deviceID;
|
||||
this.sensorStatus = sensorStatus;
|
||||
this.sensorType = sensorType;
|
||||
this.sensorMassage = sensorMassage;
|
||||
}
|
||||
public void setTimeStamp(String timeStamp) {
|
||||
this.timeStamp = timeStamp;
|
||||
}
|
||||
|
||||
public String getTimeStamp() {
|
||||
return timeStamp;
|
||||
}
|
||||
|
||||
public void setDeviceID(String deviceID) {
|
||||
this.deviceID = deviceID;
|
||||
}
|
||||
|
||||
public String getDeviceID() {
|
||||
return deviceID;
|
||||
}
|
||||
public void setSensorType(String sensorType) {
|
||||
this.sensorType = sensorType;
|
||||
}
|
||||
|
||||
public String getSensorType() {
|
||||
return sensorType;
|
||||
}
|
||||
|
||||
public void setSensorStatus(boolean sensorStatus) {
|
||||
this.sensorStatus = sensorStatus;
|
||||
}
|
||||
|
||||
public Boolean getSensorStatus() {
|
||||
return sensorStatus;
|
||||
}
|
||||
|
||||
public void setSensorMassage(int sensorMassage) {
|
||||
this.sensorMassage = sensorMassage;
|
||||
}
|
||||
|
||||
public int getSensorMassage() {
|
||||
return sensorMassage;
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
package com.example.greenwatch.mvc;
|
||||
|
||||
|
||||
public class Device {
|
||||
|
||||
private String sensor;
|
||||
private Boolean isActive;
|
||||
|
||||
public Device(String Sensor, Boolean Status) {
|
||||
this.sensor = Sensor;
|
||||
this.isActive = Status;
|
||||
}
|
||||
|
||||
public void setSensor(String Sensor) {
|
||||
this.sensor = Sensor;
|
||||
}
|
||||
|
||||
public String getSensor() {
|
||||
return sensor;
|
||||
}
|
||||
|
||||
public void setIsActive(Boolean Status) {
|
||||
this.isActive = Status;
|
||||
}
|
||||
|
||||
public Boolean getIsActive() {
|
||||
return isActive;
|
||||
}
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package com.example.greenwatch.mvc;
|
||||
|
||||
public class DeviceController {
|
||||
|
||||
private DeviceModel deviceModel;
|
||||
private DeviceView deviceView;
|
||||
|
||||
public DeviceController(DeviceView view) {
|
||||
this.deviceModel = DeviceModel.getInstance();
|
||||
this.deviceView = view;
|
||||
}
|
||||
|
||||
public void createDevice(String Sensor, Boolean Status) {
|
||||
Device device = new Device(Sensor, Status);
|
||||
deviceModel.addDevice(device);
|
||||
// todo: Inform view and sender about changes
|
||||
}
|
||||
public void setDeviceSensor(String UUID, String Sensor) {
|
||||
deviceModel.setDeviceSensor(UUID, Sensor);
|
||||
}
|
||||
|
||||
public String getDeviceSensor(String UUID) {
|
||||
return deviceModel.getDeviceSensor(UUID);
|
||||
}
|
||||
|
||||
public void setDeviceStatus(String UUID, Boolean Status) {
|
||||
deviceModel.setDeviceStatus(UUID, Status);
|
||||
}
|
||||
|
||||
public Boolean getDeviceStatus(String UUID) {
|
||||
return deviceModel.getDeviceStatus(UUID);
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
package com.example.greenwatch.mvc;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
public class DeviceModel {
|
||||
private static DeviceModel itemModelInstance;
|
||||
// todo: should be a hashmap with UUID Keys
|
||||
private Vector<Device> connectetDevicesList;
|
||||
|
||||
private DeviceModel() {
|
||||
connectetDevicesList = new Vector<Device>();
|
||||
}
|
||||
|
||||
public static synchronized DeviceModel getInstance() {
|
||||
if (itemModelInstance == null){
|
||||
itemModelInstance = new DeviceModel();
|
||||
}
|
||||
return itemModelInstance;
|
||||
}
|
||||
|
||||
public void addDevice(Device device) {
|
||||
// todo: Check if divece already exist
|
||||
connectetDevicesList.add(device);
|
||||
}
|
||||
|
||||
public Vector<Device> getConnectetDevicesList() {
|
||||
return connectetDevicesList;
|
||||
}
|
||||
|
||||
public void setDeviceSensor(String UUID, String Sensor) {
|
||||
// todo: iterate through HashMap and find Divece for UUID
|
||||
}
|
||||
|
||||
public String getDeviceSensor(String UUID) {
|
||||
// todo: iterate through HashMap and find Divece for UUID
|
||||
return "hasToBeDone";
|
||||
}
|
||||
|
||||
public void setDeviceStatus(String UUID, Boolean Status) {
|
||||
// todo: iterate through HashMap and find Divece for UUID
|
||||
}
|
||||
|
||||
public Boolean getDeviceStatus(String UUID) {
|
||||
// todo: iterate through HashMap and find Divece for UUID
|
||||
return false;
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
package com.example.greenwatch.mvc;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
public class DeviceView {
|
||||
|
||||
public void updateView(Vector<Device> deviceVector) {
|
||||
// todo: what should be displayed
|
||||
}
|
||||
}
|
@ -0,0 +1,216 @@
|
||||
package com.example.greenwatch.repositories;
|
||||
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.example.greenwatch.models.Device;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class DeviceRepository {
|
||||
|
||||
private String delimiter = ", ";
|
||||
private String deviceUUID;
|
||||
private static DeviceRepository deviceRepositoryInstance;
|
||||
private MutableLiveData<List<Device>> deviceList = new MutableLiveData<>();
|
||||
private HashMap<String, Device> connectedDevicesList = new HashMap<>();
|
||||
private HashMap<String, String> deviceIDMapper = new HashMap<>();
|
||||
|
||||
public static synchronized DeviceRepository getInstance() {
|
||||
if (deviceRepositoryInstance == null){
|
||||
deviceRepositoryInstance = new DeviceRepository();
|
||||
deviceRepositoryInstance.setDeviceUUID();
|
||||
}
|
||||
return deviceRepositoryInstance;
|
||||
}
|
||||
|
||||
public MutableLiveData<List<Device>> getConnectedDeviceList() {
|
||||
setMutableLiveDataValue();
|
||||
return deviceList;
|
||||
}
|
||||
|
||||
public void createNewDevice(String timeStamp, String deviceID, boolean sensorStatus, String sensorType, int sensorMassage){
|
||||
Device newDevice = new Device(timeStamp, deviceID, sensorStatus, sensorType, sensorMassage);
|
||||
addToConnectedDeviceList(newDevice.getDeviceID(), newDevice);
|
||||
setMutableLiveDataValue();
|
||||
}
|
||||
|
||||
public void createNewRemoteDevice(String message) {
|
||||
String[] messageString = messageStringSplitter(message);
|
||||
String timeStamp = messageString[0];
|
||||
String deviceID = messageString[1];
|
||||
boolean sensorStatus = Boolean.valueOf(messageString[1]);
|
||||
String sensorType = messageString[3];
|
||||
int sensorMassage = Integer.valueOf(messageString[4]);
|
||||
|
||||
if(!connectedDevicesList.containsKey(deviceID)) {
|
||||
createNewDevice(timeStamp, deviceID, sensorStatus, sensorType, sensorMassage);
|
||||
}
|
||||
}
|
||||
|
||||
public String messageStringBuilder(String deviceID) {
|
||||
StringBuilder message = new StringBuilder();
|
||||
Device device = connectedDevicesList.get(deviceID);
|
||||
if(device != null) {
|
||||
message.append(device.getTimeStamp())
|
||||
.append(delimiter)
|
||||
.append(device.getDeviceID())
|
||||
.append(delimiter)
|
||||
.append(device.getSensorStatus())
|
||||
.append(delimiter)
|
||||
.append(device.getSensorType())
|
||||
.append(delimiter)
|
||||
.append(device.getSensorMassage());
|
||||
return message.toString();
|
||||
}
|
||||
return message.toString();
|
||||
}
|
||||
|
||||
public String getLocalDeviceUUID() {
|
||||
return deviceUUID;
|
||||
}
|
||||
|
||||
public void setDevice(String deviceID, String timeStamp, String newDeviceID, boolean sensorStatus, String sensorType, int sensorMassage) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
device.setTimeStamp(timeStamp);
|
||||
device.setDeviceID(newDeviceID);
|
||||
device.setSensorStatus(sensorStatus);
|
||||
device.setSensorType(sensorType);
|
||||
device.setSensorMassage(sensorMassage);
|
||||
setDeviceIDMapper(newDeviceID);
|
||||
connectedDevicesList.remove(checkedDeviceID);
|
||||
addToConnectedDeviceList(newDeviceID, device);
|
||||
setMutableLiveDataValue();
|
||||
}
|
||||
}
|
||||
|
||||
public void setTimeStamp(String deviceID, String timeStamp) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
device.setTimeStamp(timeStamp);
|
||||
addToConnectedDeviceList(checkedDeviceID, device);
|
||||
setMutableLiveDataValue();
|
||||
}
|
||||
}
|
||||
|
||||
public String getTimeStamp(String deviceID) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
return device.getTimeStamp();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public void setDeviceID(String deviceID, String newDeviceID) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
device.setDeviceID(newDeviceID);
|
||||
setDeviceIDMapper(newDeviceID);
|
||||
connectedDevicesList.remove(checkedDeviceID);
|
||||
addToConnectedDeviceList(newDeviceID, device);
|
||||
setMutableLiveDataValue();
|
||||
}
|
||||
}
|
||||
|
||||
public String getDeviceID(String deviceID) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
return device.getDeviceID();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public void setSensorStatus(String deviceID, boolean sensorStatus) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
device.setSensorStatus(sensorStatus);
|
||||
addToConnectedDeviceList(checkedDeviceID, device);
|
||||
setMutableLiveDataValue();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getSensorStatus(String deviceID) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
return device.getSensorStatus();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setSensorType(String deviceID, String sensorType) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
device.setSensorType(sensorType);
|
||||
addToConnectedDeviceList(checkedDeviceID, device);
|
||||
setMutableLiveDataValue();
|
||||
}
|
||||
}
|
||||
|
||||
public String getSensorType(String deviceID) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
return device.getSensorType();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public void setSensorMassage(String deviceID, int sensorMessage) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
device.setSensorMassage(sensorMessage);
|
||||
addToConnectedDeviceList(checkedDeviceID, device);
|
||||
setMutableLiveDataValue();
|
||||
}
|
||||
}
|
||||
|
||||
public int getSensorMassage(String deviceID) {
|
||||
String checkedDeviceID = checkDeviceID(deviceID);
|
||||
Device device = connectedDevicesList.get(checkedDeviceID);
|
||||
if(device != null) {
|
||||
return device.getSensorMassage();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private void setMutableLiveDataValue() {
|
||||
List<Device> list = new ArrayList<>(connectedDevicesList.values());
|
||||
deviceList.setValue(list);
|
||||
}
|
||||
|
||||
private void addToConnectedDeviceList(String key, Device device) {
|
||||
connectedDevicesList.put(key, device);
|
||||
}
|
||||
|
||||
private String checkDeviceID(String deviceID) {
|
||||
if(!deviceIDMapper.isEmpty() && deviceID.equals(deviceUUID)) {
|
||||
return deviceIDMapper.get(deviceID);
|
||||
}
|
||||
return deviceID;
|
||||
}
|
||||
|
||||
private void setDeviceIDMapper(String deviceID) {
|
||||
deviceIDMapper.put(deviceUUID, deviceID);
|
||||
}
|
||||
|
||||
private void setDeviceUUID(){
|
||||
this.deviceUUID = UUID.randomUUID().toString();
|
||||
}
|
||||
|
||||
private String[] messageStringSplitter(String message) {
|
||||
return message.split(delimiter);
|
||||
}
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
package com.example.greenwatch.viewmodels;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
|
||||
import com.example.greenwatch.models.Device;
|
||||
import com.example.greenwatch.repositories.DeviceRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MainActivityViewModel extends ViewModel {
|
||||
|
||||
private MutableLiveData<List<Device>> mDeviceList;
|
||||
private MutableLiveData<Device> mLocalDevice;
|
||||
private DeviceRepository mDeviceRepository;
|
||||
|
||||
public void init() {
|
||||
if(mDeviceList != null) {
|
||||
return;
|
||||
}
|
||||
mDeviceRepository = DeviceRepository.getInstance();
|
||||
mDeviceRepository.createNewDevice("", mDeviceRepository.getLocalDeviceUUID(), false, "", 0);
|
||||
mDeviceList = mDeviceRepository.getConnectedDeviceList();
|
||||
}
|
||||
|
||||
public LiveData<List<Device>> getConnectedDeviceList() {
|
||||
return mDeviceList;
|
||||
}
|
||||
|
||||
public void setDevice(String deviceID, String timeStamp, String newDeviceID, boolean sensorStatus, String sensorType, int sensorMassage) {
|
||||
mDeviceRepository.setDevice(deviceID, timeStamp,newDeviceID, sensorStatus, sensorType, sensorMassage);
|
||||
}
|
||||
|
||||
public void setTimeStamp(String deviceID, String timeStamp) {
|
||||
mDeviceRepository.setTimeStamp(deviceID, timeStamp);
|
||||
}
|
||||
|
||||
public String getTimeStamp(String deviceID) {
|
||||
return mDeviceRepository.getTimeStamp(deviceID);
|
||||
}
|
||||
|
||||
public void setDeviceID(String deviceID, String newDeviceID) {
|
||||
mDeviceRepository.setDeviceID(deviceID, newDeviceID);
|
||||
}
|
||||
|
||||
public String getDeviceID(String deviceID) {
|
||||
return mDeviceRepository.getDeviceID(deviceID);
|
||||
}
|
||||
|
||||
public void setSensorStatus(String deviceID, boolean sensorStatus) {
|
||||
mDeviceRepository.setSensorStatus(deviceID, sensorStatus);
|
||||
}
|
||||
|
||||
public boolean getSensorStatus(String deviceID) {
|
||||
return mDeviceRepository.getSensorStatus(deviceID);
|
||||
}
|
||||
|
||||
public void setSensorType(String deviceID, String sensorType) {
|
||||
mDeviceRepository.setSensorType(deviceID, sensorType);
|
||||
}
|
||||
|
||||
public String getSensorType(String deviceID) {
|
||||
return mDeviceRepository.getSensorType(deviceID);
|
||||
}
|
||||
|
||||
public void setSensorMassage(String deviceID, int sensorMessage) {
|
||||
mDeviceRepository.setSensorMassage(deviceID, sensorMessage);
|
||||
}
|
||||
|
||||
public int getSensorMassage(String deviceID) {
|
||||
return mDeviceRepository.getSensorMassage(deviceID);
|
||||
}
|
||||
|
||||
public String getLocalDeviceUUID() {
|
||||
return mDeviceRepository.getLocalDeviceUUID();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user