Commit c30f50bddca22bf143121b7ff1d02d4ef476c19e

Authored by Thomas Ziemer
1 parent 33e38bd1

improvement: Context und Mapper eingebunden (WIP)

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 }
... ...