From 0dff5a9f06df61015a6ef8fb0b5562d198301291 Mon Sep 17 00:00:00 2001 From: tobias <tobias@thecodedev.de> Date: Thu, 12 Sep 2019 18:21:33 +0200 Subject: [PATCH] Improve Playout csv export (Format Date, exclude uuid) --- .../PlayoutLogViewController.java | 12 ++++++++-- .../playout/export/CsvPlayoutLogExport.scala | 24 +++++++++++++------ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java index 3bd92b8b..5f72ff0e 100644 --- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java +++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java @@ -1,5 +1,6 @@ package de.tobias.playpad.plugin.playout.viewcontroller; +import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.dataformat.csv.CsvMapper; import com.fasterxml.jackson.dataformat.csv.CsvSchema; @@ -160,8 +161,15 @@ public class PlayoutLogViewController extends NVC { // create mapper and schema CsvMapper mapper = new CsvMapper(); mapper.registerModule(new DefaultScalaModule()); - - CsvSchema schema = mapper.schemaFor(CsvPlayoutLogExport.CsvColumn.class); + mapper.configure(JsonGenerator.Feature.IGNORE_UNKNOWN, true); + + CsvSchema schema = CsvSchema.builder() + .addColumn("Name") + .addColumn("Zähler") + .addColumn("Sessions") + .addColumn("Erstes Datem") + .addColumn("Letztes Datem") + .build(); schema = schema.withColumnSeparator(';').withHeader(); // output writer diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/scala/de/tobias/playpad/plugin/playout/export/CsvPlayoutLogExport.scala b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/scala/de/tobias/playpad/plugin/playout/export/CsvPlayoutLogExport.scala index b8f322ab..f9faca54 100644 --- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/scala/de/tobias/playpad/plugin/playout/export/CsvPlayoutLogExport.scala +++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/scala/de/tobias/playpad/plugin/playout/export/CsvPlayoutLogExport.scala @@ -1,8 +1,8 @@ package de.tobias.playpad.plugin.playout.export -import java.util.UUID +import java.util.{Date, UUID} -import com.fasterxml.jackson.annotation.JsonPropertyOrder +import com.fasterxml.jackson.annotation.{JsonFormat, JsonIgnore, JsonProperty, JsonPropertyOrder} import de.tobias.playpad.plugin.playout.log.LogSeason import scala.jdk.CollectionConverters._ @@ -12,12 +12,20 @@ object CsvPlayoutLogExport { @JsonPropertyOrder(value = Array("name", "count", "seasonCount", "firstTime", "lastTime")) class CsvColumn ( + @JsonIgnore var id: UUID, + @JsonProperty("Name") var name: String, + @JsonProperty("Zähler") var count: Int, + @JsonProperty("Sessions") var seasonCount: Int, - var firstTime: Long, - var lastTime: Long + @JsonProperty("Erstes Datem") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm") + var firstTime: Date, + @JsonProperty("Letztes Datem") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm") + var lastTime: Date ) { } @@ -26,7 +34,7 @@ object CsvPlayoutLogExport { .map(_.getLogItems.asScala) .flatten .distinctBy(_.getUuid) - .map(entry => new CsvColumn(entry.getUuid, entry.getName, 0, 0, 0, 0)) + .map(entry => new CsvColumn(entry.getUuid, entry.getName, 0, 0, null, null)) sessions .map(_.getLogItems.asScala) @@ -55,8 +63,10 @@ object CsvPlayoutLogExport { val min: Long = timeMapping.filter(i => i._1 == item.id).minByOption(_._2).map(_._2).getOrElse(0) val max: Long = timeMapping.filter(i => i._1 == item.id).maxByOption(_._2).map(_._2).getOrElse(0) - item.firstTime = min - item.lastTime = max + if (min != 0) + item.firstTime = new Date(min) + if (max != 0) + item.lastTime = new Date(max) }) items -- GitLab