package gov.nysenate.openleg.model.calendar;
import gov.nysenate.openleg.model.base.BaseLegislativeContent;
import gov.nysenate.openleg.model.base.SessionYear;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class CalendarActiveList extends BaseLegislativeContent
{
/** A sequence number that identifies this active list. */
private Integer sequenceNo;
/** Reference to the parent Calendar's id. */
private CalendarId calendarId;
/** Any notes pertaining to this active list. */
private String notes;
/** The calendar date associated with this supplemental. */
private LocalDate calDate;
/** The date time this active list was released. */
private LocalDateTime releaseDateTime;
/** Active list entries. */
private List<CalendarEntry> entries;
/** --- Constructors --- */
public CalendarActiveList() {
super();
this.setEntries(new ArrayList<>());
}
public CalendarActiveList(CalendarId calId, Integer sequenceNo, String notes, LocalDate calDate,
LocalDateTime releaseDateTime) {
this();
this.setCalendarId(calId);
this.setYear(calId.getYear());
this.setSession(new SessionYear(getYear()));
this.setSequenceNo(sequenceNo);
this.setNotes(notes);
this.setCalDate(calDate);
this.setReleaseDateTime(releaseDateTime);
}
/** --- Functional Getters/Setters --- */
public void addEntry(CalendarEntry entry) {
this.entries.add(entry);
}
/** --- Overrides --- */
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
final CalendarActiveList other = (CalendarActiveList) obj;
return Objects.equals(this.sequenceNo, other.sequenceNo) &&
Objects.equals(this.calendarId, other.calendarId) &&
Objects.equals(this.notes, other.notes) &&
Objects.equals(this.calDate, other.calDate) &&
Objects.equals(this.releaseDateTime, other.releaseDateTime) &&
Objects.equals(this.entries, other.entries);
}
@Override
public int hashCode() {
return Objects.hash(sequenceNo, calendarId, notes, calDate, releaseDateTime, entries);
}
/** --- Functional Getters/Setters --- */
public CalendarActiveListId getCalendarActiveListId() {
return new CalendarActiveListId(calendarId, sequenceNo);
}
/** --- Basic Getters/Setters --- */
public Integer getSequenceNo() {
return sequenceNo;
}
public void setSequenceNo(Integer sequenceNo) {
this.sequenceNo = sequenceNo;
}
public CalendarId getCalendarId() {
return calendarId;
}
public void setCalendarId(CalendarId calendarId) {
this.calendarId = calendarId;
}
public String getNotes() {
return notes;
}
public void setNotes(String notes) {
this.notes = notes;
}
public LocalDate getCalDate() {
return calDate;
}
public void setCalDate(LocalDate calDate) {
this.calDate = calDate;
}
public LocalDateTime getReleaseDateTime() {
return releaseDateTime;
}
public void setReleaseDateTime(LocalDateTime releaseDateTime) {
this.releaseDateTime = releaseDateTime;
}
public List<CalendarEntry> getEntries() {
return entries;
}
public void setEntries(List<CalendarEntry> entries) {
this.entries = entries;
}
}