|
1 /* |
|
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
|
3 * |
|
4 * Copyright 2018 Mike Becker. All rights reserved. |
|
5 * |
|
6 * Redistribution and use in source and binary forms, with or without |
|
7 * modification, are permitted provided that the following conditions are met: |
|
8 * |
|
9 * 1. Redistributions of source code must retain the above copyright |
|
10 * notice, this list of conditions and the following disclaimer. |
|
11 * |
|
12 * 2. Redistributions in binary form must reproduce the above copyright |
|
13 * notice, this list of conditions and the following disclaimer in the |
|
14 * documentation and/or other materials provided with the distribution. |
|
15 * |
|
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
|
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
26 * POSSIBILITY OF SUCH DAMAGE. |
|
27 * |
|
28 */ |
|
29 package de.uapcore.lightpit.modules; |
|
30 |
|
31 |
|
32 import de.uapcore.lightpit.*; |
|
33 import de.uapcore.lightpit.dao.DataAccessObjects; |
|
34 import de.uapcore.lightpit.entities.User; |
|
35 |
|
36 import javax.servlet.annotation.WebServlet; |
|
37 import javax.servlet.http.HttpServletRequest; |
|
38 import java.sql.SQLException; |
|
39 import java.util.Optional; |
|
40 |
|
41 @LightPITModule( |
|
42 bundleBaseName = "localization.users", |
|
43 modulePath = "teams", |
|
44 defaultPriority = 100 |
|
45 ) |
|
46 @WebServlet( |
|
47 name = "UsersModule", |
|
48 urlPatterns = "/teams/*" |
|
49 ) |
|
50 public final class UsersModule extends AbstractLightPITServlet { |
|
51 |
|
52 @RequestMapping(method = HttpMethod.GET) |
|
53 public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException { |
|
54 final var userDao = dao.getUserDao(); |
|
55 |
|
56 req.setAttribute("users", userDao.list()); |
|
57 setDynamicFragment(req, "users"); |
|
58 |
|
59 return ResponseType.HTML; |
|
60 } |
|
61 |
|
62 @RequestMapping(requestPath = "edit", method = HttpMethod.GET) |
|
63 public ResponseType edit(HttpServletRequest req, DataAccessObjects dao) throws SQLException { |
|
64 final var userDao = dao.getUserDao(); |
|
65 |
|
66 Optional<Integer> id = getParameter(req, Integer.class, "id"); |
|
67 if (id.isPresent()) { |
|
68 req.setAttribute("user", Optional.ofNullable(userDao.find(id.get())).orElse(new User(-1))); |
|
69 } else { |
|
70 req.setAttribute("user", new User(-1)); |
|
71 } |
|
72 |
|
73 setDynamicFragment(req, "user-form"); |
|
74 |
|
75 return ResponseType.HTML; |
|
76 } |
|
77 |
|
78 @RequestMapping(requestPath = "commit", method = HttpMethod.POST) |
|
79 public ResponseType commit(HttpServletRequest req, DataAccessObjects dao) { |
|
80 |
|
81 User user = new User(-1); |
|
82 try { |
|
83 user = new User(getParameter(req, Integer.class, "userid").orElseThrow()); |
|
84 user.setUsername(getParameter(req, String.class, "username").orElseThrow()); |
|
85 getParameter(req, String.class, "givenname").ifPresent(user::setGivenname); |
|
86 getParameter(req, String.class, "lastname").ifPresent(user::setLastname); |
|
87 getParameter(req, String.class, "mail").ifPresent(user::setMail); |
|
88 |
|
89 dao.getUserDao().saveOrUpdate(user); |
|
90 |
|
91 setRedirectLocation(req, "./teams/"); |
|
92 setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL); |
|
93 } catch (NullPointerException | NumberFormatException | SQLException ex) { |
|
94 // TODO: set request attribute with error text |
|
95 req.setAttribute("user", user); |
|
96 setDynamicFragment(req, "user-form"); |
|
97 } |
|
98 |
|
99 return ResponseType.HTML; |
|
100 } |
|
101 } |