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