Skip to content
Snippets Groups Projects
Commit d95ed1bc authored by Hoai Viet Nguyen's avatar Hoai Viet Nguyen
Browse files

implement tasksservices

parent 82b00e44
No related branches found
No related tags found
1 merge request!1Association with user entity video
...@@ -2,15 +2,17 @@ package de.thk.gm.gdw.todolist.controllers ...@@ -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.models.Task
import de.thk.gm.gdw.todolist.repositories.TasksRepository 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.data.repository.findByIdOrNull
import org.springframework.http.HttpStatus import org.springframework.http.HttpStatus
import org.springframework.stereotype.Controller import org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.* import org.springframework.web.bind.annotation.*
import java.sql.DriverManager
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
@Controller @Controller
class TasksController (private val tasksRepository: TasksRepository) { class TasksController (private val tasksService: TasksService) {
@PostMapping("/tasks") @PostMapping("/tasks")
@ResponseBody @ResponseBody
...@@ -18,34 +20,51 @@ class TasksController (private val tasksRepository: TasksRepository) { ...@@ -18,34 +20,51 @@ class TasksController (private val tasksRepository: TasksRepository) {
fun saveTask(name : String) { fun saveTask(name : String) {
var task = Task() var task = Task()
task.name = name task.name = name
tasksRepository.save(task) tasksService.save(task)
} }
@GetMapping("/tasks") @GetMapping("/tasks")
@ResponseBody @ResponseBody
fun getTasks() : String { fun getTasks() : String {
val tasks = tasksRepository.findByOpenTrue() val tasks = tasksService.getAll()
return tasks.joinToString(",") return tasks.joinToString(",")
} }
@GetMapping("/tasks/{id}") @GetMapping("/tasks/{id}")
@ResponseBody @ResponseBody
fun getTaskById(@PathVariable("id") id : UUID) : String { fun getTaskById(@PathVariable("id") id : UUID) : String {
val task : Task? = tasksRepository.findByIdOrNull(id) val task : Task? = tasksService.getById(id)
return task!!.name return task!!.name
} }
@PutMapping("/tasks/{id}") @PutMapping("/tasks/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT) @ResponseStatus(HttpStatus.NO_CONTENT)
fun updateTask(@PathVariable("id") id : UUID, name : String) { fun updateTask(@PathVariable("id") id : UUID, name : String) {
val task : Task? = tasksRepository.findByIdOrNull(id) val task : Task? = tasksService.getById(id)
task!!.name = name task!!.name = name
} }
@DeleteMapping("/tasks/{id}") @DeleteMapping("/tasks/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT) @ResponseStatus(HttpStatus.NO_CONTENT)
fun deleteTask(@PathVariable("id") id : UUID) { 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
...@@ -11,6 +11,7 @@ class Task { ...@@ -11,6 +11,7 @@ class Task {
var name: String = "" var name: String = ""
var open: Boolean = true var open: Boolean = true
var createdAt: Date = Date() var createdAt: Date = Date()
var updatedAt: Date = Date()
override fun toString(): String { override fun toString(): String {
return "Task(id=$id, name='$name', open=$open, createdAt=$createdAt)" return "Task(id=$id, name='$name', open=$open, createdAt=$createdAt)"
......
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
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
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment