From eb854511e11f67e2ccfddd02ddcd248bc8a16598 Mon Sep 17 00:00:00 2001 From: Armin Date: Mon, 28 Apr 2025 12:39:19 +0200 Subject: [PATCH 1/2] [STAD-643] Extent export options --- .../kotlin/de/cyface/model/ExportOptions.kt | 30 ++++++++++++++++++ .../kotlin/de/cyface/model/Measurement.kt | 31 ++++++++++++------- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/libs/model/src/main/kotlin/de/cyface/model/ExportOptions.kt b/libs/model/src/main/kotlin/de/cyface/model/ExportOptions.kt index f7ab6df..9d407c9 100644 --- a/libs/model/src/main/kotlin/de/cyface/model/ExportOptions.kt +++ b/libs/model/src/main/kotlin/de/cyface/model/ExportOptions.kt @@ -37,6 +37,11 @@ class ExportOptions { var includeHeader: Boolean = false var includeUserId: Boolean = false var includeUsername: Boolean = false + var includeModalityType: Boolean = false + var includeModalityTypeDistance: Boolean = false + var includeTotalDistance: Boolean = false + var includeModalityTypeTravelTime: Boolean = false + var includeTotalTravelTime: Boolean = false fun format(format: DataFormat): ExportOptions { this.format = format @@ -63,6 +68,31 @@ class ExportOptions { this.includeUsername = includeUsername return this } + + fun includeModalityType(include: Boolean): ExportOptions { + this.includeModalityType = include + return this + } + + fun includeModalityTypeDistance(include: Boolean): ExportOptions { + this.includeModalityTypeDistance = include + return this + } + + fun includeTotalDistance(include: Boolean): ExportOptions { + this.includeTotalDistance = include + return this + } + + fun includeModalityTypeTravelTime(include: Boolean): ExportOptions { + this.includeModalityTypeTravelTime = include + return this + } + + fun includeTotalTravelTime(include: Boolean): ExportOptions { + this.includeTotalTravelTime = include + return this + } } /** diff --git a/libs/model/src/main/kotlin/de/cyface/model/Measurement.kt b/libs/model/src/main/kotlin/de/cyface/model/Measurement.kt index eadce31..5e2b6e0 100644 --- a/libs/model/src/main/kotlin/de/cyface/model/Measurement.kt +++ b/libs/model/src/main/kotlin/de/cyface/model/Measurement.kt @@ -415,16 +415,21 @@ open class Measurement: Serializable { } elements.addAll( listOf( - deviceId, measurementId, trackId.toString(), + deviceId, + measurementId, + trackId.toString(), locationRecord.timestamp.toString(), locationRecord.latitude.toString(), - locationRecord.longitude.toString(), locationRecord.speed.toString(), + locationRecord.longitude.toString(), + locationRecord.speed.toString(), locationRecord.accuracy.toString(), - locationRecord.modality.databaseIdentifier, - modalityTypeDistance.toString(), totalDistance.toString(), - modalityTypeTravelTime.toString(), totalTravelTime.toString() ) ) + if (options.includeModalityType) elements.add(locationRecord.modality.databaseIdentifier) + if (options.includeModalityTypeDistance) elements.add(modalityTypeDistance.toString()) + if (options.includeTotalDistance) elements.add(totalDistance.toString()) + if (options.includeModalityTypeTravelTime) elements.add(modalityTypeTravelTime.toString()) + if (options.includeTotalTravelTime) elements.add(totalTravelTime.toString()) return java.lang.String.join(",", elements) } @@ -570,14 +575,16 @@ open class Measurement: Serializable { } elements.addAll(listOf("deviceId", "measurementId", "trackId", "timestamp [ms]")) when (options.type) { - DataType.LOCATION -> elements.addAll( - listOf( - "latitude", "longitude", - "speed [m/s]", "accuracy [m]", "modalityType", "modalityTypeDistance [m]", "distance [m]", - "modalityTypeTravelTime [ms]", "travelTime [ms]" + DataType.LOCATION -> { + elements.addAll( + listOf("latitude", "longitude", "speed [m/s]", "accuracy [m]") ) - ) - + if (options.includeModalityType) elements.add("modalityType") + if (options.includeModalityTypeDistance) elements.add("modalityTypeDistance [m]") + if (options.includeTotalDistance) elements.add("distance [m]") + if (options.includeModalityTypeTravelTime) elements.add("modalityTypeTravelTime [ms]") + if (options.includeTotalTravelTime) elements.add("travelTime [ms]") + } DataType.ACCELERATION -> elements.addAll(listOf("x [m/s^2]", "y [m/s^2]", "z [m/s^2]")) DataType.ROTATION -> elements.addAll(listOf("x [rad/s]", "y [rad/s]", "z [rad/s]")) DataType.DIRECTION -> elements.addAll(listOf("x [uT]", "y [uT]", "z [uT]")) From b63ceae56e516d9f9df0a2eb2cdc21ce9d2dbe9e Mon Sep 17 00:00:00 2001 From: Armin Date: Mon, 28 Apr 2025 12:41:28 +0200 Subject: [PATCH 2/2] Fix build --- .../java/de/cyface/model/MeasurementTest.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libs/model/src/test/java/de/cyface/model/MeasurementTest.kt b/libs/model/src/test/java/de/cyface/model/MeasurementTest.kt index ea316fe..02c308f 100644 --- a/libs/model/src/test/java/de/cyface/model/MeasurementTest.kt +++ b/libs/model/src/test/java/de/cyface/model/MeasurementTest.kt @@ -62,6 +62,11 @@ class MeasurementTest { .includeHeader(true) .includeUserId(true) .includeUsername(true) + .includeModalityType(true) + .includeModalityTypeDistance(true) + .includeTotalDistance(true) + .includeModalityTypeTravelTime(true) + .includeTotalTravelTime(true) csvHeader( options ) { str: String? -> csvOutput.append(str) } @@ -133,6 +138,11 @@ class MeasurementTest { .includeHeader(true) .includeUserId(true) .includeUsername(false) + .includeModalityType(true) + .includeModalityTypeDistance(true) + .includeTotalDistance(true) + .includeModalityTypeTravelTime(true) + .includeTotalTravelTime(true) // Act measurement.asCsv(options, null) { chunk -> @@ -211,6 +221,11 @@ class MeasurementTest { .includeHeader(true) .includeUserId(true) .includeUsername(true) + .includeModalityType(true) + .includeModalityTypeDistance(true) + .includeTotalDistance(true) + .includeModalityTypeTravelTime(true) + .includeTotalTravelTime(true) measurement.asCsv(options, TEST_USER_USERNAME) { str: String? -> if (!str.isNullOrBlank()) { csvOutput.append(str).append("\n") @@ -296,6 +311,11 @@ class MeasurementTest { .includeHeader(true) .includeUserId(true) .includeUsername(true) + .includeModalityType(true) + .includeModalityTypeDistance(true) + .includeTotalDistance(true) + .includeModalityTypeTravelTime(true) + .includeTotalTravelTime(true) measurement.asCsv(options, TEST_USER_USERNAME) { str: String? -> if (!str.isNullOrBlank()) { csvOutput.append(str).append("\n")