From 2e88b9ec72ddbcd47842a3cc2cfa4cc3699b5316 Mon Sep 17 00:00:00 2001
From: Tamas Bunth <tamas.bunth@collabora.co.uk>
Date: Thu, 17 May 2018 17:41:37 +0200
Subject: [PATCH] Add batteryTemp, mobile and wifi usage, processes

to Rest API and database.
---
 src/main/kotlin/mobildata/model/MobilData.kt  |  8 ++++++++
 .../kotlin/mobildata/model/MobileProcess.kt   | 10 ++++++++++
 .../mobildata/model/inout/MobilDataIn.kt      | 18 ++++++++++++++++-
 .../kotlin/mobildata/web/MobilDataHandler.kt  |  9 ++++++++-
 src/main/resources/application.properties     |  2 ++
 src/main/resources/schema.sql                 | 20 ++++++++++++++-----
 6 files changed, 60 insertions(+), 7 deletions(-)
 create mode 100644 src/main/kotlin/mobildata/model/MobileProcess.kt

diff --git a/src/main/kotlin/mobildata/model/MobilData.kt b/src/main/kotlin/mobildata/model/MobilData.kt
index b33dfef..ce39016 100644
--- a/src/main/kotlin/mobildata/model/MobilData.kt
+++ b/src/main/kotlin/mobildata/model/MobilData.kt
@@ -15,6 +15,14 @@ data class MobilData(
         var nfcOn: Boolean?,
         var mobilDataOn: Boolean?,
         var sleepTime: Int?,
+        var batteryTemp: Double?,
+        var mobileDataUsage: Int?,
+        var wifiDataUsage: Int?,
+        @ElementCollection
+        @CollectionTable(
+                name="process",
+                joinColumns = arrayOf(JoinColumn(name = "process_id", referencedColumnName = "id")))
+        var processList: List<MobileProcess>?,
         @Id @GeneratedValue(strategy = GenerationType.AUTO)
         var id: Long = 0) {
 }
