package de.avalax.fitbuddy.domain.model.exercise; import java.util.Iterator; import java.util.List; public class BasicExercises implements Exercises { private int exerciseIndex; private List<Exercise> exercises; public BasicExercises(List<Exercise> exercises) { this.exercises = exercises; } @Override public void delete(Exercise exercise) { exercises.remove(exercise); } @Override public Exercise get(int index) throws ExerciseException { if (exercises.size() <= index || index < 0) { throw new ExerciseException(); } return exercises.get(index); } @Override public Exercise createExercise() { Exercise exercise = new BasicExercise(); exercises.add(exercise); return exercise; } @Override public void setCurrentExercise(int index) throws ExerciseException { if (exercises.size() <= index || index < 0) { throw new ExerciseException(); } exerciseIndex = index; } @Override public int indexOfCurrentExercise() throws ExerciseException { if (exercises.isEmpty()) { throw new ExerciseException(); } return exerciseIndex; } @Override public boolean moveExerciseAtPositionUp(int index) throws ExerciseException { if (index == 0) { return false; } Exercise exercise = get(index); delete(exercise); exercises.add(index - 1, exercise); return true; } @Override public boolean moveExerciseAtPositionDown(int index) throws ExerciseException { if (index + 1 == size()) { return false; } Exercise exercise = get(index); delete(exercise); exercises.add(index + 1, exercise); return true; } @Override public int size() { return exercises.size(); } @Override public Iterator<Exercise> iterator() { return exercises.iterator(); } @Override public String toString() { return "BasicExercises [exercises=" + exercises + "]"; } }