package gov.nysenate.openleg.service.spotcheck.agenda; import gov.nysenate.openleg.service.spotcheck.base.CheckMailService; import gov.nysenate.openleg.service.spotcheck.base.SimpleCheckMailService; import org.springframework.stereotype.Service; import javax.mail.Message; import javax.mail.MessagingException; import java.io.File; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.regex.Matcher; import java.util.regex.Pattern; @Service public class AgendaAlertCheckMailService extends SimpleCheckMailService implements CheckMailService { protected static final Pattern agendaAlertSubjectPattern = Pattern.compile("^Senate\\s+Agenda\\s+for\\s+week\\s+of\\s+(\\d{2}/\\d{2}/\\d{4})$"); @Override public int checkMail() { return checkMail(agendaAlertSubjectPattern); } @Override protected String getCheckMailType() { return "full agenda"; } @Override protected File getSaveFile(Message message) throws MessagingException { Matcher subjectMatcher = agendaAlertSubjectPattern.matcher(message.getSubject()); if (subjectMatcher.matches()) { LocalDate weekOf = LocalDate.parse(subjectMatcher.group(1), DateTimeFormatter.ofPattern("MM/dd/yyyy")); String filename = String.format("agenda_alert-%s-full-%s.html", weekOf.format(DateTimeFormatter.BASIC_ISO_DATE), getSentDateString(message)); return new File(new File(environment.getStagingDir(), "alerts"), filename); } throw new IllegalArgumentException(); } }