package model.manager.exports; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.celllife.idart.misc.iDARTUtil; import model.manager.exports.columns.EpisodeDetailsEnum; public class EpisodeObject extends AbstractExportObject implements Cloneable { private EpisodeDetailsEnum columnEnum; private ArrayList<String> episodeDetails; private Date endDate; private Date startDate; public EpisodeObject() { super(); } public EpisodeObject(String title, Class dataType) { super(title, dataType); } public EpisodeObject(EpisodeDetailsEnum enu){ this(enu, null, null); } public EpisodeObject(EpisodeDetailsEnum enu, Date startDate, Date endDate) { super("Episode " + enu.heading, String.class); if (startDate != null) this.startDate = iDARTUtil.getBeginningOfDay(startDate); if (endDate != null) this.endDate = iDARTUtil.getEndOfDay(endDate); setColumnIndex(-1); setColumnWidth(20); this.columnEnum = enu; } @Override public Object getData(DataExportFunctions functions, int index) { initEpisodeDetails(); if (columnEnum != null) { List<Object> details = functions.getOldestEpisodeDetailsBetweenDates(episodeDetails, startDate, endDate); switch (columnEnum) { case startDate: return details.get(0); case startNotes: return details.get(1); case startReason: return details.get(2); case stopDate: return details.get(3); case stopNotes: return details.get(4); case stopReason: return details.get(5); default: return null; } } return null; } private void initEpisodeDetails() { if (episodeDetails == null) { episodeDetails = new ArrayList<String>(); EpisodeDetailsEnum[] values = EpisodeDetailsEnum.values(); for (EpisodeDetailsEnum ed : values) { episodeDetails.add(ed.template()); } } } }