From e7a26d162028f459f5f32aaaafb1703b4ca1aaf1 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Mon, 20 Feb 2017 22:21:32 +0100 Subject: [PATCH] Add Path to Pad, Add Saver and Loader for path; code cleanup --- .../tobias/playpad/server/project/Pad.scala | 2 ++ .../tobias/playpad/server/project/Path.scala | 14 ++++++++ .../project/loader/json/PathLoader.scala | 29 +++++++++++++++ .../server/project/loader/sql/PadLoader.scala | 5 ++- .../project/loader/sql/PathLoader.scala | 35 +++++++++++++++++++ .../project/loader/sql/ProjectLoader.scala | 2 +- .../server/project/saver/json/PadSaver.scala | 6 +++- .../server/project/saver/json/PathSaver.scala | 19 ++++++++++ .../server/project/saver/sql/PadSaver.scala | 3 ++ .../server/project/saver/sql/PathSaver.scala | 18 ++++++++++ .../server/project/utils/JsonDef.scala | 4 +++ .../playpad/server/project/utils/SqlDef.scala | 5 +++ .../playpad/server/server/SqlHelper.scala | 9 +++++ .../server/server/account/AccountPost.scala | 2 +- .../server/server/plugin/PluginGet.scala | 2 +- .../server/server/project/ProjectList.scala | 2 -- 16 files changed, 150 insertions(+), 7 deletions(-) create mode 100644 src/main/scala/de/tobias/playpad/server/project/Path.scala create mode 100644 src/main/scala/de/tobias/playpad/server/project/loader/json/PathLoader.scala create mode 100644 src/main/scala/de/tobias/playpad/server/project/loader/sql/PathLoader.scala create mode 100644 src/main/scala/de/tobias/playpad/server/project/saver/json/PathSaver.scala create mode 100644 src/main/scala/de/tobias/playpad/server/project/saver/sql/PathSaver.scala diff --git a/src/main/scala/de/tobias/playpad/server/project/Pad.scala b/src/main/scala/de/tobias/playpad/server/project/Pad.scala index 009b866..6c88a74 100644 --- a/src/main/scala/de/tobias/playpad/server/project/Pad.scala +++ b/src/main/scala/de/tobias/playpad/server/project/Pad.scala @@ -13,5 +13,7 @@ class Pad() { var position: Int = _ var pageIndex: Int = _ + var paths: List[Path] = List() + var page: Page = _ } diff --git a/src/main/scala/de/tobias/playpad/server/project/Path.scala b/src/main/scala/de/tobias/playpad/server/project/Path.scala new file mode 100644 index 0000000..6d921fa --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/Path.scala @@ -0,0 +1,14 @@ +package de.tobias.playpad.server.project + +import java.util.UUID + +/** + * Created by tobias on 20.02.17. + */ +class Path { + + var id: UUID = UUID.randomUUID() + var path: String = _ + + var pad: Pad = _ +} diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/json/PathLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/json/PathLoader.scala new file mode 100644 index 0000000..df1b32e --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/PathLoader.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.utils.JsonDef._ +import de.tobias.playpad.server.project.{Pad, Path} + +import scala.collection.JavaConverters + +/** + * Created by tobias on 20.02.17. + */ +class PathLoader { + def load(jsonArray: JsonArray, pad: Pad): List[Path] = { + val it = JavaConverters.asScalaIterator(jsonArray.iterator()) + val paths = it.filter(_.isJsonObject).map(i => { + val json = i.asInstanceOf[JsonObject] + + val path = new Path() + path.id = UUID.fromString(json.get(PATH_ID).getAsString) + path.path = json.get(PATH_PATH).getAsString + path.pad = pad + + pad + }).toList + paths + } +} 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 d97d547..fb33d4c 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 @@ -13,7 +13,7 @@ class PadLoader(val connection: Connection) { def load(page: Page): List[Pad] = { val sql = s"SELECT * FROM $PAD WHERE $PAD_PAGE_REF = ?" val preparedStatement = connection.prepareStatement(sql) - preparedStatement.setString(1, page.toString) + preparedStatement.setString(1, page.id.toString) val result = preparedStatement.executeQuery() var pads: List[Pad] = List() @@ -25,6 +25,9 @@ class PadLoader(val connection: Connection) { pad.position = result.getInt(PAD_POSITION) pad.pageIndex = result.getInt(PAD_PAGE) + val pathLoader = new PathLoader(connection) + pad.paths = pathLoader.load(pad)) + pad.page = page pads = pad :: pads } diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/sql/PathLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PathLoader.scala new file mode 100644 index 0000000..edfdb7c --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PathLoader.scala @@ -0,0 +1,35 @@ +package de.tobias.playpad.server.project.loader.sql + +import java.sql.Connection +import java.util.UUID + +import de.tobias.playpad.server.project.utils.SqlDef._ +import de.tobias.playpad.server.project.{Pad, Path} + +/** + * Created by tobias on 20.02.17. + */ +class PathLoader(val connection: Connection) { + def load(pad: Pad): List[Path] = { + val sql = s"SELECT * FROM $PATH WHERE $PATH_PAD = ?" + val preparedStatement = connection.prepareStatement(sql) + preparedStatement.setString(1, pad.id.toString) + val result = preparedStatement.executeQuery() + + var paths: List[Path] = List() + + while (result.next()) { + val path = new Path() + path.id = UUID.fromString(result.getString(PATH_ID)) + path.path = result.getString(PATH_NAME) + + path.pad = pad + paths = path :: paths + } + + result.close() + preparedStatement.close() + + paths + } +} 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 4f7e823..44660cc 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 @@ -3,8 +3,8 @@ package de.tobias.playpad.server.project.loader.sql import java.sql.Connection import java.util.UUID -import de.tobias.playpad.server.project.{Project, ProjectReference} import de.tobias.playpad.server.project.utils.SqlDef._ +import de.tobias.playpad.server.project.{Project, ProjectReference} /** * 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 71711c6..39a62df 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,6 @@ package de.tobias.playpad.server.project.saver.json -import com.google.gson.{JsonElement, JsonObject} +import com.google.gson.{JsonArray, JsonElement, JsonObject} import de.tobias.playpad.server.project.Pad import de.tobias.playpad.server.project.utils.JsonDef._ @@ -16,6 +16,10 @@ class PadSaver { jsonObject.addProperty(PAD_POSITION, pad.position) jsonObject.addProperty(PAD_PAGE, pad.pageIndex) + val pathSaver = new PathSaver() + val pathArray = new JsonArray() + pad.paths.foreach(path => pathArray.add(pathSaver.save(path))) + jsonObject } } diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/json/PathSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/json/PathSaver.scala new file mode 100644 index 0000000..52b9b1c --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/saver/json/PathSaver.scala @@ -0,0 +1,19 @@ +package de.tobias.playpad.server.project.saver.json + +import com.google.gson.{JsonElement, JsonObject} +import de.tobias.playpad.server.project.Path +import de.tobias.playpad.server.project.utils.JsonDef._ + +/** + * Created by tobias on 20.02.17. + */ +class PathSaver { + def save(path: Path): JsonElement = { + val jsonObject = new JsonObject() + + jsonObject.addProperty(PATH_ID, path.id.toString) + jsonObject.addProperty(PATH_PATH, path.path) + + 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 index 1e35fb0..1d998a3 100644 --- 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 @@ -15,5 +15,8 @@ class PadSaver(val connection: Connection) { 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) + + val pathSaver = new PathSaver(connection) + pad.paths.foreach(pathSaver.save) } } diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/sql/PathSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/sql/PathSaver.scala new file mode 100644 index 0000000..7db424a --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/saver/sql/PathSaver.scala @@ -0,0 +1,18 @@ +package de.tobias.playpad.server.project.saver.sql + +import java.sql.Connection + +import de.tobias.playpad.server.project.Path +import de.tobias.playpad.server.project.utils.SqlDef._ +import de.tobias.playpad.server.server.SqlHelper + +/** + * Created by tobias on 20.02.17. + */ +class PathSaver(val connection: Connection) { + def save(path: Path): Unit = { + SqlHelper.insertOrUpdate(connection, PATH, path.id, PAD_NAME, path.path) + SqlHelper.insertOrUpdate(connection, PATH, path.id, PAD_POSITION, path.pad.id) + + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala b/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala index e5666f8..3d869a1 100644 --- a/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala +++ b/src/main/scala/de/tobias/playpad/server/project/utils/JsonDef.scala @@ -18,5 +18,9 @@ object JsonDef { val PAD_NAME = "name" val PAD_POSITION = "position" val PAD_PAGE = "page" + val PAD_PATHS = "paths" + + val PATH_ID = "id" + val PATH_PATH = "name" } 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 index 63f2c4e..7b55076 100644 --- a/src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala +++ b/src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala @@ -23,4 +23,9 @@ object SqlDef { val PAD_PAGE = "page" val PAD_PAGE_REF = "page_id" + val PATH = "Path" + val PATH_ID = "id" + val PATH_NAME = "path" + val PATH_PAD = "pad_id" + } diff --git a/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala b/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala index cd97aac..d1633a0 100644 --- a/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala +++ b/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala @@ -101,5 +101,14 @@ object SqlHelper { | UNIQUE KEY `id` (`id`) | CONSTRAINT `Pad_ibfk_1` FOREIGN KEY (`page_id`) REFERENCES `Page` (`id`) ON DELETE CASCADE |) ENGINE=InnoDB DEFAULT CHARSET=latin1;""".stripMargin) + createTable( + """CREATE TABLE `Path` ( + | `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + | `path` text, + | `pad_id` varchar(40) DEFAULT NULL, + | PRIMARY KEY (`id`), + | KEY `pad_id` (`pad_id`), + | CONSTRAINT `Path_ibfk_1` FOREIGN KEY (`pad_id`) REFERENCES `Pad` (`id`) ON DELETE CASCADE ON UPDATE CASCADE + |) ENGINE=InnoDB DEFAULT CHARSET=latin1;""".stripMargin) } } diff --git a/src/main/scala/de/tobias/playpad/server/server/account/AccountPost.scala b/src/main/scala/de/tobias/playpad/server/server/account/AccountPost.scala index 8082e43..53f1292 100644 --- a/src/main/scala/de/tobias/playpad/server/server/account/AccountPost.scala +++ b/src/main/scala/de/tobias/playpad/server/server/account/AccountPost.scala @@ -5,7 +5,7 @@ import java.sql.SQLException import com.j256.ormlite.dao.Dao import de.tobias.playpad.server.account.Account import de.tobias.playpad.server.server.{Result, Status} -import spark.{Request, Response, Route, Spark} +import spark.{Request, Response, Route} /** * Created by tobias on 15.02.17. diff --git a/src/main/scala/de/tobias/playpad/server/server/plugin/PluginGet.scala b/src/main/scala/de/tobias/playpad/server/server/plugin/PluginGet.scala index c222880..5fb030f 100644 --- a/src/main/scala/de/tobias/playpad/server/server/plugin/PluginGet.scala +++ b/src/main/scala/de/tobias/playpad/server/server/plugin/PluginGet.scala @@ -4,7 +4,7 @@ import com.google.gson.Gson import com.j256.ormlite.dao.Dao import de.tobias.playpad.server.plugin.Plugin import de.tobias.playpad.server.server.{Result, Status} -import spark.{Request, Response, Route, Spark} +import spark.{Request, Response, Route} /** * Created by tobias on 05.02.17. diff --git a/src/main/scala/de/tobias/playpad/server/server/project/ProjectList.scala b/src/main/scala/de/tobias/playpad/server/server/project/ProjectList.scala index 99f506e..be483ef 100644 --- a/src/main/scala/de/tobias/playpad/server/server/project/ProjectList.scala +++ b/src/main/scala/de/tobias/playpad/server/server/project/ProjectList.scala @@ -1,13 +1,11 @@ package de.tobias.playpad.server.server.project import java.sql.Connection -import java.util.UUID import com.google.gson.{JsonArray, JsonObject} import com.j256.ormlite.dao.Dao import de.tobias.playpad.server.account.Session import de.tobias.playpad.server.project.loader.sql.ProjectLoader -import de.tobias.playpad.server.project.saver.json.ProjectSaver import de.tobias.playpad.server.server.{Result, Status} import spark.{Request, Response, Route} -- GitLab