From 0bc79cbbafc53b4b1e6823b2ae45778ef26d75e6 Mon Sep 17 00:00:00 2001
From: Lukas Lechner <lukas.lechner@sap.com>
Date: Wed, 17 Mar 2021 11:05:31 +0100
Subject: [PATCH] Use TraceLocationType enums from protobuf (DEV) (#2624)

* Use TraceLocationType enums from protobuf

* Adapt database tests
---
 .../storage/CheckInDatabaseData.kt             |  6 +++---
 .../storage/TraceLocationDatabaseData.kt       |  7 ++++---
 .../ui/createevent/CreateEventTestViewModel.kt |  4 +++-
 .../events/DefaultTraceLocation.kt             |  3 ++-
 .../eventregistration/events/TraceLocation.kt  |  9 ++-------
 .../storage/entity/TraceLocationConverters.kt  |  7 ++++---
 .../storage/entity/TraceLocationEntity.kt      |  3 ++-
 .../events/DefaultTraceLocationKtTest.kt       | 18 ++++++++++--------
 .../entity/TraceLocationConvertersTest.kt      | 14 +++++++-------
 .../storage/entity/TraceLocationEntityTest.kt  | 11 ++++++-----
 10 files changed, 43 insertions(+), 39 deletions(-)

diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/storage/CheckInDatabaseData.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/storage/CheckInDatabaseData.kt
index 2797a59ee..32f3d6094 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/storage/CheckInDatabaseData.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/storage/CheckInDatabaseData.kt
@@ -1,7 +1,7 @@
 package de.rki.coronawarnapp.eventregistration.storage
 
-import de.rki.coronawarnapp.eventregistration.events.TraceLocation
 import de.rki.coronawarnapp.eventregistration.storage.entity.TraceLocationCheckInEntity
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass
 import org.joda.time.Instant
 
 object CheckInDatabaseData {
@@ -9,7 +9,7 @@ object CheckInDatabaseData {
     val testCheckIn = TraceLocationCheckInEntity(
         guid = "testGuid1",
         version = 1,
-        type = TraceLocation.Type.TEMPORARY_OTHER.value,
+        type = TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_TEMPORARY_OTHER.number,
         description = "testDescription1",
         address = "testAddress1",
         traceLocationStart = Instant.parse("2021-01-01T12:00:00.000Z"),
@@ -25,7 +25,7 @@ object CheckInDatabaseData {
     val testCheckInWithoutCheckOutTime = TraceLocationCheckInEntity(
         guid = "testGuid2",
         version = 1,
-        type = TraceLocation.Type.TEMPORARY_OTHER.value,
+        type = TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_TEMPORARY_OTHER.number,
         description = "testDescription2",
         address = "testAddress2",
         traceLocationStart = null,
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/storage/TraceLocationDatabaseData.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/storage/TraceLocationDatabaseData.kt
index 3891b6bdf..8386bf1db 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/storage/TraceLocationDatabaseData.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/storage/TraceLocationDatabaseData.kt
@@ -1,7 +1,8 @@
 package de.rki.coronawarnapp.eventregistration.storage
 
-import de.rki.coronawarnapp.eventregistration.events.TraceLocation
 import de.rki.coronawarnapp.eventregistration.storage.entity.TraceLocationEntity
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_PERMANENT_OTHER
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_TEMPORARY_OTHER
 import org.joda.time.Instant
 
 object TraceLocationDatabaseData {
@@ -9,7 +10,7 @@ object TraceLocationDatabaseData {
     val testTraceLocation1 = TraceLocationEntity(
         guid = "TestGuid1",
         version = 1,
-        type = TraceLocation.Type.TEMPORARY_OTHER,
+        type = LOCATION_TYPE_TEMPORARY_OTHER,
         description = "TestTraceLocation1",
         address = "TestTraceLocationAddress1",
         startDate = Instant.parse("2021-01-01T12:00:00.000Z"),
@@ -21,7 +22,7 @@ object TraceLocationDatabaseData {
     val testTraceLocation2 = TraceLocationEntity(
         guid = "TestGuid2",
         version = 1,
-        type = TraceLocation.Type.PERMANENT_OTHER,
+        type = LOCATION_TYPE_PERMANENT_OTHER,
         description = "TestTraceLocation2",
         address = "TestTraceLocationAddress2",
         startDate = null,
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/eventregistration/ui/createevent/CreateEventTestViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/eventregistration/ui/createevent/CreateEventTestViewModel.kt
index 3668a4692..69ad6c587 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/eventregistration/ui/createevent/CreateEventTestViewModel.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/eventregistration/ui/createevent/CreateEventTestViewModel.kt
@@ -6,6 +6,7 @@ import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.eventregistration.events.DefaultTraceLocation
 import de.rki.coronawarnapp.eventregistration.events.TraceLocation
 import de.rki.coronawarnapp.eventregistration.storage.repo.TraceLocationRepository
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.seconds
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
@@ -47,7 +48,8 @@ class CreateEventTestViewModel @AssistedInject constructor(
             val endTimeStampSeconds = endDate?.toInstant()?.seconds ?: 0
 
             val traceLocationType =
-                if (type == "Event") TraceLocation.Type.TEMPORARY_OTHER else TraceLocation.Type.PERMANENT_OTHER
+                if (type == "Event") TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_TEMPORARY_OTHER
+                else TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_PERMANENT_OTHER
 
             val traceLocation = DefaultTraceLocation(
                 UUID.randomUUID().toString(), // will be provided by the server when the endpoint is ready
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocation.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocation.kt
index f792ebf9e..53ef445b2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocation.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocation.kt
@@ -1,13 +1,14 @@
 package de.rki.coronawarnapp.eventregistration.events
 
 import de.rki.coronawarnapp.eventregistration.storage.entity.TraceLocationEntity
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass
 import org.joda.time.Instant
 
 const val TRACE_LOCATION_VERSION = 1
 
 data class DefaultTraceLocation(
     override val guid: String,
-    override val type: TraceLocation.Type,
+    override val type: TraceLocationOuterClass.TraceLocationType,
     override val description: String,
     override val address: String,
     override val startDate: Instant?,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/events/TraceLocation.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/events/TraceLocation.kt
index 1316ea799..3eac8e92c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/events/TraceLocation.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/events/TraceLocation.kt
@@ -1,21 +1,16 @@
 package de.rki.coronawarnapp.eventregistration.events
 
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass
 import org.joda.time.Instant
 
 interface TraceLocation {
     val guid: String
     val version: Int
-    val type: Type
+    val type: TraceLocationOuterClass.TraceLocationType
     val description: String
     val address: String
     val startDate: Instant?
     val endDate: Instant?
     val defaultCheckInLengthInMinutes: Int?
     val signature: String
-
-    enum class Type(val value: Int) {
-        UNSPECIFIED(0),
-        PERMANENT_OTHER(1),
-        TEMPORARY_OTHER(2)
-    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConverters.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConverters.kt
index 89546329e..2f547dd17 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConverters.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConverters.kt
@@ -1,13 +1,14 @@
 package de.rki.coronawarnapp.eventregistration.storage.entity
 
 import androidx.room.TypeConverter
-import de.rki.coronawarnapp.eventregistration.events.TraceLocation
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass
 
 class TraceLocationConverters {
 
     @TypeConverter
-    fun toTraceLocationType(value: Int) = enumValues<TraceLocation.Type>().single { it.value == value }
+    fun toTraceLocationType(value: Int): TraceLocationOuterClass.TraceLocationType =
+        TraceLocationOuterClass.TraceLocationType.forNumber(value)!!
 
     @TypeConverter
-    fun fromTraceLocationType(type: TraceLocation.Type) = type.value
+    fun fromTraceLocationType(type: TraceLocationOuterClass.TraceLocationType): Int = type.number
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntity.kt
index c681d3a92..052257f6b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntity.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntity.kt
@@ -4,6 +4,7 @@ import androidx.room.ColumnInfo
 import androidx.room.Entity
 import androidx.room.PrimaryKey
 import de.rki.coronawarnapp.eventregistration.events.TraceLocation
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass
 import org.joda.time.Instant
 
 @Entity(tableName = "traceLocations")
@@ -11,7 +12,7 @@ data class TraceLocationEntity(
 
     @PrimaryKey @ColumnInfo(name = "guid") val guid: String,
     @ColumnInfo(name = "version") val version: Int,
-    @ColumnInfo(name = "type") val type: TraceLocation.Type,
+    @ColumnInfo(name = "type") val type: TraceLocationOuterClass.TraceLocationType,
     @ColumnInfo(name = "description") val description: String,
     @ColumnInfo(name = "address") val address: String,
     @ColumnInfo(name = "startDate") val startDate: Instant?,
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocationKtTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocationKtTest.kt
index 4b624abcb..9afe5214b 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocationKtTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocationKtTest.kt
@@ -1,6 +1,8 @@
 package de.rki.coronawarnapp.eventregistration.events
 
 import de.rki.coronawarnapp.eventregistration.storage.entity.TraceLocationEntity
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_PERMANENT_OTHER
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_TEMPORARY_OTHER
 import io.kotest.matchers.shouldBe
 import org.joda.time.Instant
 import org.junit.jupiter.api.Test
@@ -13,7 +15,7 @@ internal class DefaultTraceLocationKtTest : BaseTest() {
         TraceLocationEntity(
             guid = "TestGuid",
             version = 1,
-            type = TraceLocation.Type.TEMPORARY_OTHER,
+            type = LOCATION_TYPE_PERMANENT_OTHER,
             description = "TestTraceLocation",
             address = "TestTraceLocationAddress",
             startDate = Instant.parse("2021-01-01T12:00:00.000Z"),
@@ -23,7 +25,7 @@ internal class DefaultTraceLocationKtTest : BaseTest() {
         ).toTraceLocation() shouldBe DefaultTraceLocation(
             guid = "TestGuid",
             version = 1,
-            type = TraceLocation.Type.TEMPORARY_OTHER,
+            type = LOCATION_TYPE_PERMANENT_OTHER,
             description = "TestTraceLocation",
             address = "TestTraceLocationAddress",
             startDate = Instant.parse("2021-01-01T12:00:00.000Z"),
@@ -38,7 +40,7 @@ internal class DefaultTraceLocationKtTest : BaseTest() {
         TraceLocationEntity(
             guid = "TestGuid",
             version = 1,
-            type = TraceLocation.Type.PERMANENT_OTHER,
+            type = LOCATION_TYPE_PERMANENT_OTHER,
             description = "TestTraceLocation",
             address = "TestTraceLocationAddress",
             startDate = null,
@@ -48,7 +50,7 @@ internal class DefaultTraceLocationKtTest : BaseTest() {
         ).toTraceLocation() shouldBe DefaultTraceLocation(
             guid = "TestGuid",
             version = 1,
-            type = TraceLocation.Type.PERMANENT_OTHER,
+            type = LOCATION_TYPE_PERMANENT_OTHER,
             description = "TestTraceLocation",
             address = "TestTraceLocationAddress",
             startDate = null,
@@ -64,7 +66,7 @@ internal class DefaultTraceLocationKtTest : BaseTest() {
             TraceLocationEntity(
                 guid = "TestGuid1",
                 version = 1,
-                type = TraceLocation.Type.TEMPORARY_OTHER,
+                type = LOCATION_TYPE_TEMPORARY_OTHER,
                 description = "TestTraceLocation1",
                 address = "TestTraceLocationAddress1",
                 startDate = Instant.parse("2021-01-01T12:00:00.000Z"),
@@ -75,7 +77,7 @@ internal class DefaultTraceLocationKtTest : BaseTest() {
             TraceLocationEntity(
                 guid = "TestGuid2",
                 version = 1,
-                type = TraceLocation.Type.PERMANENT_OTHER,
+                type = LOCATION_TYPE_PERMANENT_OTHER,
                 description = "TestTraceLocation2",
                 address = "TestTraceLocationAddress2",
                 startDate = null,
@@ -87,7 +89,7 @@ internal class DefaultTraceLocationKtTest : BaseTest() {
             DefaultTraceLocation(
                 guid = "TestGuid1",
                 version = 1,
-                type = TraceLocation.Type.TEMPORARY_OTHER,
+                type = LOCATION_TYPE_TEMPORARY_OTHER,
                 description = "TestTraceLocation1",
                 address = "TestTraceLocationAddress1",
                 startDate = Instant.parse("2021-01-01T12:00:00.000Z"),
@@ -98,7 +100,7 @@ internal class DefaultTraceLocationKtTest : BaseTest() {
             DefaultTraceLocation(
                 guid = "TestGuid2",
                 version = 1,
-                type = TraceLocation.Type.PERMANENT_OTHER,
+                type = LOCATION_TYPE_PERMANENT_OTHER,
                 description = "TestTraceLocation2",
                 address = "TestTraceLocationAddress2",
                 startDate = null,
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConvertersTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConvertersTest.kt
index 24260f9a9..203b7762c 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConvertersTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConvertersTest.kt
@@ -1,6 +1,6 @@
 package de.rki.coronawarnapp.eventregistration.storage.entity
 
-import de.rki.coronawarnapp.eventregistration.events.TraceLocation
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass
 import io.kotest.matchers.shouldBe
 import org.junit.jupiter.api.Test
 import testhelpers.BaseTest
@@ -12,18 +12,18 @@ internal class TraceLocationConvertersTest : BaseTest() {
     @Test
     fun `toTraceLocationType() should convert different integer values to correct TraceLocation Types`() {
         with(converter) {
-            toTraceLocationType(0) shouldBe TraceLocation.Type.UNSPECIFIED
-            toTraceLocationType(1) shouldBe TraceLocation.Type.PERMANENT_OTHER
-            toTraceLocationType(2) shouldBe TraceLocation.Type.TEMPORARY_OTHER
+            toTraceLocationType(0) shouldBe TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_UNSPECIFIED
+            toTraceLocationType(1) shouldBe TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_PERMANENT_OTHER
+            toTraceLocationType(2) shouldBe TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_TEMPORARY_OTHER
         }
     }
 
     @Test
     fun `fromTraceLocationType() should convert TraceLocation Types to correct integer values`() {
         with(converter) {
-            fromTraceLocationType(TraceLocation.Type.UNSPECIFIED) shouldBe 0
-            fromTraceLocationType(TraceLocation.Type.PERMANENT_OTHER) shouldBe 1
-            fromTraceLocationType(TraceLocation.Type.TEMPORARY_OTHER) shouldBe 2
+            fromTraceLocationType(TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_UNSPECIFIED) shouldBe 0
+            fromTraceLocationType(TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_PERMANENT_OTHER) shouldBe 1
+            fromTraceLocationType(TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_TEMPORARY_OTHER) shouldBe 2
         }
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntityTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntityTest.kt
index df49201e4..6ab4817ec 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntityTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntityTest.kt
@@ -1,7 +1,8 @@
 package de.rki.coronawarnapp.eventregistration.storage.entity
 
 import de.rki.coronawarnapp.eventregistration.events.DefaultTraceLocation
-import de.rki.coronawarnapp.eventregistration.events.TraceLocation
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_PERMANENT_OTHER
+import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass.TraceLocationType.LOCATION_TYPE_TEMPORARY_OTHER
 import io.kotest.matchers.shouldBe
 import org.joda.time.Instant
 import org.junit.jupiter.api.Test
@@ -14,7 +15,7 @@ internal class TraceLocationEntityTest : BaseTest() {
         DefaultTraceLocation(
             guid = "TestGuid",
             version = 1,
-            type = TraceLocation.Type.TEMPORARY_OTHER,
+            type = LOCATION_TYPE_TEMPORARY_OTHER,
             description = "TestTraceLocation",
             address = "TestTraceLocationAddress",
             startDate = Instant.parse("2021-01-01T12:00:00.000Z"),
@@ -24,7 +25,7 @@ internal class TraceLocationEntityTest : BaseTest() {
         ).toTraceLocationEntity() shouldBe TraceLocationEntity(
             guid = "TestGuid",
             version = 1,
-            type = TraceLocation.Type.TEMPORARY_OTHER,
+            type = LOCATION_TYPE_TEMPORARY_OTHER,
             description = "TestTraceLocation",
             address = "TestTraceLocationAddress",
             startDate = Instant.parse("2021-01-01T12:00:00.000Z"),
@@ -39,7 +40,7 @@ internal class TraceLocationEntityTest : BaseTest() {
         DefaultTraceLocation(
             guid = "TestGuid",
             version = 1,
-            type = TraceLocation.Type.PERMANENT_OTHER,
+            type = LOCATION_TYPE_PERMANENT_OTHER,
             description = "TestTraceLocation",
             address = "TestTraceLocationAddress",
             startDate = null,
@@ -49,7 +50,7 @@ internal class TraceLocationEntityTest : BaseTest() {
         ).toTraceLocationEntity() shouldBe TraceLocationEntity(
             guid = "TestGuid",
             version = 1,
-            type = TraceLocation.Type.PERMANENT_OTHER,
+            type = LOCATION_TYPE_PERMANENT_OTHER,
             description = "TestTraceLocation",
             address = "TestTraceLocationAddress",
             startDate = null,
-- 
GitLab