Commit c30f50bddca22bf143121b7ff1d02d4ef476c19e
1 parent
33e38bd1
improvement: Context und Mapper eingebunden (WIP)
Showing
3 changed files
with
34 additions
and
18 deletions
src/main/java/net/ziemers/swxercise/lg/user/service/UserDtoToEntityContextService.java
... | ... | @@ -3,7 +3,8 @@ package net.ziemers.swxercise.lg.user.service; |
3 | 3 | import javax.ejb.Stateless; |
4 | 4 | import javax.inject.Inject; |
5 | 5 | |
6 | -import net.ziemers.swxercise.db.dao.GenericDao; | |
6 | +import net.ziemers.swxercise.db.dao.user.UserDao; | |
7 | +import net.ziemers.swxercise.lg.model.user.Profile; | |
7 | 8 | import net.ziemers.swxercise.lg.model.user.User; |
8 | 9 | import net.ziemers.swxercise.lg.user.dto.UserDto; |
9 | 10 | |
... | ... | @@ -11,7 +12,7 @@ import net.ziemers.swxercise.lg.user.dto.UserDto; |
11 | 12 | public class UserDtoToEntityContextService { |
12 | 13 | |
13 | 14 | @Inject |
14 | - private GenericDao dao; | |
15 | + private UserDao dao; | |
15 | 16 | |
16 | 17 | /** |
17 | 18 | * Erzeugt den Aktualisierungskontext zur übergebenen Zielentität. |
... | ... | @@ -20,12 +21,22 @@ public class UserDtoToEntityContextService { |
20 | 21 | * @return den erzeugten Kontext. |
21 | 22 | */ |
22 | 23 | public UserDtoToEntityContext createContext(final UserDto dto) { |
23 | - final UserDtoToEntityContext ctx = new UserDtoToEntityContext(); | |
24 | - | |
25 | - ctx.dto = dto; | |
26 | - ctx.user = dto.getEntityId() == null ? new User() : dao.findById(User.class, dto.getEntityId()); | |
27 | - | |
28 | - return ctx; | |
24 | + final UserDtoToEntityContext ctx = new UserDtoToEntityContext(); | |
25 | + | |
26 | + // das UserDTO in den Kontext füllen | |
27 | + ctx.dto = dto; | |
28 | + | |
29 | + // einen neuen oder einen bereits existierenden Benutzer in den Kontext füllen | |
30 | + ctx.user = dao.findByUsername(dto.getUsername()); | |
31 | + if (ctx.user == null) { | |
32 | + // es soll niemals ein Profil ohne Benutzername und Kennwort geben | |
33 | + final Profile profile = new Profile(dto.getUsername(), dto.getPassword()); | |
34 | + | |
35 | + // wir füllen das User-Objekt mit Method Chaining | |
36 | + ctx.user = new User(dto.getFirstname(), dto.getLastname()) | |
37 | + .withProfile(profile); | |
38 | + } | |
39 | + return ctx; | |
29 | 40 | } |
30 | 41 | |
31 | 42 | } | ... | ... |
src/main/java/net/ziemers/swxercise/lg/user/service/UserDtoToEntityMapper.java
... | ... | @@ -15,7 +15,7 @@ public class UserDtoToEntityMapper { |
15 | 15 | ctx.user.setFirstname(ctx.dto.getFirstname()); |
16 | 16 | ctx.user.setLastname(ctx.dto.getLastname()); |
17 | 17 | //ctx.user.setProfile(ctx.dto.getProfile()); |
18 | - //ctx.user.setAddress(ctx.fto.getAddress()); | |
18 | + //ctx.user.setAddress(ctx.dto.getAddress()); | |
19 | 19 | |
20 | 20 | return ctx; |
21 | 21 | } | ... | ... |
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java
... | ... | @@ -25,6 +25,12 @@ public class UserService { |
25 | 25 | @Inject |
26 | 26 | private SessionContext sessionContext; |
27 | 27 | |
28 | + @Inject | |
29 | + private UserDtoToEntityContextService ctxService; | |
30 | + | |
31 | + @Inject | |
32 | + private UserDtoToEntityMapper mapper; | |
33 | + | |
28 | 34 | /** |
29 | 35 | * Meldet den Benutzer im SessionContext an. |
30 | 36 | * |
... | ... | @@ -79,16 +85,15 @@ public class UserService { |
79 | 85 | * @return die Id des neuen Benutzers, wenn die Erstellung erfolgreich war. |
80 | 86 | */ |
81 | 87 | public Long createUser(final UserDto dto) { |
82 | - // der Benutzer darf natürlich noch nicht existieren :) | |
83 | - User user = dao.findByUsername(dto.getUsername()); | |
84 | - if (user == null) { | |
85 | - final Profile profile = new Profile(dto.getUsername(), dto.getPassword()); | |
86 | - | |
87 | - // wir füllen das User-Objekt mit Method Chaining | |
88 | - user = new User(dto.getFirstname(), dto.getLastname()) | |
89 | - .withProfile(profile); | |
88 | + final UserDtoToEntityContext ctx = ctxService.createContext(dto); | |
89 | + mapper.map(ctx); | |
90 | + return persistUserIfNew(ctx); | |
91 | + } | |
90 | 92 | |
91 | - return dao.save(user); | |
93 | + private Long persistUserIfNew(final UserDtoToEntityContext ctx) { | |
94 | + // nur ein neuer Benutzer hat noch keine oid | |
95 | + if (ctx.user.getId() == null) { | |
96 | + return dao.save(ctx.user); | |
92 | 97 | } |
93 | 98 | return null; |
94 | 99 | } | ... | ... |