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 f6e247fdd8f1fd2275876237c2738f79308b51e1..543e525d9e59675dd746617db1994373217b8f42 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 0000000000000000000000000000000000000000..1ae87a9c26955754f0bce720b7377e6f41650a94 --- /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 0000000000000000000000000000000000000000..5b6c791ed5ec86ceff79334901b29a2b1eaa3633 --- /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 0000000000000000000000000000000000000000..7b92ac4255b0316f581355bf2ed2a09d29e9e6bb --- /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) + } + } +}