package de.avalax.fitbuddy.domain.model.exercise; import java.util.ArrayList; import java.util.List; import de.avalax.fitbuddy.domain.model.set.BasicSets; import de.avalax.fitbuddy.domain.model.set.Set; import de.avalax.fitbuddy.domain.model.set.SetException; import de.avalax.fitbuddy.domain.model.set.Sets; public class BasicExercise implements Exercise { private final BasicSets sets; private String name; private ExerciseId exerciseId; public BasicExercise() { this.name = ""; this.sets = new BasicSets(new ArrayList<Set>()); } public BasicExercise(ExerciseId exerciseId, String name, List<Set> sets) { this.exerciseId = exerciseId; this.name = name; this.sets = new BasicSets(sets); } @Override public String getName() { return name; } @Override public double getProgress() throws SetException { if (sets.size() == 0) { return 0; } Set set = sets.get(sets.indexOfCurrentSet()); double repsProgress = set.getProgress() / sets.size(); double setsProgress = (sets.indexOfCurrentSet()) / (double) sets.size(); return setsProgress + repsProgress; } @Override public void setExerciseId(ExerciseId exerciseId) { this.exerciseId = exerciseId; } @Override public ExerciseId getExerciseId() { return exerciseId; } @Override public void setName(String name) { if (name == null) { this.name = ""; } else { this.name = name.trim(); } } @Override public Sets getSets() { return sets; } @Override public boolean equals(Object o) { if (exerciseId == null) { return super.equals(o); } return o instanceof Exercise && exerciseId.equals(((Exercise) o).getExerciseId()); } @Override public int hashCode() { if (exerciseId == null) { return super.hashCode(); } return exerciseId.hashCode(); } @Override public String toString() { if (exerciseId == null) { return "BasicExercise [name=" + name + "]"; } return "BasicExercise [name=" + name + ", exerciseId=" + exerciseId.toString() + "]"; } }