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