/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.gl.dataaccess;
import java.sql.Date;
import java.util.Collection;
import java.util.Map;
import org.kuali.kfs.gl.businessobject.OriginEntryGroup;
public interface OriginEntryGroupDao {
/**
* Given an origin entry group source type (defined in OriginEntrySource)
*
* @param sourceCode the source code of the groups to find
* @return a OriginEntryGroup with the given source code and max ORIGIN_ENTRY_GRP_ID
* @see org.kuali.kfs.gl.businessobject.OriginEntrySource
*/
public OriginEntryGroup getGroupWithMaxIdFromSource(String sourceCode);
/**
* Get all the groups that are older than a date
*
* @param day the date groups returned should be older than
* @return a Collection of origin entry groups older than that date
*/
public Collection<OriginEntryGroup> getOlderGroups(Date day);
/**
* Delete all the groups in the list. Note...it doesn't delete the entries within them, you need
* OriginEntryDao.deleteGroups for that
*
* @params groups a Collection of origin entry groups to delete
*/
public void deleteGroups(Collection<OriginEntryGroup> groups);
/**
* Fetch all the groups that match the criteria
*
* @param searchCriteria a Map of search criteria to form the query
* @return a Collection of Origin Entry Groups that match that criteria
*/
public Collection getMatchingGroups(Map searchCriteria);
/**
* Get all the groups for the poster (that is to say, Groups with "Process" being true)
*
* @param groupSourceCode the source code of origin entry groups to return
* @return a Collection of origin entry groups that should be processed by the poster
*/
public Collection getPosterGroups(String groupSourceCode);
/**
* Gets a collection of all backup groups that are scrubbable (i.e. valid, process, scrub indicators all set to true)
*
* @return a Collection of scrubbable origin entry groups
*/
public Collection<OriginEntryGroup> getAllScrubbableBackupGroups();
/**
* Get all the groups to be copied into the backup group
*
* @param groupDate the date returned origin entry groups must have been created on or before
* @return a Collection of origin entry groups to backup
*/
public Collection getGroupsToBackup(Date groupDate);
/**
* The the group for the ID passed. The EXACT one, not one that is close, it must be EXACTLY EXACT.
*
* @param id the group id of the group to return
* @return a highly exact origin entry group, or, if not found, null
*/
public OriginEntryGroup getExactMatchingEntryGroup(Integer id);
/**
* Fetches groups created on or after the given date
*
* @param day the date origin entry groups to return must have been created on or after
* @return a Collection of origin entry groups created on or after that day
*/
public Collection<OriginEntryGroup> getRecentGroups(Date day);
}