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,7 +3,8 @@ package net.ziemers.swxercise.lg.user.service; | ||
3 | import javax.ejb.Stateless; | 3 | import javax.ejb.Stateless; |
4 | import javax.inject.Inject; | 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 | import net.ziemers.swxercise.lg.model.user.User; | 8 | import net.ziemers.swxercise.lg.model.user.User; |
8 | import net.ziemers.swxercise.lg.user.dto.UserDto; | 9 | import net.ziemers.swxercise.lg.user.dto.UserDto; |
9 | 10 | ||
@@ -11,7 +12,7 @@ import net.ziemers.swxercise.lg.user.dto.UserDto; | @@ -11,7 +12,7 @@ import net.ziemers.swxercise.lg.user.dto.UserDto; | ||
11 | public class UserDtoToEntityContextService { | 12 | public class UserDtoToEntityContextService { |
12 | 13 | ||
13 | @Inject | 14 | @Inject |
14 | - private GenericDao dao; | 15 | + private UserDao dao; |
15 | 16 | ||
16 | /** | 17 | /** |
17 | * Erzeugt den Aktualisierungskontext zur übergebenen Zielentität. | 18 | * Erzeugt den Aktualisierungskontext zur übergebenen Zielentität. |
@@ -20,12 +21,22 @@ public class UserDtoToEntityContextService { | @@ -20,12 +21,22 @@ public class UserDtoToEntityContextService { | ||
20 | * @return den erzeugten Kontext. | 21 | * @return den erzeugten Kontext. |
21 | */ | 22 | */ |
22 | public UserDtoToEntityContext createContext(final UserDto dto) { | 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,7 +15,7 @@ public class UserDtoToEntityMapper { | ||
15 | ctx.user.setFirstname(ctx.dto.getFirstname()); | 15 | ctx.user.setFirstname(ctx.dto.getFirstname()); |
16 | ctx.user.setLastname(ctx.dto.getLastname()); | 16 | ctx.user.setLastname(ctx.dto.getLastname()); |
17 | //ctx.user.setProfile(ctx.dto.getProfile()); | 17 | //ctx.user.setProfile(ctx.dto.getProfile()); |
18 | - //ctx.user.setAddress(ctx.fto.getAddress()); | 18 | + //ctx.user.setAddress(ctx.dto.getAddress()); |
19 | 19 | ||
20 | return ctx; | 20 | return ctx; |
21 | } | 21 | } |
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java
@@ -25,6 +25,12 @@ public class UserService { | @@ -25,6 +25,12 @@ public class UserService { | ||
25 | @Inject | 25 | @Inject |
26 | private SessionContext sessionContext; | 26 | private SessionContext sessionContext; |
27 | 27 | ||
28 | + @Inject | ||
29 | + private UserDtoToEntityContextService ctxService; | ||
30 | + | ||
31 | + @Inject | ||
32 | + private UserDtoToEntityMapper mapper; | ||
33 | + | ||
28 | /** | 34 | /** |
29 | * Meldet den Benutzer im SessionContext an. | 35 | * Meldet den Benutzer im SessionContext an. |
30 | * | 36 | * |
@@ -79,16 +85,15 @@ public class UserService { | @@ -79,16 +85,15 @@ public class UserService { | ||
79 | * @return die Id des neuen Benutzers, wenn die Erstellung erfolgreich war. | 85 | * @return die Id des neuen Benutzers, wenn die Erstellung erfolgreich war. |
80 | */ | 86 | */ |
81 | public Long createUser(final UserDto dto) { | 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 | return null; | 98 | return null; |
94 | } | 99 | } |