\ No newline at end of file
diff --git a/src/main/kotlin/mobildata/model/MobileProcess.kt b/src/main/kotlin/mobildata/model/MobileProcess.kt
new file mode 100644
index 0000000..0958105
--- /dev/null
+++ b/src/main/kotlin/mobildata/model/MobileProcess.kt
@@ -0,0 +1,10 @@
+package mobildata.model
+
+import javax.persistence.Column
+import javax.persistence.Embeddable
+
+@Embeddable
+data class MobileProcess(
+        @Column(name="process")
+        val process: String
+){}
\ No newline at end of file
diff --git a/src/main/kotlin/mobildata/model/inout/MobilDataIn.kt b/src/main/kotlin/mobildata/model/inout/MobilDataIn.kt
index 23584fe..ebd4424 100644
--- a/src/main/kotlin/mobildata/model/inout/MobilDataIn.kt
+++ b/src/main/kotlin/mobildata/model/inout/MobilDataIn.kt
@@ -30,9 +30,21 @@ class MobilDataIn {
     @ApiModelProperty(example = "15", required = false)
     var sleepTime: Int?
 
+    @ApiModelProperty(example = "31.45", required = false)
+    var batteryTemp: Double?
+
+    @ApiModelProperty(example = "2134231", required = false)
+    var mobileDataUsage: Int?
+    @ApiModelProperty(example = "342655", required = false)
+    var wifiDataUsage: Int?
+
+    @ApiModelProperty(required = false)
+    var processList: ArrayList<String>?
+
     constructor(location: LocationData? = null, battery: Int?, brightness: Int?, wifiOn: Boolean?,
                 bluetoothOn: Boolean?, nfcOn: Boolean?, mobilDataOn: Boolean?,
-                sleepTime: Int?) {
+                sleepTime: Int?, batteryTemp: Double?, mobileDataUsage: Int?, wifiDataUsage: Int?,
+                processList: ArrayList<String>?) {
         this.location = location
         this.battery = battery
         this.brightness = brightness
@@ -41,5 +53,9 @@ class MobilDataIn {
         this.nfcOn = nfcOn
         this.mobilDataOn = mobilDataOn
         this.sleepTime = sleepTime
+        this.batteryTemp = batteryTemp
+        this.mobileDataUsage = mobileDataUsage
+        this.wifiDataUsage = wifiDataUsage
+        this.processList = processList
     }
 }
diff --git a/src/main/kotlin/mobildata/web/MobilDataHandler.kt b/src/main/kotlin/mobildata/web/MobilDataHandler.kt
index 3088749..7c708ea 100644
--- a/src/main/kotlin/mobildata/web/MobilDataHandler.kt
+++ b/src/main/kotlin/mobildata/web/MobilDataHandler.kt
@@ -2,6 +2,7 @@ package mobildata.web
 
 import mobildata.jwt.ApiKeySecured
 import mobildata.model.MobilData
+import mobildata.model.MobileProcess
 import mobildata.model.User
 import mobildata.model.inout.MobilDataIn
 import mobildata.repository.MobilDataRepository
@@ -18,10 +19,16 @@ class MobilDataHandler (val mobilRepository: MobilDataRepository,
                         val userRepo: UserRepository) {
 
     private fun inputToMobilData(input : MobilDataIn, user:User? ): MobilData {
+        var processes = ArrayList<MobileProcess>()
+        input.processList?.forEach {
+            processes.add(MobileProcess(it))
+        }
         return MobilData(user_id = user!!.id, location_lat = input.location?.latitude,
                 location_long = input.location?.longitude, battery = input.battery,
                 brightness = input.brightness, wifiOn = input.wifiOn, bluetoothOn = input.bluetoothOn,
-                mobilDataOn = input.mobilDataOn, nfcOn = input.nfcOn, sleepTime = input.sleepTime)
+                mobilDataOn = input.mobilDataOn, nfcOn = input.nfcOn, sleepTime = input.sleepTime,
+                mobileDataUsage = input.mobileDataUsage, wifiDataUsage = input.wifiDataUsage,
+                processList = processes, batteryTemp = input.batteryTemp)
     }
 
     @ApiKeySecured
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index bce5f66..d14a7c7 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,3 +1,5 @@
+server.port = 8090
+
 spring.datasource.url = jdbc:postgresql://localhost:5432/mobildata
 spring.datasource.driverClassName=org.postgresql.Driver
 spring.datasource.username=postgres
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
index 6907354..f88c791 100644
--- a/src/main/resources/schema.sql
+++ b/src/main/resources/schema.sql
@@ -1,5 +1,6 @@
 drop table if exists "user" cascade;
 drop table if exists mobil_data cascade;
+drop table if exists process cascade;
 
 drop sequence if exists hibernate_sequence;
 create sequence hibernate_sequence start 1 increment 1;
@@ -15,6 +16,11 @@ create table "user" (
   primary key (id)
 );
 
+create table process (
+  id int8 not null,
+  process VARCHAR(255)
+);
+
 create table mobil_data (
   id int8 not null,
   user_id int8 not null,
@@ -22,11 +28,15 @@ create table mobil_data (
   location_long DOUBLE PRECISION,
   battery INTEGER,
   brightness INTEGER,
-  is_wifi_on BOOLEAN,
-  is_mobil_data_on BOOLEAN,
-  is_bluetooth_on BOOLEAN,
-  is_nfc_on BOOLEAN,
-  sleep_time INTEGER
+  wifi_on BOOLEAN,
+  mobil_data_on BOOLEAN,
+  bluetooth_on BOOLEAN,
+  nfc_on BOOLEAN,
+  sleep_time INTEGER,
+  battery_temp DOUBLE PRECISION,
+  mobile_data_usage INTEGER,
+  wifi_data_usage INTEGER,
+  process_id INTEGER
 );
 
 alter table mobil_data
-- 
GitLab