From 1084d53c59e1fffaf4a87da47ac2bd2989de885d Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Thu, 23 Feb 2017 19:30:53 +0100
Subject: [PATCH] Add Design Add, Update, Remove Listener

---
 .../project/sync/ProjectSyncHandler.scala     |  7 ++++-
 .../listener/design/DesignAddListener.scala   | 26 +++++++++++++++++
 .../design/DesignRemoveListener.scala         | 21 ++++++++++++++
 .../design/DesignUpdateListener.scala         | 28 +++++++++++++++++++
 4 files changed, 81 insertions(+), 1 deletion(-)
 create mode 100644 src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignAddListener.scala
 create mode 100644 src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignRemoveListener.scala
 create mode 100644 src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignUpdateListener.scala

diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/ProjectSyncHandler.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/ProjectSyncHandler.scala
index cb503f2..1c0609b 100644
--- a/src/main/scala/de/tobias/playpad/server/server/project/sync/ProjectSyncHandler.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/ProjectSyncHandler.scala
@@ -6,6 +6,7 @@ import com.google.gson.{JsonObject, JsonParser}
 import com.j256.ormlite.dao.Dao
 import de.tobias.playpad.server.account
 import de.tobias.playpad.server.account.Account
+import de.tobias.playpad.server.server.project.sync.listener.design.{DesignAddListener, DesignRemoveListener, DesignUpdateListener}
 import de.tobias.playpad.server.server.project.sync.listener.pad.{PadAddListener, PadClearListener, PadRemoveListener, PadUpdateListener}
 import de.tobias.playpad.server.server.project.sync.listener.page.{PageAddListener, PageRemoveListener, PageUpdateListener}
 import de.tobias.playpad.server.server.project.sync.listener.path.{PathAddListener, PathRemoveListener, PathUpdateListener}
@@ -41,7 +42,11 @@ import scala.collection.{Map, mutable}
 
 		"path-add" -> new PathAddListener(),
 		"path-update" -> new PathUpdateListener(),
-		"path-rm" -> new PathRemoveListener()
+		"path-rm" -> new PathRemoveListener(),
+
+		"design-add" -> new DesignAddListener(),
+		"design-update" -> new DesignUpdateListener(),
+		"design-rm" -> new DesignRemoveListener()
 	)
 
 	@OnWebSocketConnect def onConnect(serverSession: Session): Unit = {
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignAddListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignAddListener.scala
new file mode 100644
index 0000000..4cc85f9
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignAddListener.scala
@@ -0,0 +1,26 @@
+package de.tobias.playpad.server.server.project.sync.listener.design
+
+import java.sql.Connection
+import java.util.UUID
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.server.account.Session
+import de.tobias.playpad.server.project.utils.SqlDef
+import de.tobias.playpad.server.server.SqlHelper
+import de.tobias.playpad.server.server.project.sync.listener.Listener
+
+/**
+  * Created by tobias on 19.02.17.
+  */
+class DesignAddListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val designId = UUID.fromString(json.get("id").getAsString)
+		val padId = UUID.fromString(json.get("pad").getAsString)
+		val backgroundColor = json.get("background_color").getAsString
+		val playColor = json.get("play_color").getAsInt
+
+		SqlHelper.insertOrUpdate(connection, SqlDef.DESIGN, designId, SqlDef.DESIGN_PAD_REF, padId)
+		SqlHelper.insertOrUpdate(connection, SqlDef.DESIGN, designId, SqlDef.DESIGN_BACKGROUND_COLOR, backgroundColor)
+		SqlHelper.insertOrUpdate(connection, SqlDef.DESIGN, designId, SqlDef.DESIGN_PLAY_COLOR, playColor)
+	}
+}
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignRemoveListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignRemoveListener.scala
new file mode 100644
index 0000000..e8c2c5b
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignRemoveListener.scala
@@ -0,0 +1,21 @@
+package de.tobias.playpad.server.server.project.sync.listener.design
+
+import java.sql.Connection
+import java.util.UUID
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.server.account.Session
+import de.tobias.playpad.server.project.utils.SqlDef
+import de.tobias.playpad.server.server.SqlHelper
+import de.tobias.playpad.server.server.project.sync.listener.Listener
+
+/**
+  * Created by tobias on 19.02.17.
+  */
+class DesignRemoveListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val designId = UUID.fromString(json.get("id").getAsString)
+
+		SqlHelper.delete(connection, SqlDef.DESIGN, designId)
+	}
+}
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignUpdateListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignUpdateListener.scala
new file mode 100644
index 0000000..5bf7452
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignUpdateListener.scala
@@ -0,0 +1,28 @@
+package de.tobias.playpad.server.server.project.sync.listener.design
+
+import java.sql.Connection
+import java.util.UUID
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.server.account.Session
+import de.tobias.playpad.server.project.utils.SqlDef._
+import de.tobias.playpad.server.server.SqlHelper
+import de.tobias.playpad.server.server.project.sync.listener.Listener
+
+/**
+  * Created by tobias on 19.02.17.
+  */
+class DesignUpdateListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val designId = UUID.fromString(json.get("id").getAsString)
+		val padId = UUID.fromString(json.get("project").getAsString)
+		val field = json.get("field").getAsString
+
+		SqlHelper.insertOrUpdate(connection, DESIGN, designId, DESIGN_PAD_REF, padId)
+
+		field match {
+			case "background_color" => SqlHelper.insertOrUpdate(connection, DESIGN, designId, DESIGN_BACKGROUND_COLOR, json.get("value").getAsString)
+			case "play_color" => SqlHelper.insertOrUpdate(connection, DESIGN, designId, DESIGN_PLAY_COLOR, json.get("value").getAsInt)
+		}
+	}
+}
-- 
GitLab