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 009b866beb32c032f53acb583ae24bde4042003e..6c88a746760ba8056f4afdd7a5e28e28bea64990 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 0000000000000000000000000000000000000000..6d921fa250d04c09d6b3573f355c0fde39912921 --- /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 0000000000000000000000000000000000000000..df1b32e2aaf172c96ef7f5f6ac9f26e7d2a38a0a --- /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 d97d5472c64e1399696dac3e5fd41f9722fc2a73..fb33d4c63427491cbdcb63d96d796ec8fa9ec988 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 0000000000000000000000000000000000000000..edfdb7c1f83d0944b0d27107a641bd865e215636 --- /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 4f7e823628804c66513d590da00965a6f90fcc42..44660ccd0d9a3d4dffb5221d98e9493f712a9c47 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 71711c6cd2c9453f509875f34b761b4ec1f331fe..39a62dfec2111080739610c810953d1acfc4968a 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 0000000000000000000000000000000000000000..52b9b1cde542f95350f36e0ce866ef1b0f3b00f8 --- /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 1e35fb0026e4871a45be8781daf4ca1a25a9e8f3..1d998a372fcc242f63215b6ebc56f7756a829d56 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 0000000000000000000000000000000000000000..7db424a736f682bee7d12c698e8a39046949cbfc --- /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 e5666f8e11da70b4df15f3f0e745426cdb012945..3d869a121b7de40bb1d40e16bc30fbb090c19737 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 63f2c4eac46470056f361ccb8e0be13b1e414db1..7b550763a1521a918a87bad443a5857d4a815db9 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 cd97aac85e5b18fa3f6eb645522cfa265a96088c..d1633a0c4e6ad1559b4d859a27b7928c00c45bb4 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 8082e431f802a278b4e0bacb135d1f494d8d43c1..53f12929f0e461deec5ca2a4ccd15e4ecf6a9776 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 c222880949bd818c1ca5e6d96dd55681895a04d4..5fb030f9728343fc81e9ffa735c4ef461ed80778 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 99f506e09c9de8d39abdc7f263a9bd2c9388602f..be483ef7cc2b724a90c35d544b3681afaf07e64e 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}