Commit 7a765da25098cb6c12f625e6037af0ae0f0162af
1 parent
493ca844
refactor: updateUser mit Kontext und Mapper re-implementiert
Showing
7 changed files
with
21 additions
and
6 deletions
src/main/java/net/ziemers/swxercise/lg/model/user/Profile.java
... | ... | @@ -145,7 +145,7 @@ public class Profile extends BaseEntity { |
145 | 145 | return passwordHash; |
146 | 146 | } |
147 | 147 | |
148 | - private void setPassword(String password) { | |
148 | + public void setPassword(String password) { | |
149 | 149 | // das Klartextkennwort wird niemals gespeichert! |
150 | 150 | this.passwordHash = cryptString(password); |
151 | 151 | } | ... | ... |
src/main/java/net/ziemers/swxercise/lg/model/user/User.java
src/main/java/net/ziemers/swxercise/lg/user/dto/UserDto.java
src/main/java/net/ziemers/swxercise/lg/user/service/SessionContext.java
src/main/java/net/ziemers/swxercise/lg/user/service/UserDtoToEntityContextService.java
... | ... | @@ -23,7 +23,7 @@ public class UserDtoToEntityContextService { |
23 | 23 | public UserDtoToEntityContext createContext(final UserDto dto) { |
24 | 24 | final UserDtoToEntityContext ctx = new UserDtoToEntityContext(); |
25 | 25 | |
26 | - // das UserDTO in den Kontext füllen | |
26 | + // das übergebene UserDto in den Kontext füllen | |
27 | 27 | ctx.dto = dto; |
28 | 28 | |
29 | 29 | // einen neuen oder einen bereits existierenden Benutzer in den Kontext füllen |
... | ... | @@ -35,6 +35,9 @@ public class UserDtoToEntityContextService { |
35 | 35 | // wir füllen das User-Objekt mit Method Chaining |
36 | 36 | ctx.user = new User(dto.getFirstname(), dto.getLastname()) |
37 | 37 | .withProfile(ctx.profile); |
38 | + } else { | |
39 | + ctx.profile = ctx.user.getProfile(); | |
40 | + ctx.address = ctx.user.getAddress(); | |
38 | 41 | } |
39 | 42 | return ctx; |
40 | 43 | } | ... | ... |
src/main/java/net/ziemers/swxercise/lg/user/service/UserDtoToEntityMapper.java
... | ... | @@ -17,11 +17,20 @@ public class UserDtoToEntityMapper { |
17 | 17 | * @return den Kontext. |
18 | 18 | */ |
19 | 19 | public UserDtoToEntityContext map(UserDtoToEntityContext ctx) { |
20 | + // User-Objekt mappen | |
20 | 21 | ctx.user.setFirstname(ctx.dto.getFirstname()); |
21 | 22 | ctx.user.setLastname(ctx.dto.getLastname()); |
23 | + | |
24 | + // Profile-Objekt mappen, falls gegeben | |
22 | 25 | if (ctx.profile != null) { |
23 | 26 | ctx.user.setProfile(ctx.profile); |
27 | + if(ctx.dto.getPassword().length() > 0) { | |
28 | + ctx.profile.setPassword(ctx.dto.getPassword()); | |
29 | + } | |
30 | + ctx.profile.setMailaddress(ctx.dto.getMailaddress()); | |
24 | 31 | } |
32 | + | |
33 | + // Address-Objekt mappen, falls gegeben | |
25 | 34 | if (ctx.address != null) { |
26 | 35 | ctx.user.setAddress(ctx.address); |
27 | 36 | } | ... | ... |
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java
... | ... | @@ -123,8 +123,11 @@ public class UserService { |
123 | 123 | // ist zurzeit ein Benutzer angemeldet, können wir ihn aktualisieren |
124 | 124 | final User user = sessionContext.getUser(); |
125 | 125 | if (user != null) { |
126 | - // TODO noch zu implementieren | |
127 | - return false; | |
126 | + // der Benutzername darf sich beim Aktualisieren nicht mehr ändern! | |
127 | + dto.withUsername(user.getProfile().getUsername()); | |
128 | + final UserDtoToEntityContext ctx = ctxService.createContext(dto); | |
129 | + mapper.map(ctx); | |
130 | + return dao.saveOrUpdate(ctx.user) != null; | |
128 | 131 | } |
129 | 132 | return false; |
130 | 133 | } | ... | ... |