refactor passedStations and members to be of type List instead of Map, as a key is not needed

This commit is contained in:
2025-12-18 15:33:44 +01:00
parent b5033f6ce2
commit 7f6f6c8ea8

View File

@@ -4,8 +4,8 @@ import jakarta.persistence.*;
import lombok.*; import lombok.*;
import java.util.HashMap; import java.util.List;
import java.util.Map; import java.util.ArrayList;
import java.util.UUID; import java.util.UUID;
@Entity @Entity
@@ -25,31 +25,31 @@ public class Team {
private List<Racer> members; private List<Racer> members;
@OneToMany(cascade = CascadeType.ALL) @OneToMany(cascade = CascadeType.ALL)
private Map<String, Station> passedStations; private List<Station> passedStations;
public Team(){ public Team(){
this.teamName = null; this.teamName = null;
this.firstSemesterTeam = true; this.firstSemesterTeam = true;
this.members = new HashMap<>(4); this.members = new ArrayList<>(4);
this.passedStations = new HashMap<>(); this.passedStations = new ArrayList<>();
} }
public Team(String teamName, boolean firstSemesterTeam, Map<String, Racer> members, Map<String, Station> passedStations){ public Team(String teamName, boolean firstSemesterTeam, List<Racer> members, List<Station> passedStations){
this.teamName = teamName; this.teamName = teamName;
this.firstSemesterTeam = firstSemesterTeam; this.firstSemesterTeam = firstSemesterTeam;
this.members = new HashMap<>(members.size()); this.members = new ArrayList<>(members.size());
this.members.putAll(members); this.members.addAll(members);
this.passedStations = new HashMap<>(passedStations.size()); this.passedStations = new ArrayList<>(passedStations.size());
this.passedStations.putAll(passedStations); this.passedStations.addAll(passedStations);
} }
/** /**
* Treat this team as a team of first semester students, if at least 50% of its members are in the first semester * Treat this team as a team of first semester students, if at least 50% of its members are in the first semester
*/ */
private void checkFirstSemesterTeam(){ private void checkFirstSemesterTeam(){
long erstiCount = members.entrySet().stream() long erstiCount = members.stream()
.filter( .filter(
e -> e.getValue().getIsFirstSemester() Racer::getIsFirstSemester
).count(); ).count();
double percentFirstSemester = erstiCount /(double)members.size(); double percentFirstSemester = erstiCount /(double)members.size();
this.firstSemesterTeam = percentFirstSemester >= 0.5; this.firstSemesterTeam = percentFirstSemester >= 0.5;
@@ -60,7 +60,8 @@ public class Team {
* @param newMember the Racer object to be added to the team * @param newMember the Racer object to be added to the team
*/ */
public void addMember(Racer newMember){ public void addMember(Racer newMember){
this.members.put(String.format("%s, %s", newMember.getLastName(), newMember.getFirstName()), newMember ); this.members.add(newMember);
newMember.setMemberTeam(this);
this.checkFirstSemesterTeam(); this.checkFirstSemesterTeam();
} }
@@ -70,11 +71,9 @@ public class Team {
* @param lastName the last name of the racer to be removed * @param lastName the last name of the racer to be removed
*/ */
public void removeMember(String firstName, String lastName){ public void removeMember(String firstName, String lastName){
this.members.remove(this.generateMapKeyFromName(firstName, lastName)); this.members.forEach(racer ->{
if(firstName.equals(racer.getFirstName()) && lastName.equals(racer.getLastName())) members.remove(racer);
});
this.checkFirstSemesterTeam(); this.checkFirstSemesterTeam();
} }
private String generateMapKeyFromName(String firstName, String lastName){
return String.format("%s, %s", firstName, lastName);
}
} }