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