package edu.pdx.cs410J.grader.poa;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Inject;
import edu.pdx.cs410J.grader.Assignment;
import edu.pdx.cs410J.grader.GradeBook;
import edu.pdx.cs410J.grader.Student;
import java.io.File;
public class GradeBookPresenter {
private final GradeBookView view;
private final EventBus bus;
private GradeBook gradeBook;
@Inject
public GradeBookPresenter(EventBus bus, GradeBookView view) {
this.bus = bus;
this.view = view;
bus.register(this);
view.addGradeBookFileListener(this::publishLoadGradeBookEvent);
view.addSaveGradeBookListener(this::publishSaveGradeBookEvent);
}
private void publishSaveGradeBookEvent() {
this.bus.post(new SaveGradeBook(this.gradeBook));
}
private void publishLoadGradeBookEvent(File file) {
this.bus.post(new LoadGradeBook(file));
}
@Subscribe
public void noteGradeBook(GradeBookLoaded event) {
gradeBook = event.getGradeBook();
this.view.setGradeBookName(gradeBook.getClassName());
this.view.canSaveGradeBook(false);
}
@Subscribe
public void recordGradeInGradeBook(RecordGradeEvent event) {
Student student = event.getStudent();
Assignment assignment = event.getAssignment();
student.setGrade(assignment, event.getScore());
if (event.isLate()) {
student.addLate(assignment);
}
this.view.canSaveGradeBook(true);
}
}