src/main/kotlin/de/uapcore/lightpit/servlet/UsersServlet.kt

changeset 209
c9c6abf167c7
parent 184
e8eecee6aadf
child 210
37fbdcb422b7
equal deleted inserted replaced
208:785820da6485 209:c9c6abf167c7
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 package de.uapcore.lightpit.servlet 26 package de.uapcore.lightpit.servlet
27 27
28 import de.uapcore.lightpit.AbstractServlet 28 import de.uapcore.lightpit.*
29 import de.uapcore.lightpit.HttpRequest
30 import de.uapcore.lightpit.LoggingTrait
31 import de.uapcore.lightpit.dao.DataAccessObject 29 import de.uapcore.lightpit.dao.DataAccessObject
32 import de.uapcore.lightpit.entities.User 30 import de.uapcore.lightpit.entities.User
33 import de.uapcore.lightpit.logger
34 import de.uapcore.lightpit.viewmodel.UserEditView 31 import de.uapcore.lightpit.viewmodel.UserEditView
35 import de.uapcore.lightpit.viewmodel.UsersView 32 import de.uapcore.lightpit.viewmodel.UsersView
36 import javax.servlet.annotation.WebServlet 33 import javax.servlet.annotation.WebServlet
37 34
38 @WebServlet(urlPatterns = ["/users/*"]) 35 @WebServlet(urlPatterns = ["/users/*"])
46 } 43 }
47 44
48 private val list = "users" 45 private val list = "users"
49 private val form = "user-form" 46 private val form = "user-form"
50 47
51 fun index(http: HttpRequest, dao: DataAccessObject) { 48 private fun index(http: HttpRequest, dao: DataAccessObject) {
52 with(http) { 49 with(http) {
53 view = UsersView(dao.listUsers()) 50 view = UsersView(dao.listUsers())
54 render(list) 51 render(list)
55 } 52 }
56 } 53 }
57 54
58 fun create(http: HttpRequest, dao: DataAccessObject) { 55 private fun create(http: HttpRequest, dao: DataAccessObject) {
59 with(http) { 56 with(http) {
60 view = UserEditView(User(-1)) 57 view = UserEditView(User(-1))
61 render(form) 58 render(form)
62 } 59 }
63 } 60 }
64 61
65 fun edit(http: HttpRequest, dao: DataAccessObject) { 62 private fun edit(http: HttpRequest, dao: DataAccessObject) {
66 val id = http.pathParams["userid"]?.toIntOrNull() 63 val id = http.pathParams["userid"]?.toIntOrNull()
67 if (id == null) { 64 if (id == null) {
68 http.response.sendError(404) 65 http.response.sendError(404)
69 } else { 66 } else {
70 val user = dao.findUser(id) 67 val user = dao.findUser(id)
77 } 74 }
78 } 75 }
79 } 76 }
80 } 77 }
81 78
82 fun commit(http: HttpRequest, dao: DataAccessObject) { 79 private fun commit(http: HttpRequest, dao: DataAccessObject) {
83 val id = http.param("userid")?.toIntOrNull() 80 val id = http.param("userid")?.toIntOrNull()
84 if (id == null) { 81 if (id == null) {
85 http.response.sendError(400) 82 http.response.sendError(400)
86 return 83 return
87 } 84 }
88 85
89 val user = User(id) 86 val user = User(id)
90 with(user) { 87 with(user) {
91 username = http.param("username") ?: ""
92 givenname = http.param("givenname") 88 givenname = http.param("givenname")
93 lastname = http.param("lastname") 89 lastname = http.param("lastname")
94 mail = http.param("mail") 90 mail = http.param("mail")
95 } 91 }
96 92
97 if (dao.findUserByName(user.username) != null) { 93 if (user.id > 0) {
98 with(http) { 94 logger().info("Update user with id ${user.id}.")
99 view = UserEditView(user).apply { errorText = "validation.username.unique" } 95 dao.updateUser(user)
96 http.renderCommit("users/")
97 } else {
98 val errorMessages = mutableListOf<String>()
99 val username = http.param("username", {
100 if (it == null) ValidationError("validation.username.null")
101 else if (dao.findUserByName(it) != null) ValidationError("validation.username.unique")
102 else ValidatedValue(it)
103 }, errorMessages)
104
105 if (username != null) {
106 logger().info("Insert user ${username}.")
107 user.username = username
108 dao.insertUser(user)
109 http.renderCommit("users/")
110 } else {
111 http.view = UserEditView(user).apply { this.errorMessages = errorMessages }
112 http.render(form)
100 } 113 }
101 } 114 }
102
103 if (user.id > 0) {
104 logger().info("Update user ${user.username} with id ${user.id}.")
105 dao.updateUser(user)
106 } else {
107 logger().info("Insert user ${user.username}.")
108 dao.insertUser(user)
109 }
110 http.renderCommit("users/")
111 } 115 }
112 } 116 }

mercurial