From d95ed1bc9effe7779cc2532518fda192e9aeaea7 Mon Sep 17 00:00:00 2001 From: Hoai Viet Nguyen <viet.nguyen@th-koeln.de> Date: Wed, 23 Oct 2024 15:04:05 +0200 Subject: [PATCH] implement tasksservices --- .../todolist/controllers/TasksController.kt | 31 ++++++++++--- .../de/thk/gm/gdw/todolist/models/Task.kt | 1 + .../todolist/services/TaskServiceImplCloud.kt | 45 +++++++++++++++++++ .../gm/gdw/todolist/services/TasksService.kt | 12 +++++ .../gdw/todolist/services/TasksServiceImpl.kt | 35 +++++++++++++++ 5 files changed, 118 insertions(+), 6 deletions(-) create mode 100644 src/main/kotlin/de/thk/gm/gdw/todolist/services/TaskServiceImplCloud.kt create mode 100644 src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksService.kt create mode 100644 src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksServiceImpl.kt 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 34d0eed..ddac7bd 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 be4b3f9..8958547 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 0000000..ee17fc7 --- /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 0000000..0d4f401 --- /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 0000000..6d97621 --- /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 -- GitLab