package gov.nysenate.openleg.client.view.calendar; import gov.nysenate.openleg.client.view.base.MapView; import gov.nysenate.openleg.model.base.Version; import gov.nysenate.openleg.model.calendar.Calendar; import java.time.LocalDate; import java.util.TreeMap; import java.util.stream.Collectors; /** A calendar view with a minimum of information */ public class SimpleCalendarView extends CalendarIdView { protected SimpleCalendarSupView floorCalendar; protected MapView<String, SimpleCalendarSupView> supplementalCalendars; protected MapView<Integer, SimpleActiveListView> activeLists; private LocalDate calDate; public SimpleCalendarView(Calendar calendar) { super(calendar != null ? calendar.getId() : null); if (calendar != null) { if (calendar.getSupplemental(Version.DEFAULT) != null) { this.floorCalendar = new SimpleCalendarSupView(calendar.getSupplemental(Version.DEFAULT)); } this.supplementalCalendars = MapView.of( calendar.getSupplementalMap().values().stream() .filter((calSup) -> !calSup.getVersion().equals(Version.DEFAULT)) .map(SimpleCalendarSupView::new) .collect(Collectors.toMap(SimpleCalendarSupView::getVersion, scsv -> scsv, (a, b) -> b, TreeMap::new)) ); this.activeLists = MapView.of( calendar.getActiveListMap().values().stream() .map(SimpleActiveListView::new) .collect(Collectors.toMap(SimpleActiveListView::getSequenceNumber, salv -> salv, (a, b) -> b, TreeMap::new)) ); this.calDate = calendar.getCalDate(); } } public SimpleCalendarSupView getFloorCalendar() { return floorCalendar; } public MapView<String, SimpleCalendarSupView> getSupplementalCalendars() { return supplementalCalendars; } public MapView<Integer, SimpleActiveListView> getActiveLists() { return activeLists; } public LocalDate getCalDate() { return calDate; } @Override public String getViewType() { return "calendar-simple"; } }