From fd1721d0d26e2893ee15d67a0b22269fd8122662 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Tue, 21 Feb 2017 22:43:12 +0100
Subject: [PATCH] Add path add listener, add paths to pad

---
 .../tobias/playpad/server/project/Pad.scala   |  1 +
 .../server/project/saver/json/PadSaver.scala  | 10 ++++----
 .../server/project/utils/JsonDef.scala        |  1 +
 .../project/sync/ProjectSyncHandler.scala     |  7 ++++--
 .../sync/listener/path/PathAddListener.scala  | 24 +++++++++++++++++++
 5 files changed, 37 insertions(+), 6 deletions(-)
 create mode 100644 src/main/scala/de/tobias/playpad/server/server/project/sync/listener/path/PathAddListener.scala

diff --git a/src/main/scala/de/tobias/playpad/server/project/Pad.scala b/src/main/scala/de/tobias/playpad/server/project/Pad.scala
index abf66a7..9945e9f 100644
--- a/src/main/scala/de/tobias/playpad/server/project/Pad.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/Pad.scala
@@ -11,6 +11,7 @@ class Pad() {
 	var name: String = _
 	var position: Int = _
 
+	var contentType: String = _
 	var paths: List[Path] = List()
 
 	var page: Page = _
diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/json/PadSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/json/PadSaver.scala
index c7c0a2b..3a98a38 100644
--- a/src/main/scala/de/tobias/playpad/server/project/saver/json/PadSaver.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/saver/json/PadSaver.scala
@@ -11,14 +11,16 @@ class PadSaver {
 	def save(pad: Pad): JsonElement = {
 		val jsonObject = new JsonObject()
 
-		jsonObject.addProperty(PAD_ID, pad.id.toString)
-		jsonObject.addProperty(PAD_NAME, pad.name)
-		jsonObject.addProperty(PAD_POSITION, pad.position)
-
 		val pathSaver = new PathSaver()
 		val pathArray = new JsonArray()
 		pad.paths.foreach(path => pathArray.add(pathSaver.save(path)))
 
+		jsonObject.addProperty(PAD_ID, pad.id.toString)
+		jsonObject.addProperty(PAD_NAME, pad.name)
+		jsonObject.addProperty(PAD_POSITION, pad.position)
+		jsonObject.addProperty(PAD_CONTENT_TYPE, pad.contentType)
+		jsonObject.add(PAD_PATHS, pathArray)
+
 		jsonObject
 	}
 }
diff --git a/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala b/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala
index 2c75ffa..5bcefb1 100644
--- a/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala
@@ -17,6 +17,7 @@ object JsonDef {
 	val PAD_ID = "id"
 	val PAD_NAME = "name"
 	val PAD_POSITION = "position"
+	val PAD_CONTENT_TYPE = "contentType"
 	val PAD_PATHS = "paths"
 
 	val PATH_ID = "id"
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 f76a22d..7e68623 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
@@ -8,6 +8,7 @@ import de.tobias.playpad.server.account
 import de.tobias.playpad.server.account.Account
 import de.tobias.playpad.server.server.project.sync.listener.pad.{PadAddListener, PadRemoveListener}
 import de.tobias.playpad.server.server.project.sync.listener.page.{PageAddListener, PageRemoveListener, PageUpdateListener}
+import de.tobias.playpad.server.server.project.sync.listener.path.PathAddListener
 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}
@@ -34,8 +35,10 @@ import scala.collection.{Map, mutable}
 		"page-rm" -> new PageRemoveListener(),
 
 		"pad-add" -> new PadAddListener(),
-		//"page-update" -> new PageUpdateListener(),
-		"pad-rm" -> new PadRemoveListener()
+		//"pad-update" -> new PadUpdateListener(),
+		"pad-rm" -> new PadRemoveListener(),
+
+		"path-add" -> new PathAddListener()
 	)
 
 	@OnWebSocketConnect def onConnect(serverSession: Session): Unit = {
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/path/PathAddListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/path/PathAddListener.scala
new file mode 100644
index 0000000..6cdce90
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/path/PathAddListener.scala
@@ -0,0 +1,24 @@
+package de.tobias.playpad.server.server.project.sync.listener.path
+
+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 PathAddListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val pathId = UUID.fromString(json.get("id").getAsString)
+		val padId = UUID.fromString(json.get("pad").getAsString)
+		val path = json.get("path").getAsString
+
+		SqlHelper.insertOrUpdate(connection, SqlDef.PATH, pathId, SqlDef.PAD_PAGE_REF, padId)
+		SqlHelper.insertOrUpdate(connection, SqlDef.PATH, pathId, SqlDef.PAD_NAME, path)
+	}
+}
-- 
GitLab