diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/controllers/TasksController.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/controllers/TasksController.kt index 34d0eed17e2261183339bd358ae1b091003cc790..ddac7bd41353331d3224deea566e4a4e443eee99 100644 --- a/src/main/kotlin/de/thk/gm/gdw/todolist/controllers/TasksController.kt +++ b/src/main/kotlin/de/thk/gm/gdw/todolist/controllers/TasksController.kt @@ -2,15 +2,17 @@ package de.thk.gm.gdw.todolist.controllers import de.thk.gm.gdw.todolist.models.Task import de.thk.gm.gdw.todolist.repositories.TasksRepository +import de.thk.gm.gdw.todolist.services.TasksService import org.springframework.data.repository.findByIdOrNull import org.springframework.http.HttpStatus import org.springframework.stereotype.Controller import org.springframework.web.bind.annotation.* +import java.sql.DriverManager import java.util.* import kotlin.collections.ArrayList @Controller -class TasksController (private val tasksRepository: TasksRepository) { +class TasksController (private val tasksService: TasksService) { @PostMapping("/tasks") @ResponseBody @@ -18,34 +20,51 @@ class TasksController (private val tasksRepository: TasksRepository) { fun saveTask(name : String) { var task = Task() task.name = name - tasksRepository.save(task) + tasksService.save(task) } @GetMapping("/tasks") @ResponseBody fun getTasks() : String { - val tasks = tasksRepository.findByOpenTrue() + val tasks = tasksService.getAll() return tasks.joinToString(",") } @GetMapping("/tasks/{id}") @ResponseBody fun getTaskById(@PathVariable("id") id : UUID) : String { - val task : Task? = tasksRepository.findByIdOrNull(id) + val task : Task? = tasksService.getById(id) return task!!.name } @PutMapping("/tasks/{id}") @ResponseStatus(HttpStatus.NO_CONTENT) fun updateTask(@PathVariable("id") id : UUID, name : String) { - val task : Task? = tasksRepository.findByIdOrNull(id) + val task : Task? = tasksService.getById(id) task!!.name = name } @DeleteMapping("/tasks/{id}") @ResponseStatus(HttpStatus.NO_CONTENT) fun deleteTask(@PathVariable("id") id : UUID) { - tasksRepository.deleteById(id) + tasksService.delete(id) + } + + @PostMapping("/tightCoupled/tasks") + @ResponseStatus(HttpStatus.CREATED) + fun saveTightlyCoupled(name : String) { + var task : Task = Task() + task.name = name + + val con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "admin", "123") + var preStm = con.prepareStatement("INSERT INTO TASK (ID, NAME, OPEN, CREATEDAT, UPDATEDAT) VALUES (?, ?, ?, ?)") + preStm.setString(1, task.id.toString()) + preStm.setString(2, task.name) + preStm.setString(3, task.open.toString()) + preStm.setString(4, task.createdAt.toString()) + preStm.setString(5, task.updatedAt.toString()) + val rs = preStm.executeQuery() + } } \ No newline at end of file diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/models/Task.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/models/Task.kt index be4b3f9e645eccc49ee6fba4d3732641f545456c..895854702b56a6e83e652158ab48df1b4bbac444 100644 --- a/src/main/kotlin/de/thk/gm/gdw/todolist/models/Task.kt +++ b/src/main/kotlin/de/thk/gm/gdw/todolist/models/Task.kt @@ -11,6 +11,7 @@ class Task { var name: String = "" var open: Boolean = true var createdAt: Date = Date() + var updatedAt: Date = Date() override fun toString(): String { return "Task(id=$id, name='$name', open=$open, createdAt=$createdAt)" diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/services/TaskServiceImplCloud.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TaskServiceImplCloud.kt new file mode 100644 index 0000000000000000000000000000000000000000..ee17fc7a6e6bd896aaa008c16a2183995b07c8f8 --- /dev/null +++ b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TaskServiceImplCloud.kt @@ -0,0 +1,45 @@ +package de.thk.gm.gdw.todolist.services + +import de.thk.gm.gdw.todolist.models.Task +import org.springframework.http.HttpStatus +import org.springframework.stereotype.Service +import org.springframework.web.server.ResponseStatusException +import java.net.URI +import java.net.http.HttpClient +import java.net.http.HttpRequest +import java.net.http.HttpResponse +import java.util.* + +@Service +class TaskServiceImplCloud : TasksService { + override fun getAll(): List<Task> { + TODO("Not yet implemented") + } + + override fun getAll(open: Boolean): List<Task> { + TODO("Not yet implemented") + } + + override fun getById(id: UUID): Task? { + TODO("Not yet implemented") + } + + override fun save(task: Task): Task { + val client = HttpClient.newBuilder().build(); + val request = HttpRequest.newBuilder().POST(HttpRequest.BodyPublishers.ofString(task.toString())) + .uri(URI.create("https://cloud-database.org/tasks")).build() + val response = client.send(request, HttpResponse.BodyHandlers.ofString()) + + if(response.statusCode() == 201) { + return task + } else { + throw ResponseStatusException(HttpStatus.BAD_REQUEST) + } + + + } + + override fun delete(id: UUID) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksService.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksService.kt new file mode 100644 index 0000000000000000000000000000000000000000..0d4f401b06f85d5d29c6a6a8c46cc368d58466b9 --- /dev/null +++ b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksService.kt @@ -0,0 +1,12 @@ +package de.thk.gm.gdw.todolist.services + +import de.thk.gm.gdw.todolist.models.Task +import java.util.* + +interface TasksService { + fun getAll(): List<Task> + fun getAll(open: Boolean = false): List<Task> + fun getById(id: UUID): Task? + fun save(task: Task): Task + fun delete(id: UUID) +} \ No newline at end of file diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksServiceImpl.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksServiceImpl.kt new file mode 100644 index 0000000000000000000000000000000000000000..6d976210dcc0b656f3a71ed8a0888efc02e9fc6e --- /dev/null +++ b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksServiceImpl.kt @@ -0,0 +1,35 @@ +package de.thk.gm.gdw.todolist.services + +import de.thk.gm.gdw.todolist.models.Task +import de.thk.gm.gdw.todolist.repositories.TasksRepository +import org.springframework.context.annotation.Primary +import org.springframework.stereotype.Service +import java.util.* + +@Primary +@Service +class TasksServiceImpl (private val tasksRepository: TasksRepository) : TasksService { + override fun getAll(): List<Task> { + return tasksRepository.findAll().toList() + } + + override fun getAll(open: Boolean): List<Task> { + return if(open){ + tasksRepository.findByOpenTrue() + } else { + tasksRepository.findByOpenFalse() + } + } + + override fun getById(id: UUID): Task? { + return tasksRepository.findById(id).orElse(null) + } + + override fun save(task: Task): Task { + return tasksRepository.save(task) + } + + override fun delete(id: UUID) { + tasksRepository.deleteById(id) + } +} \ No newline at end of file