diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/json/PadLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/json/PadLoader.scala index 753974e691547d265900366c084804f139a38434..b60384d2358c54be07241b4762f518051af31359 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/json/PadLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/PadLoader.scala @@ -3,8 +3,8 @@ package de.tobias.playpad.server.project.loader.json import java.util.UUID import com.google.gson.{JsonArray, JsonObject} -import de.tobias.playpad.server.project.JsonDef._ -import de.tobias.playpad.server.project.Pad +import de.tobias.playpad.server.project.utils.JsonDef._ +import de.tobias.playpad.server.project.{Pad, Page} import scala.collection.JavaConverters @@ -12,7 +12,7 @@ import scala.collection.JavaConverters * Created by tobias on 17.02.17. */ class PadLoader { - def load(jsonArray: JsonArray): List[Pad] = { + def load(jsonArray: JsonArray, page: Page): List[Pad] = { val it = JavaConverters.asScalaIterator(jsonArray.iterator()) val pads = it.filter(_.isJsonObject).map(i => { val json = i.asInstanceOf[JsonObject] @@ -20,6 +20,7 @@ class PadLoader { val pad = new Pad() pad.id = UUID.fromString(json.get(PAD_ID).getAsString) pad.name = json.get(PAD_NAME).getAsString + pad.page = page pad }).toList diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/json/PageLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/json/PageLoader.scala index 2cd6532f44c4f4711cc2046c8f4e8170943d8fa3..de0a0d3a0e0eafc46e4d76c69f5e4766d0b02a47 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/json/PageLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/PageLoader.scala @@ -3,8 +3,8 @@ package de.tobias.playpad.server.project.loader.json import java.util.UUID import com.google.gson.{JsonArray, JsonObject} -import de.tobias.playpad.server.project.JsonDef._ -import de.tobias.playpad.server.project.Page +import de.tobias.playpad.server.project.utils.JsonDef._ +import de.tobias.playpad.server.project.{Page, Project} import scala.collection.JavaConverters @@ -12,8 +12,7 @@ import scala.collection.JavaConverters * Created by tobias on 17.02.17. */ class PageLoader { - - def load(jsonArray: JsonArray): List[Page] = { + def load(jsonArray: JsonArray, project: Project): List[Page] = { val it = JavaConverters.asScalaIterator(jsonArray.iterator()) val pages = it.filter(_.isJsonObject).map(i => { val json = i.asInstanceOf[JsonObject] @@ -23,8 +22,9 @@ class PageLoader { page.name = json.get(PAGE_NAME).getAsString val padLoader = new PadLoader - page.pads = padLoader.load(json.get(PAGE_PADS).getAsJsonArray) + page.pads = padLoader.load(json.get(PAGE_PADS).getAsJsonArray, page) + page.project = project page }).toList pages diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/json/ProjectLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/json/ProjectLoader.scala index 9a9556e1c28db5cb76e800b4cd91852cf65257de..ce2831d1bd2615da6f5727aba31bd9c393550d75 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/json/ProjectLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/ProjectLoader.scala @@ -3,21 +3,20 @@ package de.tobias.playpad.server.project.loader.json import java.util.UUID import com.google.gson.JsonObject -import de.tobias.playpad.server.project.JsonDef._ import de.tobias.playpad.server.project.Project +import de.tobias.playpad.server.project.utils.JsonDef._ /** * Created by tobias on 17.02.17. */ class ProjectLoader { - def load(json: JsonObject): Project = { val project = new Project() project.id = UUID.fromString(json.get(PROJECT_ID).getAsString) project.name = json.get(PROJECT_NAME).getAsString val pageLoader = new PageLoader - project.pages = pageLoader.load(json.getAsJsonArray(PROJECT_PAGES)) + project.pages = pageLoader.load(json.getAsJsonArray(PROJECT_PAGES), project) project } diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala index c35454f7208c31c1184dfe184ae511d2004ee805..aa232255de5c571de6a4d7854c294a1be0417db2 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala @@ -3,28 +3,29 @@ package de.tobias.playpad.server.project.loader.sql import java.sql.Connection import java.util.UUID -import de.tobias.playpad.server.project.Pad +import de.tobias.playpad.server.project.utils.SqlDef._ +import de.tobias.playpad.server.project.{Pad, Page} /** * Created by tobias on 17.02.17. */ class PadLoader { - - def load(connection: Connection, pageId: UUID): List[Pad] = { - val sql = "SELECT * FROM Pad WHERE page_id = ?" + def load(connection: Connection, page: Page): List[Pad] = { + val sql = s"SELECT * FROM $PAD WHERE $PAD_PAGE_REF = ?" val preparedStatement = connection.prepareStatement(sql) - preparedStatement.setString(1, pageId.toString) + preparedStatement.setString(1, page.toString) val result = preparedStatement.executeQuery() var pads: List[Pad] = List() while (result.next()) { val pad = new Pad() - pad.id = UUID.fromString(result.getString("id")) - pad.name = result.getString("name") - pad.position = result.getInt("position") - pad.pageIndex = result.getInt("page") + pad.id = UUID.fromString(result.getString(PAD_ID)) + pad.name = result.getString(PAD_NAME) + pad.position = result.getInt(PAD_POSITION) + pad.pageIndex = result.getInt(PAD_PAGE) + pad.page = page pads = pad :: pads } diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala index 6a55fd501c8297a75041e7cdb3ac8bb1c25357df..526be459d6c8a8e21f4a8eac0cb16ab87aebe956 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala @@ -3,29 +3,30 @@ package de.tobias.playpad.server.project.loader.sql import java.sql.Connection import java.util.UUID -import de.tobias.playpad.server.project.Page +import de.tobias.playpad.server.project.utils.SqlDef._ +import de.tobias.playpad.server.project.{Page, Project} /** * Created by tobias on 17.02.17. */ class PageLoader { - - def load(connection: Connection, projectId: UUID): List[Page] = { - val sql = "SELECT * FROM Page WHERE project_id = ?" + def load(connection: Connection, project: Project): List[Page] = { + val sql = s"SELECT * FROM $PAGE WHERE $PAGE_PROJECT_REF = ?" val preparedStatement = connection.prepareStatement(sql) - preparedStatement.setString(1, projectId.toString) + preparedStatement.setString(1, project.id.toString) val result = preparedStatement.executeQuery() var pages: List[Page] = List() while (result.next()) { val page = new Page() - page.id = UUID.fromString(result.getString("id")) - page.name = result.getString("name") + page.id = UUID.fromString(result.getString(PAGE_ID)) + page.name = result.getString(PAGE_NAME) val padLoader = new PadLoader() - page.pads = padLoader.load(connection, page.id) + page.pads = padLoader.load(connection, page) + page.project = project pages = page :: pages } diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala index 3d648091d7c301f3ff842b50c1947bb2c15f67e5..dffb418a8acb32a80e912449f8c138a5758bcdf9 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala @@ -4,14 +4,14 @@ import java.sql.Connection import java.util.UUID import de.tobias.playpad.server.project.Project +import de.tobias.playpad.server.project.utils.SqlDef._ /** * Created by tobias on 17.02.17. */ class ProjectLoader { - def load(connection: Connection, id: UUID): List[Project] = { - val sql = "SELECT * FROM Project WHERE id = ?" + val sql = s"SELECT * FROM $PROJECT WHERE $PROJECT_ID = ?" val preparedStatement = connection.prepareStatement(sql) preparedStatement.setString(1, id.toString) val result = preparedStatement.executeQuery() @@ -20,12 +20,12 @@ class ProjectLoader { while (result.next()) { val project = new Project() - project.id = UUID.fromString(result.getString("id")) - project.name = result.getString("name") - project.accountId = result.getInt("account_id") + project.id = UUID.fromString(result.getString(PROJECT_ID)) + project.name = result.getString(PROJECT_NAME) + project.accountId = result.getInt(PROJECT_ACCOUNT_ID) val pageLoader = new PageLoader() - project.pages = pageLoader.load(connection, id) + project.pages = pageLoader.load(connection, project) projects = project :: projects } 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 ae16cde5d89a6deeff198e4f61b6a6df07c86b3f..71711c6cd2c9453f509875f34b761b4ec1f331fe 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 @@ -1,14 +1,13 @@ package de.tobias.playpad.server.project.saver.json import com.google.gson.{JsonElement, JsonObject} -import de.tobias.playpad.server.project.JsonDef._ import de.tobias.playpad.server.project.Pad +import de.tobias.playpad.server.project.utils.JsonDef._ /** * Created by tobias on 17.02.17. */ class PadSaver { - def save(pad: Pad): JsonElement = { val jsonObject = new JsonObject() diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/json/PageSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/json/PageSaver.scala index e59ef25584b501721b28deec6f436196ce1022d5..883b8b6503920c030e1e02d232d32d24dec3d2f8 100644 --- a/src/main/scala/de/tobias/playpad/server/project/saver/json/PageSaver.scala +++ b/src/main/scala/de/tobias/playpad/server/project/saver/json/PageSaver.scala @@ -1,14 +1,13 @@ package de.tobias.playpad.server.project.saver.json import com.google.gson.{JsonArray, JsonElement, JsonObject} -import de.tobias.playpad.server.project.JsonDef._ import de.tobias.playpad.server.project.Page +import de.tobias.playpad.server.project.utils.JsonDef._ /** * Created by tobias on 17.02.17. */ class PageSaver { - def save(page: Page): JsonElement = { val jsonObject = new JsonObject() diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/json/ProjectSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/json/ProjectSaver.scala index 942d89754d9dda2e0598bbd4fb82e8517d446cd2..28b2282cde37139f2e3c3097f28c8a1783b0825a 100644 --- a/src/main/scala/de/tobias/playpad/server/project/saver/json/ProjectSaver.scala +++ b/src/main/scala/de/tobias/playpad/server/project/saver/json/ProjectSaver.scala @@ -1,14 +1,13 @@ package de.tobias.playpad.server.project.saver.json import com.google.gson.{JsonArray, JsonObject} -import de.tobias.playpad.server.project.JsonDef._ import de.tobias.playpad.server.project.Project +import de.tobias.playpad.server.project.utils.JsonDef._ /** * Created by tobias on 17.02.17. */ class ProjectSaver { - def save(project: Project): JsonObject = { val jsonObject = new JsonObject() diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/sql/PadSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/sql/PadSaver.scala new file mode 100644 index 0000000000000000000000000000000000000000..52204c255b6103047abf8c6be74948a0d8685cbc --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/saver/sql/PadSaver.scala @@ -0,0 +1,19 @@ +package de.tobias.playpad.server.project.saver.sql + +import java.sql.Connection + +import de.tobias.playpad.server.project.Pad +import de.tobias.playpad.server.project.utils.SqlDef._ +import de.tobias.playpad.server.server.SqlHelper + +/** + * Created by tobias on 17.02.17. + */ +class PadSaver { + def save(connection: Connection, pad: Pad): Unit = { + SqlHelper.insertOrUpdate(connection, PAD, pad.id, PAD_NAME, pad.name) + SqlHelper.insertOrUpdate(connection, PAD, pad.id, PAD_POSITION, pad.position) + SqlHelper.insertOrUpdate(connection, PAD, pad.id, PAD_PAGE, pad.pageIndex) + SqlHelper.insertOrUpdate(connection, PAD, pad.id, PAD_PAGE_REF, pad.page.id) + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/sql/PageSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/sql/PageSaver.scala new file mode 100644 index 0000000000000000000000000000000000000000..6abdd60e4a6d6b49af4a52474971f2665e91d391 --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/saver/sql/PageSaver.scala @@ -0,0 +1,21 @@ +package de.tobias.playpad.server.project.saver.sql + +import java.sql.Connection + +import de.tobias.playpad.server.project.Page +import de.tobias.playpad.server.project.utils.SqlDef._ +import de.tobias.playpad.server.server.SqlHelper + +/** + * Created by tobias on 17.02.17. + */ +class PageSaver { + def save(connection: Connection, page: Page): Unit = { + SqlHelper.insertOrUpdate(connection, PAGE, page.id, PAGE_NAME, page.name) + SqlHelper.insertOrUpdate(connection, PAGE, page.id, PAGE_POSITION, page.position) + SqlHelper.insertOrUpdate(connection, PAGE, page.id, PAGE_PROJECT_REF, page.project.id) + + val padSaver = new PadSaver + page.pads.foreach(padSaver.save(connection, _)) + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/sql/ProjectSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/sql/ProjectSaver.scala new file mode 100644 index 0000000000000000000000000000000000000000..44ce81054e41f06cbd05df22747f5cf67d3938ea --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/saver/sql/ProjectSaver.scala @@ -0,0 +1,20 @@ +package de.tobias.playpad.server.project.saver.sql + +import java.sql.Connection + +import de.tobias.playpad.server.project.Project +import de.tobias.playpad.server.project.utils.SqlDef._ +import de.tobias.playpad.server.server.SqlHelper + +/** + * Created by tobias on 17.02.17. + */ +class ProjectSaver { + def save(connection: Connection, project: Project): Unit = { + SqlHelper.insertOrUpdate(connection, PROJECT, project.id, PROJECT_NAME, project.name) + SqlHelper.insertOrUpdate(connection, PROJECT, project.id, PROJECT_ACCOUNT_ID, project.accountId) + + val pageSaver = new PageSaver + project.pages.foreach(pageSaver.save(connection, _)) + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/JsonDef.scala b/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala similarity index 87% rename from src/main/scala/de/tobias/playpad/server/project/JsonDef.scala rename to src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala index f95c5fccaec35b3cbac5901ddc0f86c271d2edcd..e5666f8e11da70b4df15f3f0e745426cdb012945 100644 --- a/src/main/scala/de/tobias/playpad/server/project/JsonDef.scala +++ b/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala @@ -1,4 +1,4 @@ -package de.tobias.playpad.server.project +package de.tobias.playpad.server.project.utils /** * Created by tobias on 17.02.17. diff --git a/src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala b/src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala new file mode 100644 index 0000000000000000000000000000000000000000..63f2c4eac46470056f361ccb8e0be13b1e414db1 --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala @@ -0,0 +1,26 @@ +package de.tobias.playpad.server.project.utils + +/** + * Created by tobias on 17.02.17. + */ +object SqlDef { + + val PROJECT = "Project" + val PROJECT_ID = "id" + val PROJECT_NAME = "name" + val PROJECT_ACCOUNT_ID = "account_id" + + val PAGE = "Page" + val PAGE_ID = "id" + val PAGE_NAME = "name" + val PAGE_POSITION = "position" + val PAGE_PROJECT_REF = "project_id" + + val PAD = "Pad" + val PAD_ID = "id" + val PAD_NAME = "name" + val PAD_POSITION = "position" + val PAD_PAGE = "page" + val PAD_PAGE_REF = "page_id" + +}