From 88c424ee62a33c349a485c5e03fa9f525ff2a22c Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Fri, 17 Feb 2017 22:29:54 +0100
Subject: [PATCH] add consts to loader and saver

---
 .../project/loader/json/PadLoader.scala       |  7 ++---
 .../project/loader/json/PageLoader.scala      | 10 +++----
 .../project/loader/json/ProjectLoader.scala   |  5 ++--
 .../server/project/loader/sql/PadLoader.scala | 19 +++++++-------
 .../project/loader/sql/PageLoader.scala       | 17 ++++++------
 .../project/loader/sql/ProjectLoader.scala    | 12 ++++-----
 .../server/project/saver/json/PadSaver.scala  |  3 +--
 .../server/project/saver/json/PageSaver.scala |  3 +--
 .../project/saver/json/ProjectSaver.scala     |  3 +--
 .../server/project/saver/sql/PadSaver.scala   | 19 ++++++++++++++
 .../server/project/saver/sql/PageSaver.scala  | 21 +++++++++++++++
 .../project/saver/sql/ProjectSaver.scala      | 20 ++++++++++++++
 .../server/project/{ => utils}/JsonDef.scala  |  2 +-
 .../playpad/server/project/utils/SqlDef.scala | 26 +++++++++++++++++++
 14 files changed, 126 insertions(+), 41 deletions(-)
 create mode 100644 src/main/scala/de/tobias/playpad/server/project/saver/sql/PadSaver.scala
 create mode 100644 src/main/scala/de/tobias/playpad/server/project/saver/sql/PageSaver.scala
 create mode 100644 src/main/scala/de/tobias/playpad/server/project/saver/sql/ProjectSaver.scala
 rename src/main/scala/de/tobias/playpad/server/project/{ => utils}/JsonDef.scala (87%)
 create mode 100644 src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala

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 753974e..b60384d 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 2cd6532..de0a0d3 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 9a9556e..ce2831d 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 c35454f..aa23225 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 6a55fd5..526be45 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 3d64809..dffb418 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 ae16cde..71711c6 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 e59ef25..883b8b6 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 942d897..28b2282 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 0000000..52204c2
--- /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 0000000..6abdd60
--- /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 0000000..44ce810
--- /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 f95c5fc..e5666f8 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 0000000..63f2c4e
--- /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"
+
+}
-- 
GitLab