package in.partake.model.dao.access; import in.partake.model.dao.DAOException; import in.partake.model.dao.DataIterator; import in.partake.model.dao.PartakeConnection; import in.partake.model.dto.PartakeModel; /** * 全ての DAO が兼ね備えるべき、put, find, remove を提供する層。 * * @author shinyak * * @param <T> Data type * @param <PK> primary key type. usually String, but it may differ. */ public interface IAccess<T extends PartakeModel<T>, PK> { /** Will be called once after DAOs are created. If there are multiple DAOs, * the order of call is not determined. */ public abstract void initialize(PartakeConnection con) throws DAOException; /** * Removes all data. NEVER use unless in unittest. */ public abstract void truncate(PartakeConnection con) throws DAOException; /** * Persist the data. */ public abstract void put(PartakeConnection con, T t) throws DAOException; /** * Find data from a primary key. */ public abstract T find(PartakeConnection con, PK key) throws DAOException; /** * @return true if exists. */ public abstract boolean exists(PartakeConnection con, PK key) throws DAOException; /** * Remove the data. */ public abstract void remove(PartakeConnection con, PK key) throws DAOException; public abstract DataIterator<T> getIterator(PartakeConnection con) throws DAOException; public abstract int count(PartakeConnection con) throws DAOException; }