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 gov.nysenate.openleg.service.bill.data.BillDataService; import java.time.LocalDate; import java.util.TreeMap; import java.util.function.Function; import java.util.stream.Collectors; public class CalendarView extends CalendarIdView { protected CalendarSupView floorCalendar; protected MapView<String, CalendarSupView> supplementalCalendars; protected MapView<Integer, ActiveListView> activeLists; protected LocalDate calDate; public CalendarView(Calendar calendar, BillDataService billDataService) { super(calendar !=null ? calendar.getId() : null); if (calendar != null) { if (calendar.getSupplemental(Version.DEFAULT) != null) { this.floorCalendar = new CalendarSupView(calendar.getSupplemental(Version.DEFAULT), billDataService); } this.supplementalCalendars = MapView.of( calendar.getSupplementalMap().values().stream() .filter((calSup) -> !calSup.getVersion().equals(Version.DEFAULT)) .map(calSup -> new CalendarSupView(calSup, billDataService)) .collect(Collectors.toMap(SimpleCalendarSupView::getVersion, Function.identity(), (a, b) -> b, TreeMap::new)) ); this.activeLists = MapView.of( calendar.getActiveListMap().values().stream() .map(activeList -> new ActiveListView(activeList, billDataService)) .collect(Collectors.toMap(ActiveListView::getSequenceNumber, Function.identity(), (a, b) -> b, TreeMap::new)) ); calDate = calendar.getCalDate(); } } public CalendarSupView getFloorCalendar() { return floorCalendar; } public MapView<String, CalendarSupView> getSupplementalCalendars() { return supplementalCalendars; } public MapView<Integer, ActiveListView> getActiveLists() { return activeLists; } public LocalDate getCalDate() { return calDate; } @Override public String getViewType() { return "calendar"; } }