package gov.nysenate.openleg.service.transcript.data; import com.google.common.eventbus.EventBus; import gov.nysenate.openleg.dao.base.LimitOffset; import gov.nysenate.openleg.dao.base.SortOrder; import gov.nysenate.openleg.dao.transcript.TranscriptDao; import gov.nysenate.openleg.model.transcript.Transcript; import gov.nysenate.openleg.model.transcript.TranscriptFile; import gov.nysenate.openleg.model.transcript.TranscriptId; import gov.nysenate.openleg.model.transcript.TranscriptNotFoundEx; import gov.nysenate.openleg.service.transcript.event.TranscriptUpdateEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.time.LocalDateTime; import java.util.List; @Service public class SqlTranscriptDataService implements TranscriptDataService { @Autowired private EventBus eventBus; @Autowired private TranscriptDao transcriptDao; @PostConstruct private void init() { eventBus.register(this); } /** {@inheritDoc} */ @Override public Transcript getTranscript(TranscriptId transcriptId) throws TranscriptNotFoundEx { if (transcriptId == null) { throw new IllegalArgumentException("TranscriptId cannot be null"); } try { return transcriptDao.getTranscript(transcriptId); } catch (DataAccessException ex) { throw new TranscriptNotFoundEx(transcriptId, ex); } } /** {@inheritDoc} */ @Override public List<TranscriptId> getTranscriptIds(SortOrder sortOrder, LimitOffset limitOffset) { return transcriptDao.getTranscriptIds(sortOrder, limitOffset); } /** {@inheritDoc} */ @Override public void saveTranscript(Transcript transcript, TranscriptFile transcriptFile, boolean postUpdateEvent) { if (transcript == null) { throw new IllegalArgumentException("transcript cannot be null"); } transcriptDao.updateTranscript(transcript, transcriptFile); if (postUpdateEvent) { eventBus.post(new TranscriptUpdateEvent(transcript, LocalDateTime.now())); } } }