diff --git a/src/main/java/nl/connectedit/swiss/domain/entity/Group.java b/src/main/java/nl/connectedit/swiss/domain/entity/Group.java index a00aeb8..6e0638c 100644 --- a/src/main/java/nl/connectedit/swiss/domain/entity/Group.java +++ b/src/main/java/nl/connectedit/swiss/domain/entity/Group.java @@ -33,12 +33,12 @@ public class Group extends AbstractEntity { @OrderBy("name") private List rounds; - @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY) @JoinTable( name = "eventgroup_teams", joinColumns = @JoinColumn(name = "group_id"), inverseJoinColumns = @JoinColumn(name = "teams_id") ) - private List teams; + private List teams = new ArrayList<>(); } diff --git a/src/main/java/nl/connectedit/swiss/domain/entity/Team.java b/src/main/java/nl/connectedit/swiss/domain/entity/Team.java index 674365a..f77e345 100644 --- a/src/main/java/nl/connectedit/swiss/domain/entity/Team.java +++ b/src/main/java/nl/connectedit/swiss/domain/entity/Team.java @@ -2,6 +2,7 @@ package nl.connectedit.swiss.domain.entity; import jakarta.annotation.Nullable; import jakarta.persistence.*; +import java.util.ArrayList; import java.util.List; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -19,7 +20,7 @@ public class Team extends AbstractEntity { private Long id; @ManyToMany(mappedBy = "teams", fetch = FetchType.LAZY) - private List groups; + private List groups = new ArrayList<>(); @ManyToOne private Player player1; diff --git a/src/main/java/nl/connectedit/swiss/service/TournamentDivideService.java b/src/main/java/nl/connectedit/swiss/service/TournamentDivideService.java index fd5d9b4..8bd6aab 100644 --- a/src/main/java/nl/connectedit/swiss/service/TournamentDivideService.java +++ b/src/main/java/nl/connectedit/swiss/service/TournamentDivideService.java @@ -1,9 +1,5 @@ package nl.connectedit.swiss.service; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JSR310Module; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import jakarta.transaction.Transactional; import java.util.ArrayList; import java.util.Comparator; @@ -49,19 +45,8 @@ public class TournamentDivideService { tournament.setStatus(TournamentStatus.DIVIDED); -// var mapper = new ObjectMapper(); -// mapper.registerModule(new JavaTimeModule()); -// try { -// log.info(mapper.writeValueAsString(tournament)); -// } catch (JsonProcessingException e) { -// throw new RuntimeException(e); -// } tournamentRepository.save(tournament); -// try { -// log.info(mapper.writeValueAsString(tournament)); -// } catch (JsonProcessingException e) { -// throw new RuntimeException(e); -// } + return tournament; } @@ -111,7 +96,8 @@ public class TournamentDivideService { group.setTeams(new ArrayList<>()); log.info("getGroup: aantal registrations = " + registrations.size()); for (var registration : registrations) { - group.getTeams().add(getTeam(registration, group)); +// group.getTeams().add(getTeam(registration, group)); + addTeamToGroup(registration, group); log.info("in getGroup-loop; groepgrootte = " + group.getTeams().size()); } @@ -119,6 +105,8 @@ public class TournamentDivideService { } private List getGroups(List orgRegistrations, EventType type) { + var groups = new ArrayList(); + var registrations = new ArrayList<>(orgRegistrations); var group1 = new Group(); @@ -161,18 +149,28 @@ public class TournamentDivideService { group2.getTeams().removeLast(); } - return List.of(group1, group2); + groups.add(group1); + groups.add(group2); + return groups; } private Team getTeam(Registration registration, Group group) { var team = new Team(); team.setPlayer1(registration.getPlayer()); team.setPlayer2(registration.getPartner()); - team.setGroups(List.of(group)); + team.getGroups().add(group); return team; } + private void addTeamToGroup(Registration registration, Group group) { + var team = new Team(); + team.setPlayer1(registration.getPlayer()); + team.setPlayer2(registration.getPartner()); + team.getGroups().add(group); + group.getTeams().add(team); + } + public Tournament clear(Tournament tournament) { for (var event : tournament.getEvents()) { event.getGroups().clear();