diff --git a/src/main/scala/de/tobias/playpad/server/project/JsonDef.scala b/src/main/scala/de/tobias/playpad/server/project/JsonDef.scala new file mode 100644 index 0000000000000000000000000000000000000000..f95c5fccaec35b3cbac5901ddc0f86c271d2edcd --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/JsonDef.scala @@ -0,0 +1,22 @@ +package de.tobias.playpad.server.project + +/** + * Created by tobias on 17.02.17. + */ +object JsonDef { + + val PROJECT_ID = "id" + val PROJECT_NAME = "name" + val PROJECT_PAGES = "pages" + + val PAGE_ID = "id" + val PAGE_NAME = "name" + val PAGE_POSITION = "position" + val PAGE_PADS = "pads" + + val PAD_ID = "id" + val PAD_NAME = "name" + val PAD_POSITION = "position" + val PAD_PAGE = "page" + +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..753974e691547d265900366c084804f139a38434 --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/PadLoader.scala @@ -0,0 +1,29 @@ +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 scala.collection.JavaConverters + +/** + * Created by tobias on 17.02.17. + */ +class PadLoader { + def load(jsonArray: JsonArray): List[Pad] = { + val it = JavaConverters.asScalaIterator(jsonArray.iterator()) + val pads = it.filter(_.isJsonObject).map(i => { + val json = i.asInstanceOf[JsonObject] + + val pad = new Pad() + pad.id = UUID.fromString(json.get(PAD_ID).getAsString) + pad.name = json.get(PAD_NAME).getAsString + + pad + }).toList + pads + } + +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..2cd6532f44c4f4711cc2046c8f4e8170943d8fa3 --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/PageLoader.scala @@ -0,0 +1,32 @@ +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 scala.collection.JavaConverters + +/** + * Created by tobias on 17.02.17. + */ +class PageLoader { + + def load(jsonArray: JsonArray): List[Page] = { + val it = JavaConverters.asScalaIterator(jsonArray.iterator()) + val pages = it.filter(_.isJsonObject).map(i => { + val json = i.asInstanceOf[JsonObject] + + val page = new Page() + page.id = UUID.fromString(json.get(PAGE_ID).getAsString) + page.name = json.get(PAGE_NAME).getAsString + + val padLoader = new PadLoader + page.pads = padLoader.load(json.get(PAGE_PADS).getAsJsonArray) + + 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 new file mode 100644 index 0000000000000000000000000000000000000000..9a9556e1c28db5cb76e800b4cd91852cf65257de --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/ProjectLoader.scala @@ -0,0 +1,24 @@ +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 + +/** + * 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 + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/PadLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala similarity index 87% rename from src/main/scala/de/tobias/playpad/server/project/loader/PadLoader.scala rename to src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala index 54be4951cc7fb80ab53d6e9b26e0c1b5b6c53cbc..c35454f7208c31c1184dfe184ae511d2004ee805 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/PadLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala @@ -1,9 +1,9 @@ -package de.tobias.playpad.server.project.loader +package de.tobias.playpad.server.project.loader.sql import java.sql.Connection import java.util.UUID -import de.tobias.playpad.server.project.{Pad, Page} +import de.tobias.playpad.server.project.Pad /** * Created by tobias on 17.02.17. diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/PageLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala similarity index 93% rename from src/main/scala/de/tobias/playpad/server/project/loader/PageLoader.scala rename to src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala index ad39d6c42ff42867e8f402b38687ce0ea798becc..6a55fd501c8297a75041e7cdb3ac8bb1c25357df 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/PageLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala @@ -1,4 +1,4 @@ -package de.tobias.playpad.server.project.loader +package de.tobias.playpad.server.project.loader.sql import java.sql.Connection import java.util.UUID diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/ProjectLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala similarity index 90% rename from src/main/scala/de/tobias/playpad/server/project/loader/ProjectLoader.scala rename to src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala index 549f469d747c08869d860b16dc26aad42ce5ef35..3d648091d7c301f3ff842b50c1947bb2c15f67e5 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/ProjectLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala @@ -1,12 +1,10 @@ -package de.tobias.playpad.server.project.loader +package de.tobias.playpad.server.project.loader.sql import java.sql.Connection import java.util.UUID import de.tobias.playpad.server.project.Project -import scala.collection.mutable.ListBuffer - /** * Created by tobias on 17.02.17. */ 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 e375c89f6ddf86deab7ca5e34053e8af3959922f..ae16cde5d89a6deeff198e4f61b6a6df07c86b3f 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,6 +1,7 @@ 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 /** @@ -11,10 +12,10 @@ class PadSaver { def save(pad: Pad): JsonElement = { val jsonObject = new JsonObject() - jsonObject.addProperty("id", pad.id.toString) - jsonObject.addProperty("name", pad.name) - jsonObject.addProperty("position", pad.position) - jsonObject.addProperty("page", pad.pageIndex) + jsonObject.addProperty(PAD_ID, pad.id.toString) + jsonObject.addProperty(PAD_NAME, pad.name) + jsonObject.addProperty(PAD_POSITION, pad.position) + jsonObject.addProperty(PAD_PAGE, pad.pageIndex) 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 8215b670d8679d38d6d1fb52caf6ef2c83fa15f2..e59ef25584b501721b28deec6f436196ce1022d5 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,6 +1,7 @@ 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 /** @@ -15,9 +16,10 @@ class PageSaver { val padArray = new JsonArray() page.pads.foreach(pad => padArray.add(padSaver.save(pad))) - jsonObject.addProperty("name", page.name) - jsonObject.addProperty("position", page.position) - jsonObject.add("pads", padArray) + jsonObject.addProperty(PAGE_ID, page.id.toString) + jsonObject.addProperty(PAGE_NAME, page.name) + jsonObject.addProperty(PAGE_POSITION, page.position) + jsonObject.add(PAGE_PADS, padArray) 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 32d37728dc68da98c10adeabd031a9e194c265ec..942d89754d9dda2e0598bbd4fb82e8517d446cd2 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,6 +1,7 @@ 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 /** @@ -15,8 +16,9 @@ class ProjectSaver { val pageArray = new JsonArray project.pages.foreach(page => pageArray.add(pageSaver.save(page))) - jsonObject.addProperty("name", project.name) - jsonObject.add("pages", pageArray) + jsonObject.addProperty(PROJECT_ID, project.id.toString) + jsonObject.addProperty(PROJECT_NAME, project.name) + jsonObject.add(PROJECT_PAGES, pageArray) jsonObject }