package gov.nysenate.openleg.dao.bill.data;
import gov.nysenate.openleg.dao.base.BasicSqlQuery;
import gov.nysenate.openleg.dao.base.SqlTable;
public enum SqlBillQuery implements BasicSqlQuery
{
/** --- Bill Base --- */
SELECT_BILL(
"SELECT * FROM ${schema}." + SqlTable.BILL + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
SELECT_BILL_IDS_BY_SESSION(
"SELECT bill_print_no, bill_session_year FROM ${schema}." + SqlTable.BILL + "\n" +
"WHERE bill_session_year = :sessionYear"
),
SELECT_COUNT_ALL_BILLS(
"SELECT count(*) AS total FROM ${schema}." + SqlTable.BILL
),
SELECT_COUNT_ALL_BILLS_IN_SESSION(
SELECT_COUNT_ALL_BILLS.sql + " WHERE bill_session_year = :sessionYear"
),
UPDATE_BILL(
"UPDATE ${schema}." + SqlTable.BILL + "\n" +
"SET title = :title, summary = :summary, active_version = :activeVersion, sub_bill_print_no = :subPrintNo,\n" +
" active_year = :activeYear, program_info = :programInfo, program_info_num = :programInfoNum, " +
" status = :status, status_date = :statusDate, committee_name = :committeeName, " +
" committee_chamber = :committeeChamber::chamber, bill_cal_no = :billCalNo, " +
" modified_date_time = :modifiedDateTime, published_date_time = :publishedDateTime, last_fragment_id = :lastFragmentId\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
INSERT_BILL(
"INSERT INTO ${schema}." + SqlTable.BILL + "\n" +
"(bill_print_no, bill_session_year, title, summary, active_version, active_year, sub_bill_print_no, " +
" program_info, program_info_num, status, status_date, committee_name, committee_chamber, bill_cal_no, " +
" modified_date_time, published_date_time, last_fragment_id) \n" +
"VALUES (:printNo, :sessionYear, :title, :summary, :activeVersion, :activeYear, :subPrintNo, " +
" :programInfo, :programInfoNum, :status, :statusDate, :committeeName, :committeeChamber::chamber, :billCalNo, " +
" :modifiedDateTime, :publishedDateTime, :lastFragmentId)"
),
ACTIVE_SESSION_YEARS(
"SELECT min(bill_session_year) as min, max(bill_session_year) as max\n" +
"FROM ${schema}." + SqlTable.BILL
),
/** --- Bill Sponsor --- */
SELECT_BILL_SPONSOR(
"SELECT * FROM ${schema}." + SqlTable.BILL_SPONSOR + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
INSERT_BILL_SPONSOR(
"INSERT INTO ${schema}." + SqlTable.BILL_SPONSOR + "\n" +
"(bill_print_no, bill_session_year, session_member_id, budget_bill, rules_sponsor, last_fragment_id) " +
"VALUES (:printNo, :sessionYear, :sessionMemberId, :budgetBill, :rulesSponsor, :lastFragmentId)"
),
UPDATE_BILL_SPONSOR(
"UPDATE ${schema}." + SqlTable.BILL_SPONSOR + "\n" +
"SET session_member_id = :sessionMemberId, budget_bill = :budgetBill, rules_sponsor = :rulesSponsor, " +
"last_fragment_id = :lastFragmentId\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
DELETE_BILL_SPONSOR(
"DELETE FROM ${schema}." + SqlTable.BILL_SPONSOR + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
/** --- Addtional Bill Sponsors --- */
SELECT_ADDTL_BILL_SPONSORS(
"SELECT * FROM ${schema}." + SqlTable.BILL_ADDITIONAL_SPONSOR + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
/** --- Bill Text --- */
SELECT_BILL_TEXT(
"SELECT bill_print_no, bill_session_year, bill_amend_version, sponsor_memo, full_text \n" +
"FROM ${schema}.bill_amendment \n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
SELECT_ALTERNATE_PDF_URL(
"SELECT url_path \n" +
"FROM ${schema}." + SqlTable.BILL_ALTERNATE_PDF + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version\n" +
"AND active = true"
),
/** --- Bill Amendment --- */
SELECT_BILL_AMENDMENTS(
"SELECT * FROM ${schema}." + SqlTable.BILL_AMENDMENT + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
UPDATE_BILL_AMENDMENT(
"UPDATE ${schema}." + SqlTable.BILL_AMENDMENT + "\n" +
"SET sponsor_memo = :sponsorMemo, act_clause = :actClause, full_text = :fullText, stricken = :stricken, " +
" uni_bill = :uniBill, last_fragment_id = :lastFragmentId, law_section = :lawSection, law_code = :lawCode\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version"
),
INSERT_BILL_AMENDMENT(
"INSERT INTO ${schema}." + SqlTable.BILL_AMENDMENT + "\n" +
"(bill_print_no, bill_session_year, bill_amend_version, sponsor_memo, act_clause, full_text, stricken, " +
" uni_bill, last_fragment_id, law_section, law_code)\n" +
"VALUES(:printNo, :sessionYear, :version, :sponsorMemo, :actClause, :fullText, :stricken, " +
" :uniBill, :lastFragmentId, :lawSection, :lawCode)"
),
/** --- Bill Amendment Publish Status --- */
SELECT_BILL_AMEND_PUBLISH_STATUSES(
"SELECT * FROM ${schema}." + SqlTable.BILL_AMENDMENT_PUBLISH_STATUS + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
UPDATE_BILL_AMEND_PUBLISH_STATUS(
"UPDATE ${schema}." + SqlTable.BILL_AMENDMENT_PUBLISH_STATUS + "\n" +
"SET published = :published, effect_date_time = :effectDateTime, override = :override, notes = :notes," +
" last_fragment_id = :lastFragmentId\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version"
),
INSERT_BILL_AMEND_PUBLISH_STATUS(
"INSERT INTO ${schema}." + SqlTable.BILL_AMENDMENT_PUBLISH_STATUS + "\n" +
"(bill_print_no, bill_session_year, bill_amend_version, published, effect_date_time, override, notes, " +
" last_fragment_id) \n" +
"VALUES (:printNo, :sessionYear, :version, :published, :effectDateTime, :override, :notes, :lastFragmentId)"
),
/** --- Bill Amendment Cosponsors --- */
SELECT_BILL_COSPONSORS(
"SELECT * FROM ${schema}." + SqlTable.BILL_AMENDMENT_COSPONSOR + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version\n" +
"ORDER BY sequence_no ASC"
),
INSERT_BILL_COSPONSOR(
"INSERT INTO ${schema}." + SqlTable.BILL_AMENDMENT_COSPONSOR + " " +
"(bill_print_no, bill_session_year, bill_amend_version, session_member_id, sequence_no, last_fragment_id)\n" +
"VALUES (:printNo, :sessionYear, :version, :sessionMemberId, :sequenceNo, :lastFragmentId)"
),
UPDATE_BILL_COSPONSOR(
"UPDATE ${schema}." + SqlTable.BILL_AMENDMENT_COSPONSOR + " " +
"SET sequence_no = :sequenceNo, last_fragment_id = :lastFragmentId\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version\n" +
" AND session_member_id = :sessionMemberId"
),
DELETE_BILL_COSPONSORS(
"DELETE FROM ${schema}." + SqlTable.BILL_AMENDMENT_COSPONSOR + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version"
),
DELETE_BILL_COSPONSOR(
DELETE_BILL_COSPONSORS.sql + " AND session_member_id = :sessionMemberId"
),
/** --- Bill Amendment Multi-sponsors --- */
SELECT_BILL_MULTISPONSORS(
"SELECT * FROM ${schema}." + SqlTable.BILL_AMENDMENT_MULTISPONSOR + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version\n" +
"ORDER BY sequence_no ASC"
),
INSERT_BILL_MULTISPONSOR(
"INSERT INTO ${schema}." + SqlTable.BILL_AMENDMENT_MULTISPONSOR + " " +
"(bill_print_no, bill_session_year, bill_amend_version, session_member_id, sequence_no, last_fragment_id)\n" +
"VALUES (:printNo, :sessionYear, :version, :sessionMemberId, :sequenceNo, :lastFragmentId)"
),
UPDATE_BILL_MULTISPONSOR(
"UPDATE ${schema}." + SqlTable.BILL_AMENDMENT_MULTISPONSOR + " " +
"SET sequence_no = :sequenceNo, last_fragment_id = :lastFragmentId\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version\n" +
" AND session_member_id = :sessionMemberId"
),
DELETE_BILL_MULTISPONSORS(
"DELETE FROM ${schema}." + SqlTable.BILL_AMENDMENT_MULTISPONSOR + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version"
),
DELETE_BILL_MULTISPONSOR(
DELETE_BILL_MULTISPONSORS.sql + " AND session_member_id = :sessionMemberId"
),
/** --- Bill Amendment Votes --- */
SELECT_BILL_VOTES(
"SELECT * FROM ${schema}." + SqlTable.BILL_AMENDMENT_VOTE_INFO + " info \n" +
"JOIN ${schema}." + SqlTable.BILL_AMENDMENT_VOTE_ROLL + " roll ON info.id = roll.vote_id\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version"
),
INSERT_BILL_VOTES_INFO(
"INSERT INTO ${schema}." + SqlTable.BILL_AMENDMENT_VOTE_INFO + "\n" +
"(bill_print_no, bill_session_year, bill_amend_version, vote_type, vote_date, sequence_no, " +
" committee_name, committee_chamber, modified_date_time, published_date_time, last_fragment_id) " +
"VALUES (:printNo, :sessionYear, :version, :voteType::${schema}.vote_type, :voteDate, :sequenceNo, " +
" :committeeName, :committeeChamber::chamber, :modifiedDateTime, :publishedDateTime, :lastFragmentId)"
),
INSERT_BILL_VOTES_ROLL(
"INSERT INTO ${schema}." + SqlTable.BILL_AMENDMENT_VOTE_ROLL + "\n" +
"(vote_id, vote_code, session_member_id, member_short_name, session_year, last_fragment_id)\n" +
"SELECT id, :voteCode::${schema}.vote_code, :sessionMemberId, :memberShortName, :sessionYear, :lastFragmentId " +
"FROM ${schema}." + SqlTable.BILL_AMENDMENT_VOTE_INFO + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version\n" +
"AND vote_date = :voteDate AND vote_type = :voteType::${schema}.vote_type AND sequence_no = :sequenceNo\n" +
"AND COALESCE(committee_name, '') = COALESCE(:committeeName, '')"
),
DELETE_BILL_VOTES_INFO(
"DELETE FROM ${schema}." + SqlTable.BILL_AMENDMENT_VOTE_INFO + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version\n" +
"AND vote_date = :voteDate AND vote_type = :voteType::${schema}.vote_type AND sequence_no = :sequenceNo \n" +
"AND COALESCE(committee_name, '') = COALESCE(:committeeName, '')"
),
/** --- Bill Actions --- */
SELECT_BILL_ACTIONS(
"SELECT * FROM ${schema}." + SqlTable.BILL_AMENDMENT_ACTION + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear "
),
INSERT_BILL_ACTION(
"INSERT INTO ${schema}." + SqlTable.BILL_AMENDMENT_ACTION + "\n" +
"(bill_print_no, bill_session_year, bill_amend_version, effect_date, chamber, text, sequence_no, " +
" last_fragment_id) \n" +
"VALUES (:printNo, :sessionYear, :version, :effectDate, CAST(:chamber as chamber), :text, :sequenceNo, " +
" :lastFragmentId)"
),
DELETE_BILL_ACTION("" +
"DELETE FROM ${schema}." + SqlTable.BILL_AMENDMENT_ACTION + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version \n" +
" AND sequence_no = :sequenceNo"),
/** --- Bill Same As --- */
SELECT_BILL_SAME_AS(
"SELECT * FROM ${schema}." + SqlTable.BILL_AMENDMENT_SAME_AS + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version"
),
INSERT_BILL_SAME_AS(
"INSERT INTO ${schema}." + SqlTable.BILL_AMENDMENT_SAME_AS + "\n" +
"(bill_print_no, bill_session_year, bill_amend_version, same_as_bill_print_no, same_as_session_year, " +
" same_as_amend_version, last_fragment_id)\n" +
"VALUES (:printNo, :sessionYear, :version, :sameAsPrintNo, :sameAsSessionYear, :sameAsVersion, :lastFragmentId)"
),
DELETE_SAME_AS_FOR_BILL(
"DELETE FROM ${schema}." + SqlTable.BILL_AMENDMENT_SAME_AS + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear AND bill_amend_version = :version"
),
DELETE_SAME_AS(
DELETE_SAME_AS_FOR_BILL.sql + " AND same_as_bill_print_no = :sameAsPrintNo AND " +
"same_as_session_year = :sameAsSessionYear AND same_as_amend_version = :sameAsVersion"
),
/** --- Bill Committee --- */
SELECT_BILL_COMMITTEES(
"SELECT * FROM ${schema}." + SqlTable.BILL_COMMITTEE + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
INSERT_BILL_COMMITTEE(
"INSERT INTO ${schema}." + SqlTable.BILL_COMMITTEE + "\n" +
"(bill_print_no, bill_session_year, committee_name, committee_chamber, action_date, last_fragment_id)" + "\n" +
"VALUES ( :printNo, :sessionYear, :committeeName, :committeeChamber::chamber, :actionDate, :lastFragmentId)"
),
DELETE_BILL_COMMITTEES(
"DELETE FROM ${schema}." + SqlTable.BILL_COMMITTEE + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
DELETE_BILL_COMMITTEE(
DELETE_BILL_COMMITTEES.sql + " AND committee_name = :committeeName AND \n" +
"committee_chamber = :committeeChamber::chamber AND action_date = :actionDate"
),
/** --- Bill Previous Version --- */
SELECT_BILL_PREVIOUS_VERSIONS(
"SELECT * FROM ${schema}." + SqlTable.BILL_PREVIOUS_VERSION + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
SELECT_ALL_BILL_PREVIOUS_VERSIONS(
"WITH RECURSIVE prev_version(bill_id, amend_version, session_year) AS ( \n" +
" SELECT prev_bill_print_no, prev_amend_version, prev_bill_session_year \n" +
" FROM ${schema}.bill_previous_version \n" +
" WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear \n" +
"" +
" UNION \n" +
" SELECT prev_bill_print_no, prev_amend_version, prev_bill_session_year \n" +
" FROM prev_version, ${schema}.bill_previous_version \n" +
" WHERE bill_print_no = bill_id AND bill_session_year = session_year) \n" +
"SELECT bill_id AS prev_bill_print_no, amend_version AS prev_amend_version, " +
" session_year AS prev_bill_session_year \n" +
"FROM prev_version"
),
INSERT_BILL_PREVIOUS_VERSION(
"INSERT INTO ${schema}." + SqlTable.BILL_PREVIOUS_VERSION + "\n" +
"(bill_print_no, bill_session_year, prev_bill_print_no, prev_bill_session_year, prev_amend_version, " +
" last_fragment_id)\n" +
"VALUES (:printNo, :sessionYear, :prevPrintNo, :prevSessionYear, :prevVersion, :lastFragmentId)"
),
DELETE_BILL_PREVIOUS_VERSIONS(
"DELETE FROM ${schema}." + SqlTable.BILL_PREVIOUS_VERSION + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
DELETE_BILL_PREVIOUS_VERSION(
DELETE_BILL_PREVIOUS_VERSIONS.sql + " AND prev_bill_print_no = :prevPrintNo AND " +
"prev_bill_session_year = :prevSessionYear AND prev_amend_version = :prevVersion"
),
/** --- Bill Milestones --- */
GET_BILL_MILESTONES(
"SELECT * FROM ${schema}." + SqlTable.BILL_MILESTONE + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
INSERT_BILL_MILESTONE("" +
"INSERT INTO ${schema}." + SqlTable.BILL_MILESTONE + "\n" +
"(bill_print_no, bill_session_year, status, rank, action_sequence_no, date, committee_name, committee_chamber," +
" cal_no, last_fragment_id)\n" +
"VALUES (:printNo, :sessionYear, :status, :rank, :actionSequenceNo, :date, :committeeName, :committeeChamber::chamber," +
" :calNo, :lastFragmentId)"
),
DELETE_BILL_MILESTONES("" +
"DELETE FROM ${schema}." + SqlTable.BILL_MILESTONE + "\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
),
/** --- Associated Committee Agenda Ids --- */
SELECT_COMM_AGENDA_IDS(
"SELECT aic.agenda_no, aic.year, aic.committee_name \n" +
"FROM ${schema}." + SqlTable.AGENDA_INFO_COMMITTEE_ITEM + " aici\n" +
"JOIN ${schema}." + SqlTable.AGENDA_INFO_COMMITTEE + " aic ON aici.info_committee_id = aic.id\n" +
"WHERE aici.bill_print_no = :printNo AND aici.bill_session_year = :sessionYear"
),
/** --- Associated Calendar Ids -- */
SELECT_CALENDAR_IDS(
"SELECT cs.calendar_no, cs.calendar_year \n" +
"FROM ${schema}." + SqlTable.CALENDAR_SUP_ENTRY + " cse\n" +
"JOIN ${schema}." + SqlTable.CALENDAR_SUPPLEMENTAL + " cs ON cse.calendar_sup_id = cs.id\n" +
"WHERE bill_print_no = :printNo AND bill_session_year = :sessionYear"
);
private String sql;
SqlBillQuery(String sql) {
this.sql = sql;
}
@Override
public String getSql() {
return this.sql;
}
}