diff --git a/DeviceTracking API/pom.xml b/DeviceTracking API/pom.xml index 33b6c93..6662aaa 100644 --- a/DeviceTracking API/pom.xml +++ b/DeviceTracking API/pom.xml @@ -72,8 +72,8 @@ org.apache.maven.plugins maven-compiler-plugin - 14 - 14 + 15 + 15 diff --git a/DeviceTracking API/src/main/java/com/berkethetechnerd/devicetrackerapi/entity/SensorData.java b/DeviceTracking API/src/main/java/com/berkethetechnerd/devicetrackerapi/entity/SensorData.java index 64e360c..e05051d 100644 --- a/DeviceTracking API/src/main/java/com/berkethetechnerd/devicetrackerapi/entity/SensorData.java +++ b/DeviceTracking API/src/main/java/com/berkethetechnerd/devicetrackerapi/entity/SensorData.java @@ -11,6 +11,8 @@ public class SensorData { @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; + private String device_id; + @Column(length = 128) private String sensor_name; @@ -24,8 +26,9 @@ public SensorData() { // Hibernate requires a no-arg constructor } - public SensorData(Integer id, String sensor_name, Date start_time, Date end_time) { + public SensorData(Integer id, String device_id, String sensor_name, Date start_time, Date end_time) { this.id = id; + this.device_id = device_id; this.sensor_name = sensor_name; this.start_time = start_time; this.end_time = end_time; @@ -40,6 +43,14 @@ public void setId(Integer id) { this.id = id; } + public String getDevice_id() { + return device_id; + } + + public void setDevice_id(String device_id) { + this.device_id = device_id; + } + public String getSensor_name() { return sensor_name; } diff --git a/DeviceTracking API/src/test/java/com/berkethetechnerd/devicetrackerapi/controller/SensorControllerTest.java b/DeviceTracking API/src/test/java/com/berkethetechnerd/devicetrackerapi/controller/SensorControllerTest.java index 495c851..b29791a 100644 --- a/DeviceTracking API/src/test/java/com/berkethetechnerd/devicetrackerapi/controller/SensorControllerTest.java +++ b/DeviceTracking API/src/test/java/com/berkethetechnerd/devicetrackerapi/controller/SensorControllerTest.java @@ -75,7 +75,7 @@ public void it_should_add_new_data_and_return_data() { String testSensorName = "Bluetooth"; Date testStartTime = new Date(); Date testEndTime = new Date(); - SensorData testData = new SensorData(testId, testSensorName, testStartTime, testEndTime); + SensorData testData = new SensorData(testId, "Test-id", testSensorName, testStartTime, testEndTime); // Setup when(deviceTrackerService.addNewData(testData)).thenReturn(testData); diff --git a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/LoginActivity.kt b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/LoginActivity.kt index 5b9f70d..3546e57 100644 --- a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/LoginActivity.kt +++ b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/LoginActivity.kt @@ -9,8 +9,10 @@ import android.view.MenuInflater import android.view.MenuItem import android.widget.* import com.alpsproject.devicetracking.helper.DataCollectionManager +import com.alpsproject.devicetracking.helper.Logger import com.alpsproject.devicetracking.helper.RealmManager import com.alpsproject.devicetracking.helper.SharedPreferencesManager +import java.util.* class LoginActivity : BaseActivity() { @@ -23,6 +25,8 @@ class LoginActivity : BaseActivity() { setContentView(R.layout.activity_login) initUI() + initDeviceUniqueIdentifier() + RealmManager.printAllData() DataCollectionManager.syncDataWithCloud() } @@ -38,6 +42,18 @@ class LoginActivity : BaseActivity() { btnNext.setOnClickListener { proceedToApp() } } + private fun initDeviceUniqueIdentifier() { + val oldIdentifier = SharedPreferencesManager.read(C.DEVICE_IDENTIFIER, "") + if (oldIdentifier.isNullOrEmpty()) { + val newIdentifier = UUID.randomUUID().toString() + Logger.logUniqueIdentifier(newIdentifier, true) + SharedPreferencesManager.write(C.DEVICE_IDENTIFIER, newIdentifier) + return + } + + Logger.logUniqueIdentifier(oldIdentifier, false) + } + private fun proceedToApp() { if (SharedPreferencesManager.read(C.CONSENT_OF_USER, false)) { startActivity(Intent(this, SensorSelectionActivity::class.java)) diff --git a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/api/SensorMetricsAPI.kt b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/api/SensorMetricsAPI.kt index abe19ee..32aa7c9 100644 --- a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/api/SensorMetricsAPI.kt +++ b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/api/SensorMetricsAPI.kt @@ -37,6 +37,7 @@ object SensorMetricsAPI { } private fun getJsonObject(sensorData: SensorData) = JsonObject().apply { + addProperty("device_id", SharedPreferencesManager.read(ConstantsManager.DEVICE_IDENTIFIER, ConstantsManager.DEVICE_IDENTIFIER_DEFAULT)) addProperty("sensor_name", sensorData.sensorName) addProperty("start_time", CalendarManager.dateToBackendString(sensorData.startTime)) addProperty("end_time", CalendarManager.dateToBackendString(sensorData.endTime)) diff --git a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/helper/ConstantsManager.kt b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/helper/ConstantsManager.kt index bcf482e..90178b5 100644 --- a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/helper/ConstantsManager.kt +++ b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/helper/ConstantsManager.kt @@ -38,6 +38,9 @@ object ConstantsManager { const val DEFAULT_API = "DEFAULT_API" private const val DEFAULT_API_URL = "http://192.168.0.3:8080" + const val DEVICE_IDENTIFIER = "DEVICE_ID" + const val DEVICE_IDENTIFIER_DEFAULT = "CORRUPTED_ID" + fun getSensorName(forSensor: DeviceSensor): String { return when (forSensor) { DeviceSensor.ACCESS_WIFI -> SENSOR_WIFI diff --git a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/helper/Logger.kt b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/helper/Logger.kt index b93f633..27e8a6a 100644 --- a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/helper/Logger.kt +++ b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/helper/Logger.kt @@ -10,6 +10,7 @@ object Logger { private const val SENSOR_STATUS_CHANGE = "SensorStatusChange" private const val SENSOR_DATA_ENTRY = "SensorDataEntry" private const val SYNC_DATA_ENTRY = "DataSentToAPI" + private const val IDENTIFIER = "SMDeviceIdentifier" fun logServiceNotification(message: String) { Log.d(SERVICE_NOTIFICATION, message) @@ -23,6 +24,14 @@ object Logger { Log.d(SENSOR_STATUS_CHANGE, "$sensor -> $status") } + fun logUniqueIdentifier(id: String, isNew: Boolean) { + if (isNew) { + Log.d(IDENTIFIER, "A new device id has been assigned: $id") + } else { + Log.d(IDENTIFIER, "Your device id was assigned as $id") + } + } + fun logData(data: SensorData) { Log.d(SENSOR_DATA_ENTRY, data.toString()) } diff --git a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/reporting/AllSensorReportFragment.kt b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/reporting/AllSensorReportFragment.kt index cd42bfb..7ef29f7 100644 --- a/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/reporting/AllSensorReportFragment.kt +++ b/DeviceTracking/app/src/main/java/com/alpsproject/devicetracking/reporting/AllSensorReportFragment.kt @@ -163,7 +163,7 @@ class AllSensorReportFragment : Fragment() { .offsetY(5.0) .format("{%Value}{groupsSeparator: } Hours") - val column5: Column = cartesian.column(dataForNFC).name("NFC") + val column5: Column = cartesian.column(dataForNFC).name("NFC").fill("pink") column5.tooltip() .titleFormat("NFC usage") .position(Position.CENTER_BOTTOM) @@ -172,7 +172,7 @@ class AllSensorReportFragment : Fragment() { .offsetY(5.0) .format("{%Value}{groupsSeparator: } Hours") - val column6: Column = cartesian.column(dataForTorch).name("Torch") + val column6: Column = cartesian.column(dataForTorch).name("Torch").fill("purple") column6.tooltip() .titleFormat("Torch usage") .position(Position.CENTER_BOTTOM) @@ -185,7 +185,6 @@ class AllSensorReportFragment : Fragment() { cartesian.yScale().minimum(0.0) cartesian.yScale().maximum(6.0) cartesian.tooltip().positionMode(TooltipPositionMode.POINT) - cartesian.interactivity().hoverMode(HoverMode.BY_X) cartesian.xAxis(0).title(getString(R.string.report_usage_dates)) cartesian.yAxis(0).title(getString(R.string.report_usage_hours_total)) cartesian.yAxis(0).labels().format("{%Value}{groupsSeparator: }") @@ -252,7 +251,7 @@ class AllSensorReportFragment : Fragment() { .offsetY(5.0) .format("{%Value}{groupsSeparator: } Hours") - val column5: Column = cartesian.column(dataForNFC).name("NFC") + val column5: Column = cartesian.column(dataForNFC).name("NFC").fill("pink") column5.tooltip() .titleFormat("NFC usage") .position(Position.CENTER_BOTTOM) @@ -261,7 +260,7 @@ class AllSensorReportFragment : Fragment() { .offsetY(5.0) .format("{%Value}{groupsSeparator: } Hours") - val column6: Column = cartesian.column(dataForTorch).name("Torch") + val column6: Column = cartesian.column(dataForTorch).name("Torch").fill("purple") column6.tooltip() .titleFormat("Torch usage") .position(Position.CENTER_BOTTOM)