From 06d1ce8d924e970d3c97190f1dc279719bbab786 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Fri, 17 Feb 2017 22:02:29 +0100 Subject: [PATCH] Add json loader, move sql loader, add json field name to JsonDef --- .../playpad/server/project/JsonDef.scala | 22 +++++++++++++ .../project/loader/json/PadLoader.scala | 29 +++++++++++++++++ .../project/loader/json/PageLoader.scala | 32 +++++++++++++++++++ .../project/loader/json/ProjectLoader.scala | 24 ++++++++++++++ .../project/loader/{ => sql}/PadLoader.scala | 4 +-- .../project/loader/{ => sql}/PageLoader.scala | 2 +- .../loader/{ => sql}/ProjectLoader.scala | 4 +-- .../server/project/saver/json/PadSaver.scala | 9 +++--- .../server/project/saver/json/PageSaver.scala | 8 +++-- .../project/saver/json/ProjectSaver.scala | 6 ++-- 10 files changed, 125 insertions(+), 15 deletions(-) create mode 100644 src/main/scala/de/tobias/playpad/server/project/JsonDef.scala create mode 100644 src/main/scala/de/tobias/playpad/server/project/loader/json/PadLoader.scala create mode 100644 src/main/scala/de/tobias/playpad/server/project/loader/json/PageLoader.scala create mode 100644 src/main/scala/de/tobias/playpad/server/project/loader/json/ProjectLoader.scala rename src/main/scala/de/tobias/playpad/server/project/loader/{ => sql}/PadLoader.scala (87%) rename src/main/scala/de/tobias/playpad/server/project/loader/{ => sql}/PageLoader.scala (93%) rename src/main/scala/de/tobias/playpad/server/project/loader/{ => sql}/ProjectLoader.scala (90%) 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 0000000..f95c5fc --- /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 0000000..753974e --- /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 0000000..2cd6532 --- /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 0000000..9a9556e --- /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 54be495..c35454f 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 ad39d6c..6a55fd5 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 549f469..3d64809 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 e375c89..ae16cde 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 8215b67..e59ef25 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 32d3772..942d897 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 } -- GitLab