holy ravioli

This commit is contained in:
Laurent
2025-03-20 17:36:46 +01:00
parent fd7bdace3b
commit 609ef2b705
28 changed files with 245 additions and 93 deletions

View File

@@ -5,7 +5,4 @@ import java.util.Set;
public class AttendeeDTO {
public String name;
public Set<EventDateDTO> dates;
}

View File

@@ -1,10 +1,11 @@
package be.naaturel.letsmeet.dto.httpRequest;
import java.util.Map;
import java.util.Set;
public class EventDTO {
public String name;
public Set<AttendeeDTO> attendees;
public Map<String, Set<AttendeeDTO>> dates;
}

View File

@@ -22,13 +22,12 @@ public class AttendeeDTOMapper implements Mapper<Attendee, AttendeeDTO> {
public AttendeeDTO toEntity(Attendee d) {
AttendeeDTO dto = new AttendeeDTO();
dto.name = d.getName();
dto.dates = dateMapper.toEntities(d.getDates(), HashSet::new);
return dto;
}
@Override
public Attendee toModel(AttendeeDTO d) {
return new Attendee(d.name, dateMapper.toModels(d.dates, HashSet::new));
return null;
}
@Override

View File

@@ -1,30 +1,58 @@
package be.naaturel.letsmeet.mappers.requests;
import be.naaturel.letsmeet.core.models.EventDate;
import be.naaturel.letsmeet.dto.httpRequest.EventDTO;
import be.naaturel.letsmeet.dto.httpRequest.AttendeeDTO;
import be.naaturel.letsmeet.dto.httpRequest.EventDateDTO;
import be.naaturel.letsmeet.mappers.Mapper;
import be.naaturel.letsmeet.core.models.Event;
import be.naaturel.letsmeet.core.models.Attendee;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Supplier;
public class EventDTOMapper implements Mapper<Event, EventDTO> {
private final Mapper<Attendee, AttendeeDTO> attendeeMapper = new AttendeeDTOMapper();
private final Mapper<EventDate, EventDateDTO> dateMapper = new EventDateDTOMapper();
@Override
public EventDTO toEntity(Event event) {
EventDTO eventDTO = new EventDTO();
eventDTO.name = event.getName();
eventDTO.attendees = attendeeMapper.toEntities(event.getAttendees(), HashSet::new);
//eventDTO.dates = attendeeMapper.toEntities(event.getAttendees(), HashSet::new);
//TODO : MUST BE CLEANED
eventDTO.dates = new HashMap<>();
event.getAttendees().forEach(a -> {
a.getDates().forEach(d -> {
EventDateDTO dtoD = dateMapper.toEntity(d);
AttendeeDTO dtoA = attendeeMapper.toEntity(a);
String key = String.valueOf(d.getTimeStamp());
if(eventDTO.dates.containsKey(key)){
eventDTO.dates.get(key).add(dtoA);
} else {
Set<AttendeeDTO> s = new HashSet<>();
s.add(dtoA);
eventDTO.dates.put(key, s);
}
});
});
return eventDTO;
}
@Override
public Event toModel(EventDTO dto) {
return new Event(dto.name, attendeeMapper.toModels(dto.attendees, HashSet::new));
//return new Event(dto.name, attendeeMapper.toModels(dto.dates, HashSet::new));
Set<Attendee> set = new HashSet<>();
for (String key : dto.dates.keySet()) {
set.addAll(attendeeMapper.toModels(dto.dates.get(key), HashSet::new));
}
return new Event(dto.name, set);
}
@Override

View File

@@ -1,6 +1,7 @@
package be.naaturel.letsmeet.mappers;
import be.naaturel.letsmeet.dto.database.EventDateEntity;
import be.naaturel.letsmeet.mappers.Mapper;
import be.naaturel.letsmeet.mappers.database.EventDateMapper;
import be.naaturel.letsmeet.core.models.EventDate;
import org.junit.jupiter.api.BeforeAll;

View File

@@ -0,0 +1,56 @@
package be.naaturel.letsmeet.mappers.dto;
import be.naaturel.letsmeet.core.models.Event;
import be.naaturel.letsmeet.dto.httpRequest.EventDTO;
import be.naaturel.letsmeet.mappers.Mapper;
import be.naaturel.letsmeet.mappers.requests.EventDTOMapper;
import be.naaturel.letsmeet.mock.dto.MockEventDTO;
import be.naaturel.letsmeet.mock.models.MockEventModel;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class EventDTOMapperTest {
private static MockEventDTO mockDto;
private static MockEventModel mockModel;
private static Mapper<Event, EventDTO> mapper;
@BeforeAll
static void setup(){
mockDto = new MockEventDTO();
mockModel = new MockEventModel();
mapper = new EventDTOMapper();
}
@Test
void single_dto_to_model_test(){
Event res = mapper.toModel(mockDto);
assertEquals(res.getName(), mockDto.name);
}
@Test
void single_model_to_dto_test(){
EventDTO res = mapper.toEntity(mockModel);
assertEquals(res.name, mockModel.getName());
}
@Test
void multiple_dto_to_models_test(){
List<Event> res = mapper.toModels(Set.of(mockDto), ArrayList::new);
assertEquals(res.size(), 1);
assertEquals(res.getFirst().getName(), mockDto.name);
}
@Test
void mulitple_models_to_dto_test(){
List<EventDTO> res = mapper.toEntities(Set.of(mockModel), ArrayList::new);
assertEquals(res.size(), 1);
assertEquals(res.getFirst().name, mockModel.getName());
}
}

View File

@@ -0,0 +1,11 @@
package be.naaturel.letsmeet.mock.dto;
import be.naaturel.letsmeet.dto.httpRequest.AttendeeDTO;
public class MockAttendeeDTO extends AttendeeDTO {
public MockAttendeeDTO(){
}
}

View File

@@ -0,0 +1,24 @@
package be.naaturel.letsmeet.mock.dto;
import be.naaturel.letsmeet.core.models.Attendee;
import be.naaturel.letsmeet.dto.httpRequest.AttendeeDTO;
import be.naaturel.letsmeet.dto.httpRequest.EventDTO;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
public class MockEventDTO extends EventDTO {
public MockEventDTO() {
this.name = "Mocked event";
this.dates = new HashMap<>();
populate(0, new HashSet<>());
populate(1, new HashSet<>());
populate(2, new HashSet<>());
}
private void populate(long timestamp, Set<AttendeeDTO> attendees){
this.dates.put(String.valueOf(timestamp), attendees);
}
}

View File

@@ -0,0 +1,11 @@
package be.naaturel.letsmeet.mock.jpa;
import be.naaturel.letsmeet.dto.database.EventEntity;
public class MockEventEntity extends EventEntity {
public MockEventEntity(){
}
}

View File

@@ -0,0 +1,13 @@
package be.naaturel.letsmeet.mock.models;
import be.naaturel.letsmeet.core.models.Attendee;
import be.naaturel.letsmeet.core.models.Event;
import java.util.HashSet;
import java.util.Set;
public class MockEventModel extends Event {
public MockEventModel() {
super("Mock event model", new HashSet<>());
}
}