diff --git a/src/main/scala/de/tobias/playpad/server/project/Pad.scala b/src/main/scala/de/tobias/playpad/server/project/Pad.scala new file mode 100644 index 0000000000000000000000000000000000000000..d0a03da4021b42aecb8d3e24aec39b52b518a1d7 --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/Pad.scala @@ -0,0 +1,18 @@ +package de.tobias.playpad.server.project + +import java.util.UUID + +/** + * Created by tobias on 17.02.17. + */ +class Pad() { + + var id: UUID = UUID.randomUUID() + var name: String = _ + + var position: Int = _ + var pageIndex: Int = _ + + var design: Design = _ + var page: Page = _ +} diff --git a/src/main/scala/de/tobias/playpad/server/project/Page.scala b/src/main/scala/de/tobias/playpad/server/project/Page.scala new file mode 100644 index 0000000000000000000000000000000000000000..079602a8117901c7528478573f60bb477e621172 --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/Page.scala @@ -0,0 +1,17 @@ +package de.tobias.playpad.server.project + +import java.util.UUID + +/** + * Created by tobias on 17.02.17. + */ +class Page { + + var id: UUID = UUID.randomUUID() + var name: String = _ + + var position: Int = _ + + var pads: List[Pad] = List() + var project: Project = _ // FOREIGN KEY +} diff --git a/src/main/scala/de/tobias/playpad/server/project/Project.scala b/src/main/scala/de/tobias/playpad/server/project/Project.scala new file mode 100644 index 0000000000000000000000000000000000000000..5a2054389b0a0ccf89e46631ce359ff9d857eb0c --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/Project.scala @@ -0,0 +1,17 @@ +package de.tobias.playpad.server.project + +import java.util.UUID + +/** + * Created by tobias on 17.02.17. + */ +class Project { + + var id: UUID = UUID.randomUUID() + var name: String = _ + + var accountId: Int = _ // Account that own this project + + var pages: List[Page] = _ + +} diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/PadLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/PadLoader.scala new file mode 100644 index 0000000000000000000000000000000000000000..54be4951cc7fb80ab53d6e9b26e0c1b5b6c53cbc --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/loader/PadLoader.scala @@ -0,0 +1,36 @@ +package de.tobias.playpad.server.project.loader + +import java.sql.Connection +import java.util.UUID + +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 = ?" + val preparedStatement = connection.prepareStatement(sql) + preparedStatement.setString(1, pageId.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") + + pads = pad :: pads + } + + result.close() + preparedStatement.close() + + pads + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/PageLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/PageLoader.scala new file mode 100644 index 0000000000000000000000000000000000000000..ad39d6c42ff42867e8f402b38687ce0ea798becc --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/loader/PageLoader.scala @@ -0,0 +1,37 @@ +package de.tobias.playpad.server.project.loader + +import java.sql.Connection +import java.util.UUID + +import de.tobias.playpad.server.project.Page + +/** + * 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 = ?" + val preparedStatement = connection.prepareStatement(sql) + preparedStatement.setString(1, projectId.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") + + val padLoader = new PadLoader() + page.pads = padLoader.load(connection, page.id) + + pages = page :: pages + } + + result.close() + preparedStatement.close() + + pages + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/ProjectLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/ProjectLoader.scala new file mode 100644 index 0000000000000000000000000000000000000000..549f469d747c08869d860b16dc26aad42ce5ef35 --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/loader/ProjectLoader.scala @@ -0,0 +1,40 @@ +package de.tobias.playpad.server.project.loader + +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. + */ +class ProjectLoader { + + def load(connection: Connection, id: UUID): List[Project] = { + val sql = "SELECT * FROM Project WHERE id = ?" + val preparedStatement = connection.prepareStatement(sql) + preparedStatement.setString(1, id.toString) + val result = preparedStatement.executeQuery() + + var projects: List[Project] = List() + + 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") + + val pageLoader = new PageLoader() + project.pages = pageLoader.load(connection, id) + + projects = project :: projects + } + + result.close() + preparedStatement.close() + + projects + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/server/json/PadSaver.scala b/src/main/scala/de/tobias/playpad/server/project/server/json/PadSaver.scala new file mode 100644 index 0000000000000000000000000000000000000000..eb94451f4036cf8a28bc454143a1863c48a63e97 --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/server/json/PadSaver.scala @@ -0,0 +1,21 @@ +package de.tobias.playpad.server.project.server.json + +import com.google.gson.{JsonElement, JsonObject} +import de.tobias.playpad.server.project.Pad + +/** + * Created by tobias on 17.02.17. + */ +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 + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/server/json/PageSaver.scala b/src/main/scala/de/tobias/playpad/server/project/server/json/PageSaver.scala new file mode 100644 index 0000000000000000000000000000000000000000..b97cc422788a7217053153b51827a9f58e89806c --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/server/json/PageSaver.scala @@ -0,0 +1,24 @@ +package de.tobias.playpad.server.project.server.json + +import com.google.gson.{JsonArray, JsonElement, JsonObject} +import de.tobias.playpad.server.project.Page + +/** + * Created by tobias on 17.02.17. + */ +class PageSaver { + + def save(page: Page): JsonElement = { + val jsonObject = new JsonObject() + + val padSaver = new PadSaver() + 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 + } +} diff --git a/src/main/scala/de/tobias/playpad/server/project/server/json/ProjectSaver.scala b/src/main/scala/de/tobias/playpad/server/project/server/json/ProjectSaver.scala new file mode 100644 index 0000000000000000000000000000000000000000..18e88a5b293da174978b145213a50c5c5275bd36 --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/server/json/ProjectSaver.scala @@ -0,0 +1,23 @@ +package de.tobias.playpad.server.project.server.json + +import com.google.gson.{JsonArray, JsonObject} +import de.tobias.playpad.server.project.Project + +/** + * Created by tobias on 17.02.17. + */ +class ProjectSaver { + + def save(project: Project): JsonObject = { + val jsonObject = new JsonObject() + + val pageSaver = new PageSaver() + val pageArray = new JsonArray + project.pages.foreach(page => pageArray.add(pageSaver.save(page))) + + jsonObject.addProperty("name", project.name) + jsonObject.add("pages", pageArray) + + jsonObject + } +}