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