Commit bb6de6b9cd3ca7552a06384aa94c5736cf74faca

Authored by Thomas Ziemer
1 parent 5e5b7c79

feature: RoleService fortgesetzt (WIP)

README.md
... ... @@ -28,9 +28,9 @@ Unter Windows muss der Git-Installer aus dem Internet heruntergeladen und instal
28 28  
29 29 In einem beliebigen Verzeichnis ausführen:
30 30  
31   -> git clone https://git.ziemers.de/edu/swXercise.git
  31 +> git -c http.sslVerify=false clone https://git.ziemers.de/edu/swXercise.git
32 32  
33   -Es wird hierbei ein neues Verzeichnis namens "swXercise" erstellt, in dem sich nun das Projekt befindet.
  33 +Es wird hierbei ein neues Verzeichnis namens "swXercise" erstellt, in dem sich nun das Projekt befindet. Beim Klonen werden etwaige Zertifikatsfehler ignoriert (dies tritt trotz korrekten Zertifikats gelegentlich unter Windows auf).
34 34  
35 35 ## Projekt in die Entwicklungsumgebung integrieren
36 36  
... ... @@ -200,3 +200,7 @@ Quelle: https://tools.jboss.org/downloads/jbosstools/neon/4.4.3.Final.html
200 200 - Reiter "Server" und den zuvor bekanntgemachten JBoss-Server wählen
201 201 - Reiter "Deployment"
202 202 - Selected artifacts will be deployed at server startup -> das gewünschte Maven-Artefakt "swXercise" auswählen, und zwar das mit "exploded" markierte; deployt als ausgepackte Ordnerstruktur und nicht als "WAR-Datei" (vorteilhaft beim Hot-Deployment)
  203 +
  204 +## Projekt verwenden
  205 +
  206 +Beim Deployen des Projekts auf den Application Server wird automatisch der Benutzer "admin" mit dem Kennwort "admin" erstellt und diesem die Rolle "Adminrolle" zugewiesen. Mit ihm kann man sich anmelden und erste Übungen vornehmen.
