[ARQUITECTURE] Melhoria dos updates e conversões de Entidade e DTO
Estudar Design Patterns que podem nos auxiliar a melhorar o update de dados e conversões que são feito nos Services
Um exemplo é o ModdelMapper, que transforma DTO para Entidade e Entidade para DTO, mas tem que ver como implementar
isso é para não precisar usar os seguintes métodos:
@Transactional
public Atlete update(Long id, Atlete updated, AtleteRepository atleteRepository) {
Atlete saved = atleteRepository.findByidAtlete(id);
if (updated.getAtleteName() != null && !updated.getAtleteName().equals(saved.getAtleteName())) {
saved.setAtleteName(updated.getAtleteName());
}
if (updated.getDateBirth() != null && !updated.getDateBirth().equals(saved.getDateBirth())) {
saved.setDateBirth(updated.getDateBirth());
}
if (updated.getAtleteHeight() != null && !updated.getAtleteHeight().equals(saved.getAtleteHeight())) {
saved.setAtleteHeight(updated.getAtleteHeight());
}
if (updated.getAtleteWeight() != null && !updated.getAtleteWeight().equals(saved.getAtleteWeight())) {
saved.setAtleteWeight(updated.getAtleteWeight());
}
if (updated.getAtleteImc() != null && !updated.getAtleteImc().equals(saved.getAtleteImc())) {
saved.setAtleteImc(updated.getAtleteImc());
}
if (updated.getAtleteBid() != null && !updated.getAtleteBid().equals(saved.getAtleteBid())) {
saved.setAtleteBid(updated.getAtleteBid());
}
if (updated.getDominantLeg() != null && !updated.getDominantLeg().equals(saved.getDominantLeg())) {
saved.setDominantLeg(updated.getDominantLeg());
}
if (updated.getPosition() != null && !updated.getPosition().equals(saved.getPosition())) {
saved.setPosition(updated.getPosition());
}
if (updated.getContact() != null && !updated.getContact().equals(saved.getContact())) {
saved.setContact(contactService.update(updated.getContact().getId(), updated.getContact(), contactRepository));
}
if (updated.getAdress() != null && !updated.getAdress().equals(saved.getAdress())) {
saved.setAdress(adressService.update(updated.getAdress().getId(), updated.getAdress(), adressRepository));
}
if (updated.getAtleteClubs() != null && !updated.getAtleteClubs().isEmpty()) {
for (AtleteClub atleteClub : updated.getAtleteClubs()) {
atleteClubService.update(atleteClub.getId(), atleteClub,atleteClubRepository);
}
}
if (updated.getDeceases() != null && !updated.getDeceases().equals(saved.getDeceases())) {
saved.setDeceases(updated.getDeceases());
}
return saved;
}
e
public List<AtleteDTO> convertList(List<Atlete> atletes) {
return atletes.stream().map(AtleteDTO::new).collect(Collectors.toList());
}
public AtleteDTO convertObject(Atlete atlete){
return new AtleteDTO(atlete);
}
public List<Atlete> desconvertList(List<AtleteDTO> atleteDTOS) {
return atleteDTOS.stream().map(Atlete::new).collect(Collectors.toList());
}
public Atlete desconvertObject(AtleteDTO atleteDTO) {
return new Atlete(atleteDTO);
}