package gov.nysenate.openleg.dao.entity.member.data; import com.google.common.collect.TreeMultimap; import gov.nysenate.openleg.dao.base.LimitOffset; import gov.nysenate.openleg.dao.base.SortOrder; import gov.nysenate.openleg.model.base.SessionYear; import gov.nysenate.openleg.model.entity.Chamber; import gov.nysenate.openleg.model.entity.SessionMember; import gov.nysenate.openleg.model.entity.Person; import java.util.List; import java.util.Map; public interface MemberDao { /** * Retrieve member by id. * * @param id int * @param session SessionYear * @return Member */ public SessionMember getMemberById(int id, SessionYear session); /** * Retrieve a member by session member id * If the specified session member id points to an alternate alias, * then the primary session member will be returned instead * * @param sessionMemberId * @return Member */ public SessionMember getMemberBySessionId(int sessionMemberId); /** * Retrieves map of session year -> Member for a given member id. * * @param id int * @return Map<Integer, Member> */ public TreeMultimap<SessionYear, SessionMember> getMemberById(int id); /** * Retrieve a map of session year -> Member given the LBDC short name. * * @param lbdcShortName String * @param chamber Chamber * @return Map<Integer,Member> */ public Map<SessionYear, SessionMember> getMembersByShortName(String lbdcShortName, Chamber chamber); /** * Retrieve the Member instance via the LBDC shortName and the session year. * * @param lbdcShortName String * @param sessionYear SessionYear * @param chamber Chamber * @return Member */ public SessionMember getMemberByShortName(String lbdcShortName, SessionYear sessionYear, Chamber chamber); /** * Retrieve members from all years and both chambers. * @return */ public List<SessionMember> getAllMembers(SortOrder sortOrder, LimitOffset limOff); /** * @return List<Member> - a list of members that were created on the fly during processing and have not yet been verified */ public List<SessionMember> getUnverifiedSessionMembers(); /** * Updates or inserts a person into the data store * Sets the personId field of the given person using the newly generated id * @param person Person * */ public void updatePerson(Person person); /** * Updates or inserts a member into the data store * Sets the memberId field of the given member using the newly generated id * @param member Member */ public void updateMember(SessionMember member); /** * Updates or inserts a session member into the data store * Sets the sessionMemberId field of the given member using the newly generated id * @param member Member */ public void updateSessionMember(SessionMember member); /** * Links a member to a person in the data store * @param memberId int - member id * @param personId int - person id */ public void linkMember(int memberId, int personId); /** * Links a session member to a member in the data store * @param sessionMemberId int - session member id * @param memberId int - member id */ public void linkSessionMember(int sessionMemberId, int memberId); /** * Removes all persons and members that do not have an associated session member * These are typically persons/members/session members that were created on the fly during processing * where the session */ public void clearOrphans(); }