001package edu.pdx.cs.joy.grader.poa; 002 003import com.google.common.eventbus.EventBus; 004import com.google.common.eventbus.Subscribe; 005import com.google.inject.Inject; 006import com.google.inject.Singleton; 007 008import java.time.LocalDateTime; 009import java.time.format.DateTimeFormatter; 010 011@Singleton 012public class POASubmissionPresenter { 013 private final POASubmissionView view; 014 private final EventBus bus; 015 016 @Inject 017 public POASubmissionPresenter(EventBus bus, POASubmissionView view) { 018 this.view = view; 019 020 bus.register(this); 021 this.bus = bus; 022 } 023 024 @Subscribe 025 public void displayPOASubmissionInformation(POASubmissionSelected event) { 026 POASubmission submission = event.getSubmission(); 027 028 this.view.setSubmissionSubject(submission.getSubject()); 029 this.view.setSubmissionSubmitter(submission.getSubmitter()); 030 this.view.setSubmissionTime(formatSubmissionTime(submission.getSubmitTime())); 031 String contentType = submission.getContentType(); 032 boolean isHtml = contentType.toLowerCase().contains("text/html"); 033 034 try { 035 this.view.setContent(submission.getContent(), isHtml ? POASubmissionView.POAContentType.HTML : POASubmissionView.POAContentType.TEXT); 036 037 } catch (POASubmissionView.CouldNotParseContent ex) { 038 this.bus.post(new UnhandledExceptionEvent(ex)); 039 } 040 } 041 042 static String formatSubmissionTime(LocalDateTime submitTime) { 043 return submitTime.format(DateTimeFormatter.ofPattern("E M/d/yyyy h:mm a")); 044 } 045}