From 7fde0c79d2857b36d59976074f2bf25735581390 Mon Sep 17 00:00:00 2001 From: Laurent <58115082+naaturel@users.noreply.github.com> Date: Sun, 16 Mar 2025 11:06:30 +0100 Subject: [PATCH] Internalize creation logic of database entities --- .../letsmeet/controllers/EventController.java | 4 +- .../letsmeet/dto/database/EventEntity.java | 12 ++---- .../factories/DatabasePropsFactory.java | 40 +++++++++++++++++++ .../mappers/database/EventDateMapper.java | 5 +-- .../mappers/database/EventMapper.java | 11 +---- .../mappers/database/ParticipantMapper.java | 6 ++- .../letsmeet/services/EventService.java | 1 - 7 files changed, 54 insertions(+), 25 deletions(-) create mode 100644 back/src/main/java/be/naaturel/letsmeet/dto/database/factories/DatabasePropsFactory.java diff --git a/back/src/main/java/be/naaturel/letsmeet/controllers/EventController.java b/back/src/main/java/be/naaturel/letsmeet/controllers/EventController.java index 24b579f..cd6eae5 100644 --- a/back/src/main/java/be/naaturel/letsmeet/controllers/EventController.java +++ b/back/src/main/java/be/naaturel/letsmeet/controllers/EventController.java @@ -25,7 +25,9 @@ public class EventController { try{ service.save(dto); } catch (Exception e){ - return ResponseEntity.internalServerError().build(); + return ResponseEntity + .internalServerError() + .build(); } return ResponseEntity.ok().build(); diff --git a/back/src/main/java/be/naaturel/letsmeet/dto/database/EventEntity.java b/back/src/main/java/be/naaturel/letsmeet/dto/database/EventEntity.java index 33be690..f04f3da 100644 --- a/back/src/main/java/be/naaturel/letsmeet/dto/database/EventEntity.java +++ b/back/src/main/java/be/naaturel/letsmeet/dto/database/EventEntity.java @@ -24,25 +24,19 @@ public class EventEntity { @OneToMany(targetEntity=ParticipantEntity.class, cascade=CascadeType.ALL, mappedBy="event") public Set participants; - public void prepareForSave(){ - linkDates(); - linkParticipants(); - removeDuplicatedDates(); - } - - private void linkDates(){ + public void linkDates(){ for (EventDateEntity date : this.dates) { date.event = this; } } - private void linkParticipants(){ + public void linkParticipants(){ for (ParticipantEntity participant : this.participants) { participant.event = this; } } - private void removeDuplicatedDates(){ + public void removeDuplicatedDates(){ for (EventDateEntity ede: dates) { for (ParticipantEntity pe : participants) { diff --git a/back/src/main/java/be/naaturel/letsmeet/dto/database/factories/DatabasePropsFactory.java b/back/src/main/java/be/naaturel/letsmeet/dto/database/factories/DatabasePropsFactory.java new file mode 100644 index 0000000..aadbb28 --- /dev/null +++ b/back/src/main/java/be/naaturel/letsmeet/dto/database/factories/DatabasePropsFactory.java @@ -0,0 +1,40 @@ +package be.naaturel.letsmeet.dto.database.factories; + +import be.naaturel.letsmeet.dto.database.EventDateEntity; +import be.naaturel.letsmeet.dto.database.EventEntity; +import be.naaturel.letsmeet.dto.database.ParticipantEntity; + +import java.util.HashSet; +import java.util.Set; + +public class DatabasePropsFactory { + + public static EventEntity createEvent(String name, Set participants){ + + EventEntity entity = new EventEntity(); + entity.name = name; + entity.participants = participants; + entity.dates = new HashSet<>(); + for (ParticipantEntity pe : entity.participants) { + entity.dates.addAll(pe.dates); + } + entity.linkDates(); + entity.linkParticipants(); + entity.removeDuplicatedDates(); + return entity; + } + + public static ParticipantEntity createParticipant(String name, Set dates){ + ParticipantEntity entity = new ParticipantEntity(); + entity.name = name; + entity.dates = dates; + return entity; + } + + public static EventDateEntity createDate(long timestamp){ + EventDateEntity entity = new EventDateEntity(); + entity.timeStamp = timestamp; + return entity; + } + +} diff --git a/back/src/main/java/be/naaturel/letsmeet/mappers/database/EventDateMapper.java b/back/src/main/java/be/naaturel/letsmeet/mappers/database/EventDateMapper.java index bd0213d..dd88d26 100644 --- a/back/src/main/java/be/naaturel/letsmeet/mappers/database/EventDateMapper.java +++ b/back/src/main/java/be/naaturel/letsmeet/mappers/database/EventDateMapper.java @@ -1,6 +1,7 @@ package be.naaturel.letsmeet.mappers.database; import be.naaturel.letsmeet.dto.database.EventDateEntity; +import be.naaturel.letsmeet.dto.database.factories.DatabasePropsFactory; import be.naaturel.letsmeet.mappers.Mapper; import be.naaturel.letsmeet.models.EventDate; @@ -12,9 +13,7 @@ public class EventDateMapper implements Mapper { @Override public EventDateEntity toEntity(EventDate d) { - EventDateEntity de = new EventDateEntity(); - de.timeStamp = d.getTimeStamp(); - return de; + return DatabasePropsFactory.createDate(d.getTimeStamp()); } @Override diff --git a/back/src/main/java/be/naaturel/letsmeet/mappers/database/EventMapper.java b/back/src/main/java/be/naaturel/letsmeet/mappers/database/EventMapper.java index 7c65186..8e7a2d4 100644 --- a/back/src/main/java/be/naaturel/letsmeet/mappers/database/EventMapper.java +++ b/back/src/main/java/be/naaturel/letsmeet/mappers/database/EventMapper.java @@ -2,6 +2,7 @@ package be.naaturel.letsmeet.mappers.database; import be.naaturel.letsmeet.dto.database.EventEntity; import be.naaturel.letsmeet.dto.database.ParticipantEntity; +import be.naaturel.letsmeet.dto.database.factories.DatabasePropsFactory; import be.naaturel.letsmeet.mappers.Mapper; import be.naaturel.letsmeet.models.Event; import be.naaturel.letsmeet.models.Participant; @@ -19,15 +20,7 @@ public class EventMapper implements Mapper { @Override public EventEntity toEntity(Event event) { - EventEntity eventEntity = new EventEntity(); - eventEntity.name = event.getName(); - eventEntity.participants = participantMapper.toEntities(event.getParticipants(), HashSet::new); - - eventEntity.dates = new HashSet<>(); - for (ParticipantEntity pe : eventEntity.participants) { - eventEntity.dates.addAll(pe.dates); - } - return eventEntity; + return DatabasePropsFactory.createEvent(event.getName(), participantMapper.toEntities(event.getParticipants(), HashSet::new)); } @Override diff --git a/back/src/main/java/be/naaturel/letsmeet/mappers/database/ParticipantMapper.java b/back/src/main/java/be/naaturel/letsmeet/mappers/database/ParticipantMapper.java index dbeb7c7..7e5b1d5 100644 --- a/back/src/main/java/be/naaturel/letsmeet/mappers/database/ParticipantMapper.java +++ b/back/src/main/java/be/naaturel/letsmeet/mappers/database/ParticipantMapper.java @@ -2,6 +2,7 @@ package be.naaturel.letsmeet.mappers.database; import be.naaturel.letsmeet.dto.database.EventDateEntity; import be.naaturel.letsmeet.dto.database.ParticipantEntity; +import be.naaturel.letsmeet.dto.database.factories.DatabasePropsFactory; import be.naaturel.letsmeet.mappers.Mapper; import be.naaturel.letsmeet.models.EventDate; import be.naaturel.letsmeet.models.Participant; @@ -21,10 +22,11 @@ public class ParticipantMapper implements Mapper @Override public ParticipantEntity toEntity(Participant d) { - ParticipantEntity pe = new ParticipantEntity(); + return DatabasePropsFactory.createParticipant(d.getName(), dateMapper.toEntities(d.getDates(), HashSet::new)); + /*ParticipantEntity pe = new ParticipantEntity(); pe.name = d.getName(); pe.dates = dateMapper.toEntities(d.getDates(), HashSet::new); - return pe; + return pe;*/ } @Override diff --git a/back/src/main/java/be/naaturel/letsmeet/services/EventService.java b/back/src/main/java/be/naaturel/letsmeet/services/EventService.java index 9e14a3e..696531c 100644 --- a/back/src/main/java/be/naaturel/letsmeet/services/EventService.java +++ b/back/src/main/java/be/naaturel/letsmeet/services/EventService.java @@ -23,7 +23,6 @@ public class EventService extends AbstractService public boolean save(EventDTO dto) { Event event = this.requestMapper.toModel(dto); EventEntity entity = this.dataBaseMapper.toEntity(event); - entity.prepareForSave(); try{ this.repo.save(entity); return true;