203 207 \ No newline at end of file
... ...
src/main/java/net/ziemers/swxercise/db/dao/user/RoleDao.java
... ... @@ -14,6 +14,26 @@ import javax.ejb.Stateless;
14 14 public class RoleDao extends GenericDao {
15 15  
16 16 /**
  17 + * Findet eine {@link Role} aufgrund ihrer Id.
  18 + *
  19 + * @param id die Id der gewünschten Rolle
  20 + * @return die Rolle oder <code>null</code>, falls es keine gibt.
  21 + */
  22 + public Role findById(final Long id) {
  23 + Role role = null;
  24 +
  25 + try {
  26 + // ermittelt den ersten Datensatz mit der gesuchten Id, auch wenn
  27 + // er sich nicht im Persistence Context befindet
  28 + role = (Role) entityManager.createNamedQuery("Role.findById")
  29 + .setParameter("id", id).getSingleResult();
  30 + } catch (Exception e) {
  31 + /* nix */
  32 + }
  33 + return role;
  34 + }
  35 +
  36 + /**
17 37 * Findet eine {@link Role} aufgrund ihres Rollennamens.
18 38 *
19 39 * @param name der name der gewünschten Rolle
... ...
src/main/java/net/ziemers/swxercise/lg/model/user/Role.java
... ... @@ -13,7 +13,9 @@ import java.util.HashSet;
13 13 * Eine Rolle kann von einer Vaterrolle erben. Somit umfasst diese Rolle auch alle Rechte der Vaterrolle.
14 14 */
15 15 @Entity
16   -@NamedQuery(name = "Role.findByName", query = "SELECT r FROM Role r WHERE lower(r.name) = lower(:name)")
  16 +@NamedQueries({
  17 + @NamedQuery(name = "Role.findById", query = "SELECT r FROM Role r WHERE r.id = :id"),
  18 + @NamedQuery(name = "Role.findByName", query = "SELECT r FROM Role r WHERE lower(r.name) = lower(:name)")})
17 19 public class Role extends BaseEntity {
18 20  
19 21 @NotNull
... ...
src/main/java/net/ziemers/swxercise/lg/user/service/RoleService.java
... ... @@ -2,6 +2,7 @@ package net.ziemers.swxercise.lg.user.service;
2 2  
3 3 import net.ziemers.swxercise.db.dao.user.RoleDao;
4 4 import net.ziemers.swxercise.lg.model.user.Role;
  5 +import net.ziemers.swxercise.lg.model.user.User;
5 6 import net.ziemers.swxercise.lg.user.dto.RoleDto;
6 7  
7 8 import javax.ejb.Stateless;
... ... @@ -17,6 +18,9 @@ public class RoleService {
17 18 @Inject
18 19 private RoleDao dao;
19 20  
  21 + @Inject
  22 + private SessionContext sessionContext;
  23 +
20 24 /**
21 25 * Findet alle existierenden Rollen.
22 26 *
... ... @@ -25,6 +29,29 @@ public class RoleService {
25 29 public Collection<Role> findAllRoles() { return dao.findAll(Role.class); }
26 30  
27 31 /**
  32 + * Findet die Rolle mit der übergebenen Id.
  33 + *
  34 + * @param id die Id der gesuchten Rolle.
  35 + * @return die gesuchte Rolle, oder <code>null</code>, falls eine solche nicht existiert.
  36 + */
  37 + public Role findRole(final Long id) {
  38 + return dao.findById(id);
  39 + }
  40 +
  41 + /**
  42 + * Findet die Rolle des zurzeit angemeldeten Benutzers.
  43 + *
  44 + * @return die gesuchte Rolle, oder <code>null</code>, falls eine solche nicht existiert.
  45 + */
  46 + public Role findRole() {
  47 + final User user = sessionContext.getUser();
  48 + if (user != null && user.getProfile() != null) {
  49 + return user.getProfile().getRole();
  50 + }
  51 + return null;
  52 + }
  53 +
  54 + /**
28 55 * Erstellt eine neue Rolle, sofern noch keine mit dem selben Namen existiert.
29 56 * Zwischen der Groß- und Kleinschreibung wird nicht unterschieden.
30 57 *
... ... @@ -41,4 +68,65 @@ public class RoleService {
41 68 return null;
42 69 }
43 70  
  71 + /**
  72 + * Aktualisiert die Rolle mit der übergebenen Id.
  73 + *
  74 + * @param id die Id der zu aktualisierenden Rolle
  75 + * @param dto das {@link RoleDto} enthält die Eigenschaften der zu aktualisierenden Rolle
  76 + * @return <code>true</code>, wenn das Aktualisieren der Rolle erfolgreich war.
  77 + */
  78 + public boolean updateRole(final Long id, final RoleDto dto) {
  79 + final Role role = dao.findById(id);
  80 + if (role != null) {
  81 + // TODO noch zu implementieren
  82 + return false;
  83 + }
  84 + return false;
  85 + }
  86 +
  87 + /**
  88 + * Aktualisiert die Rolle des zurzeit angemeldeten Benutzers.
  89 + *
  90 + * @param dto das {@link RoleDto} enthält die Eigenschaften der zu aktualisierenden Rolle
  91 + * @return <code>true</code>, wenn das Aktualisieren der Rolle erfolgreich war.
  92 + */
  93 + public boolean updateRole(final RoleDto dto) {
  94 + // ist zurzeit ein Benutzer angemeldet, können wir dessen Rolle aktualisieren
  95 + final User user = sessionContext.getUser();
  96 + if (user != null) {
  97 + // TODO noch zu implementieren
  98 + return false;
  99 + }
  100 + return false;
  101 + }
  102 +
  103 + /**
  104 + * Löscht die Rolle mit der übergebenen Id.
  105 + *
  106 + * @param id die Id der zu löschenden Rolle.
  107 + */
  108 + public Role deleteRole(final Long id) {
  109 + return dao.remove(Role.class, id);
  110 + }
  111 +
  112 + /**
  113 + * Löscht die Rolle des zurzeit angemeldeten Benutzers.
  114 + *
  115 + * @return <code>true</code>, wenn das Löschen der Rolle des angemeldeten Benutzers erfolgreich war.
  116 + */
  117 + public boolean deleteRole() {
  118 + // ist zurzeit ein Benutzer angemeldet, können wir dessen Rolle löschen
  119 + final User user = sessionContext.getUser();
  120 + if (user != null && user.getProfile() != null) {
  121 + final Role role = user.getProfile().getRole();
  122 + if (role != null) {
  123 + user.getProfile().setRole(null);
  124 + dao.save(user);
  125 + dao.remove(Role.class, role.getId());
  126 + return true;
  127 + }
  128 + }
  129 + return false;
  130 + }
  131 +
44 132 }
... ...
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java
... ... @@ -60,13 +60,7 @@ public class UserService {
60 60 *
61 61 * @return den gesuchten Benutzer, oder <code>null</code>, falls ein solcher nicht existiert.
62 62 */
63   - public User findUser() {
64   - final User user = sessionContext.getUser();
65   - if (user != null) {
66   - return dao.findById(user.getId());
67   - }
68   - return null;
69   - }
  63 + public User findUser() { return sessionContext.getUser(); }
70 64  
71 65 /**
72 66 * Findet alle existierenden Benutzer.
... ...
src/main/java/net/ziemers/swxercise/ui/RoleViewController.java
... ... @@ -54,10 +54,8 @@ public class RoleViewController {
54 54 @Path("v1/role/{id}")
55 55 @Produces(MediaType.APPLICATION_JSON)
56 56 @RolesAllowed(RightState.Constants.ADMIN)
57   - public User getRole(@PathParam("id") Long id) {
58   - // TODO noch zu implementieren
59   - //return roleService.findRole(id);
60   - return null;
  57 + public Role getRole(@PathParam("id") Long id) {
  58 + return roleService.findRole(id);
61 59 }
62 60  
63 61 /**
... ... @@ -72,10 +70,8 @@ public class RoleViewController {
72 70 @Path("v1/role")
73 71 @Produces(MediaType.APPLICATION_JSON)
74 72 @RolesAllowed(RightState.Constants.LOGGED_IN)
75   - public User getRole() {
76   - // TODO noch zu implmentieren
77   - //return userService.findUser();
78   - return null;
  73 + public Role getRole() {
  74 + return roleService.findRole();
79 75 }
80 76  
81 77 /**
... ... @@ -118,10 +114,9 @@ public class RoleViewController {
118 114 @Produces(MediaType.APPLICATION_JSON)
119 115 @RolesAllowed(RightState.Constants.ADMIN)
120 116 public RestResponse updateRole(@PathParam("id") Long id, RoleDto dto) {
121   - // TODO noch zu implementieren
122   - //if (roleService.updateRole(id, dto)) {
123   - // return new RestResponse();
124   - //}
  117 + if (roleService.updateRole(id, dto)) {
  118 + return new RestResponse();
  119 + }
125 120 return new RestResponse(ResponseState.FAILED);
126 121 }
127 122  
... ... @@ -143,10 +138,9 @@ public class RoleViewController {
143 138 @Produces(MediaType.APPLICATION_JSON)
144 139 @RolesAllowed(RightState.Constants.LOGGED_IN)
145 140 public RestResponse updateRole(RoleDto dto) {
146   - // TODO noch zu implementieren
147   - //if (roleService.updateRole(dto)) {
148   - // return new RestResponse();
149   - //}
  141 + if (roleService.updateRole(dto)) {
  142 + return new RestResponse();
  143 + }
150 144 return new RestResponse(ResponseState.FAILED);
151 145 }
152 146  
... ... @@ -164,8 +158,7 @@ public class RoleViewController {
164 158 @Produces(MediaType.APPLICATION_JSON)
165 159 @RolesAllowed(RightState.Constants.ADMIN)
166 160 public RestResponse deletetRole(@PathParam("id") Long id) {
167   - // TODO noch zu implementieren
168   - //roleService.deleteRole(id);
  161 + roleService.deleteRole(id);
169 162 return new RestResponse();
170 163 }
171 164  
... ... @@ -182,10 +175,9 @@ public class RoleViewController {
182 175 @Produces(MediaType.APPLICATION_JSON)
183 176 @RolesAllowed(RightState.Constants.LOGGED_IN)
184 177 public RestResponse deleteRole() {
185   - // TODO noch zu implementieren
186   - //if (roleService.deleteRole()) {
187   - // return new RestResponse();
188   - //}
  178 + if (roleService.deleteRole()) {
  179 + return new RestResponse();
  180 + }
189 181 return new RestResponse(ResponseState.FAILED);
190 182 }
191 183  
... ...
src/main/webapp/index.jsp 0 → 100644
  1 +<%--
  2 + Created by IntelliJ IDEA.
  3 + User: tziemer
  4 + Date: 20.06.17
  5 + Time: 17:49
  6 + To change this template use File | Settings | File Templates.
  7 +--%>
  8 +<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9 +<html>
  10 +<head>
  11 + <title>swXercise Application</title>
  12 +</head>
  13 +<body>
  14 +
  15 +</body>
  16 + <h2>swXercise Application is running.</h2>
  17 +</html>
... ...