package gov.nysenate.openleg.dao.agenda.data; import gov.nysenate.openleg.dao.base.BasicSqlQuery; import gov.nysenate.openleg.dao.base.SqlTable; public enum SqlAgendaQuery implements BasicSqlQuery { /** --- Agenda Base --- */ SELECT_AGENDAS_BY_YEAR( "SELECT * FROM ${schema}." + SqlTable.AGENDA + " WHERE year = :year" ), SELECT_AGENDA_BY_ID( SELECT_AGENDAS_BY_YEAR.sql + " AND agenda_no = :agendaNo" ), SELECT_AGENDA_BY_WEEK_OF( "SELECT a.agenda_no, a.year, a.modified_date_time, a.published_date_time\n" + "FROM ${schema}." + SqlTable.AGENDA + " a\n" + " JOIN ${schema}." + SqlTable.AGENDA_INFO_ADDENDUM + " ai\n" + " ON a.agenda_no = ai.agenda_no AND a.year = ai.year\n" + "WHERE ai.week_of = :weekOf" ), UPDATE_AGENDA( "UPDATE ${schema}." + SqlTable.AGENDA + "\n" + "SET published_date_time = :publishedDateTime, modified_date_time = :modifiedDateTime, " + " last_fragment_id = :lastFragmentId \n" + "WHERE agenda_no = :agendaNo AND year = :year" ), INSERT_AGENDA( "INSERT INTO ${schema}." + SqlTable.AGENDA + "\n" + "(agenda_no, year, published_date_time, modified_date_time, last_fragment_id)\n" + "VALUES (:agendaNo, :year, :publishedDateTime, :modifiedDateTime, :lastFragmentId)" ), DELETE_AGENDA( "DELETE FROM ${schema}." + SqlTable.AGENDA + "\n" + "WHERE agenda_no = :agendaNo AND year = :year" ), /** --- Agenda Info Addendum --- */ SELECT_AGENDA_INFO_ADDENDA( "SELECT * FROM ${schema}." + SqlTable.AGENDA_INFO_ADDENDUM + "\n" + "WHERE agenda_no = :agendaNo AND year = :year" ), SELECT_AGENDA_INFO_ADDENDUM( SELECT_AGENDA_INFO_ADDENDA.sql + " AND addendum_id = :addendumId" ), UPDATE_AGENDA_INFO_ADDENDUM( "UPDATE ${schema}." + SqlTable.AGENDA_INFO_ADDENDUM + "\n" + "SET modified_date_time = :modifiedDateTime, published_date_time = :publishedDateTime, " + " week_of = :weekOf, last_fragment_id = :lastFragmentId\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId" ), INSERT_AGENDA_INFO_ADDENDUM( "INSERT INTO ${schema}." + SqlTable.AGENDA_INFO_ADDENDUM + "\n" + "(agenda_no, year, addendum_id, modified_date_time, published_date_time, week_of, last_fragment_id)\n" + "VALUES (:agendaNo, :year, :addendumId, :modifiedDateTime, :publishedDateTime, :weekOf, :lastFragmentId)" ), DELETE_AGENDA_INFO_ADDENDUM( "DELETE FROM ${schema}." + SqlTable.AGENDA_INFO_ADDENDUM + "\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId" ), /** --- Agenda Info Committee --- */ SELECT_AGENDA_INFO_COMMITTEES( "SELECT * FROM ${schema}." + SqlTable.AGENDA_INFO_COMMITTEE + "\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId" ), SELECT_AGENDA_INFO_COMMITTEE_ID( "SELECT id FROM ${schema}." + SqlTable.AGENDA_INFO_COMMITTEE + "\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId\n" + " AND committee_name = :committeeName AND committee_chamber = :committeeChamber::chamber" ), INSERT_AGENDA_INFO_COMMITTEE( "INSERT INTO ${schema}." + SqlTable.AGENDA_INFO_COMMITTEE + "\n" + "(agenda_no, year, addendum_id, committee_name, committee_chamber, chair, location, meeting_date_time, " + " notes, last_fragment_id)\n" + "VALUES (:agendaNo, :year, :addendumId, :committeeName, :committeeChamber::chamber, :chair, :location, " + " :meetingDateTime, :notes, :lastFragmentId)" ), DELETE_AGENDA_INFO_COMMITTEE( "DELETE ${schema}." + SqlTable.AGENDA_INFO_COMMITTEE + "\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId " + "AND committee_name = :committeeName AND committee_chamber = :committeeChamber::chamber" ), /** --- Agenda Info Committee Item --- */ SELECT_AGENDA_INFO_COMM_ITEMS( "SELECT * FROM ${schema}." + SqlTable.AGENDA_INFO_COMMITTEE_ITEM + "\n" + "WHERE info_committee_id IN (" + SELECT_AGENDA_INFO_COMMITTEE_ID.sql + ")" ), INSERT_AGENDA_INFO_COMM_ITEM( "INSERT INTO ${schema}." + SqlTable.AGENDA_INFO_COMMITTEE_ITEM + "\n" + "(info_committee_id, bill_print_no, bill_session_year, bill_amend_version, message, last_fragment_id)\n" + "SELECT c.id, :printNo, :session, :amendVersion, :message, :lastFragmentId\n" + "FROM (" + SELECT_AGENDA_INFO_COMMITTEE_ID.sql + ") c" ), /** --- Agenda Vote Addendum --- */ SELECT_AGENDA_VOTE_ADDENDA( "SELECT * FROM ${schema}." + SqlTable.AGENDA_VOTE_ADDENDUM + "\n" + "WHERE agenda_no = :agendaNo AND year = :year" ), SELECT_AGENDA_VOTE_ADDENDUM( SELECT_AGENDA_VOTE_ADDENDA.sql + " AND addendum_id = :addendumId" ), UPDATE_AGENDA_VOTE_ADDENDUM( "UPDATE ${schema}." + SqlTable.AGENDA_VOTE_ADDENDUM + "\n" + "SET modified_date_time = :modifiedDateTime, published_date_time = :publishedDateTime, " + " last_fragment_id = :lastFragmentId\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId" ), INSERT_AGENDA_VOTE_ADDENDUM( "INSERT INTO ${schema}." + SqlTable.AGENDA_VOTE_ADDENDUM + "\n" + "(agenda_no, year, addendum_id, modified_date_time, published_date_time, last_fragment_id)\n" + "VALUES (:agendaNo, :year, :addendumId, :modifiedDateTime, :publishedDateTime, :lastFragmentId)" ), DELETE_AGENDA_VOTE_ADDENDUM( "DELETE FROM ${schema}." + SqlTable.AGENDA_VOTE_ADDENDUM + "\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId" ), /** --- Agenda Vote Committee --- */ SELECT_AGENDA_VOTE_COMMITTEES( "SELECT * FROM ${schema}." + SqlTable.AGENDA_VOTE_COMMITTEE + "\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId" ), SELECT_AGENDA_VOTE_COMMITTEE_ID( "SELECT id FROM ${schema}." + SqlTable.AGENDA_VOTE_COMMITTEE + "\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId\n" + " AND committee_name = :committeeName AND committee_chamber = :committeeChamber::chamber" ), INSERT_AGENDA_VOTE_COMMITTEE( "INSERT INTO ${schema}." + SqlTable.AGENDA_VOTE_COMMITTEE + "\n" + "(agenda_no, year, addendum_id, committee_name, committee_chamber, chair, meeting_date_time, last_fragment_id)\n" + "VALUES (:agendaNo, :year, :addendumId, :committeeName, :committeeChamber::chamber, :chair, " + " :meetingDateTime, :lastFragmentId)" ), DELETE_AGENDA_VOTE_COMMITTEE( "DELETE ${schema}." + SqlTable.AGENDA_VOTE_COMMITTEE + "\n" + "WHERE agenda_no = :agendaNo AND year = :year AND addendum_id = :addendumId AND " + " committee_name = :committeeName AND committee_chamber = :committeeChamber::chamber" ), /** --- Agenda Vote Attendance --- */ SELECT_AGENDA_VOTE_ATTENDANCE( "SELECT * FROM ${schema}." + SqlTable.AGENDA_VOTE_COMMITTEE_ATTEND + "\n" + "WHERE vote_committee_id IN (" + SELECT_AGENDA_VOTE_COMMITTEE_ID.sql + ")" ), INSERT_AGENDA_VOTE_ATTENDANCE( "INSERT INTO ${schema}." + SqlTable.AGENDA_VOTE_COMMITTEE_ATTEND + "\n" + "(vote_committee_id, session_member_id, session_year, lbdc_short_name, rank, party, attend_status, last_fragment_id)\n" + "SELECT c.id, :sessionMemberId, :sessionYear, :lbdcShortName, :rank, :party, :attendStatus, :lastFragmentId\n" + "FROM (" + SELECT_AGENDA_VOTE_COMMITTEE_ID.sql + ") c" ), /** --- Agenda Committee Votes --- */ SELECT_AGENDA_COMM_VOTES( "SELECT cv.id, cv.vote_action, cv.refer_committee_name, cv.refer_committee_chamber, cv.with_amendment," + " vi.bill_print_no, vi.bill_session_year, vi.bill_amend_version, vi.vote_date, vi.vote_type," + " vi.sequence_no, vi.published_date_time, vi.modified_date_time," + " vi.committee_name, vi.committee_chamber," + " vr.session_member_id, vr.session_year, vr.vote_code\n" + "FROM ${schema}." + SqlTable.AGENDA_VOTE_COMMITTEE_VOTE + " cv\n" + "JOIN ${schema}." + SqlTable.BILL_AMENDMENT_VOTE_INFO + " vi ON cv.vote_info_id = vi.id\n" + "JOIN ${schema}." + SqlTable.BILL_AMENDMENT_VOTE_ROLL + " vr ON vi.id = vr.vote_id\n" + "WHERE cv.vote_committee_id IN (" + SELECT_AGENDA_VOTE_COMMITTEE_ID.sql + ")" ), INSERT_AGENDA_COMM_BILL_VOTES( "INSERT INTO ${schema}." + SqlTable.AGENDA_VOTE_COMMITTEE_VOTE + "\n" + "(vote_committee_id, vote_action, vote_info_id, refer_committee_name, refer_committee_chamber, with_amendment," + " last_fragment_id) \n" + "SELECT c.id, :voteAction, vi.id, :referCommitteeName, :referCommitteeChamber::chamber, :withAmend, " + " :lastFragmentId\n" + "FROM (" + SELECT_AGENDA_VOTE_COMMITTEE_ID.sql + ") c, " + " ${schema}." + SqlTable.BILL_AMENDMENT_VOTE_INFO + " vi\n" + "WHERE vi.bill_print_no = :billPrintNo AND vi.bill_session_year = :sessionYear AND \n" + " vi.bill_amend_version = :amendVersion AND vote_date = :voteDate AND sequence_no = :sequenceNo AND" + " vi.vote_type = :voteType::${schema}.vote_type" ); private String sql; SqlAgendaQuery(String sql) { this.sql = sql; } @Override public String getSql() { return this.sql; } }