mirror of
https://github.com/PaulReichmuth/timekeep-backend.git
synced 2025-12-22 14:41:57 +00:00
refactor passedStations and members to be of type List instead of Map, as a key is not needed
This commit is contained in:
@@ -4,8 +4,8 @@ import jakarta.persistence.*;
|
||||
import lombok.*;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
||||
@Entity
|
||||
@@ -25,31 +25,31 @@ public class Team {
|
||||
private List<Racer> members;
|
||||
|
||||
@OneToMany(cascade = CascadeType.ALL)
|
||||
private Map<String, Station> passedStations;
|
||||
private List<Station> passedStations;
|
||||
|
||||
public Team(){
|
||||
this.teamName = null;
|
||||
this.firstSemesterTeam = true;
|
||||
this.members = new HashMap<>(4);
|
||||
this.passedStations = new HashMap<>();
|
||||
this.members = new ArrayList<>(4);
|
||||
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.firstSemesterTeam = firstSemesterTeam;
|
||||
this.members = new HashMap<>(members.size());
|
||||
this.members.putAll(members);
|
||||
this.passedStations = new HashMap<>(passedStations.size());
|
||||
this.passedStations.putAll(passedStations);
|
||||
this.members = new ArrayList<>(members.size());
|
||||
this.members.addAll(members);
|
||||
this.passedStations = new ArrayList<>(passedStations.size());
|
||||
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
|
||||
*/
|
||||
private void checkFirstSemesterTeam(){
|
||||
long erstiCount = members.entrySet().stream()
|
||||
long erstiCount = members.stream()
|
||||
.filter(
|
||||
e -> e.getValue().getIsFirstSemester()
|
||||
Racer::getIsFirstSemester
|
||||
).count();
|
||||
double percentFirstSemester = erstiCount /(double)members.size();
|
||||
this.firstSemesterTeam = percentFirstSemester >= 0.5;
|
||||
@@ -60,7 +60,8 @@ public class Team {
|
||||
* @param newMember the Racer object to be added to the team
|
||||
*/
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -70,11 +71,9 @@ public class Team {
|
||||
* @param lastName the last name of the racer to be removed
|
||||
*/
|
||||
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();
|
||||
}
|
||||
|
||||
private String generateMapKeyFromName(String firstName, String lastName){
|
||||
return String.format("%s, %s", firstName, lastName);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user