From f919ddbc1ba975484db4db71392b9e0312305809 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Mon, 20 Feb 2017 16:44:57 +0100
Subject: [PATCH] Add Page Add, Remove and Update listeners

---
 .../project/sync/ProjectSyncHandler.scala     |  7 ++++-
 .../sync/listener/page/PageAddListener.scala  | 26 +++++++++++++++++
 .../listener/page/PageRemoveListener.scala    | 21 ++++++++++++++
 .../listener/page/PageUpdateListener.scala    | 28 +++++++++++++++++++
 4 files changed, 81 insertions(+), 1 deletion(-)
 create mode 100644 src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageAddListener.scala
 create mode 100644 src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageRemoveListener.scala
 create mode 100644 src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageUpdateListener.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 f6e247f..543e525 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.page.{PageAddListener, PageRemoveListener, PageUpdateListener}
 import de.tobias.playpad.server.server.project.sync.listener.project.{ProjectAddListener, ProjectRemoveListener, ProjectUpdateListener}
 import org.eclipse.jetty.websocket.api.Session
 import org.eclipse.jetty.websocket.api.annotations.{OnWebSocketClose, OnWebSocketConnect, OnWebSocketMessage, WebSocket}
@@ -25,7 +26,11 @@ import scala.collection.{Map, mutable}
 	private val listeners = Map(
 		"pro-add" -> new ProjectAddListener(),
 		"pro-update" -> new ProjectUpdateListener(),
-		"pro-rm" -> new ProjectRemoveListener()
+		"pro-rm" -> new ProjectRemoveListener(),
+
+		"page-add" -> new PageAddListener(),
+		"page-update" -> new PageUpdateListener(),
+		"page-rm" -> new PageRemoveListener()
 	)
 
 	@OnWebSocketConnect def onConnect(serverSession: Session): Unit = {
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageAddListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageAddListener.scala
new file mode 100644
index 0000000..1ae87a9
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageAddListener.scala
@@ -0,0 +1,26 @@
+package de.tobias.playpad.server.server.project.sync.listener.page
+
+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 PageAddListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val pageId = UUID.fromString(json.get("id").getAsString)
+		val projectId = UUID.fromString(json.get("project").getAsString)
+		val pageName = json.get("name").getAsString
+		val pagePosition = json.get("position").getAsInt
+
+		SqlHelper.insertOrUpdate(connection, SqlDef.PAGE, pageId, SqlDef.PAGE_PROJECT_REF, projectId)
+		SqlHelper.insertOrUpdate(connection, SqlDef.PAGE, pageId, SqlDef.PAGE_NAME, pageName)
+		SqlHelper.insertOrUpdate(connection, SqlDef.PAGE, pageId, SqlDef.PAGE_POSITION, pagePosition)
+	}
+}
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageRemoveListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageRemoveListener.scala
new file mode 100644
index 0000000..5b6c791
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageRemoveListener.scala
@@ -0,0 +1,21 @@
+package de.tobias.playpad.server.server.project.sync.listener.page
+
+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 PageRemoveListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val projectId = UUID.fromString(json.get("id").getAsString)
+
+		SqlHelper.delete(connection, SqlDef.PAGE, projectId)
+	}
+}
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageUpdateListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageUpdateListener.scala
new file mode 100644
index 0000000..7b92ac4
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/page/PageUpdateListener.scala
@@ -0,0 +1,28 @@
+package de.tobias.playpad.server.server.project.sync.listener.page
+
+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 PageUpdateListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val pageId = UUID.fromString(json.get("id").getAsString)
+		val projectId = UUID.fromString(json.get("project").getAsString)
+		val field = json.get("field").getAsString
+
+		SqlHelper.insertOrUpdate(connection, SqlDef.PAGE, pageId, SqlDef.PAGE_PROJECT_REF, projectId)
+
+		field match {
+			case "name" => SqlHelper.insertOrUpdate(connection, SqlDef.PAGE, pageId, SqlDef.PAGE_NAME, json.get("value").getAsString)
+			case "position" => SqlHelper.insertOrUpdate(connection, SqlDef.PAGE, pageId, SqlDef.PAGE_POSITION, json.get("value").getAsInt)
+		}
+	}
+}
-- 
GitLab