package gov.nysenate.openleg.dao.bill.data;
import gov.nysenate.openleg.model.bill.BaseBillId;
import gov.nysenate.openleg.model.bill.VetoId;
import gov.nysenate.openleg.model.bill.VetoMessage;
import gov.nysenate.openleg.model.sobi.SobiFragment;
import org.springframework.dao.DataAccessException;
import java.util.Map;
public interface VetoDao
{
/**
* Get a specific veto via its veto number
*
* @param vetoId
* @return VetoMessage
* @throws DataAccessException if the veto cannot be found
*/
public VetoMessage getVetoMessage(VetoId vetoId) throws DataAccessException;
/**
* Retrieves a chronologically ordered list of vetoes corresponding to the given bill
*
* @param baseBillId
* @return List<VetoMessage>
* @throws DataAccessException if no vetoes are found
*/
public Map<VetoId,VetoMessage> getBillVetoes(BaseBillId baseBillId) throws DataAccessException;
/**
* Updates or inserts the given vetoMessage
*
* @param vetoMessage
* @param sobiFragment
* @throws DataAccessException if there is an error inserting/updating the vetoMessage
*/
public void updateVetoMessage(VetoMessage vetoMessage, SobiFragment sobiFragment) throws DataAccessException;
/**
* Deletes a veto message specified by the given veto id
* @param vetoId
*/
public void deleteVetoMessage(VetoId vetoId);
/**
* Deletes all veto messages for the bill designated by the given base bill id
* @param baseBillId
*/
public void deleteBillVetoes(BaseBillId baseBillId);
}