001    /*
002     * Copyright 2011 The Kuali Foundation.
003     * 
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     * http://www.opensource.org/licenses/ecl2.php
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.kfs.gl.dataaccess;
017    
018    import java.sql.Date;
019    import java.util.Collection;
020    import java.util.Map;
021    
022    import org.kuali.kfs.gl.businessobject.OriginEntryGroup;
023    
024    public interface OriginEntryGroupDao {
025        /**
026         * Given an origin entry group source type (defined in OriginEntrySource)
027         * 
028         * @param sourceCode the source code of the groups to find
029         * @return a OriginEntryGroup with the given source code and max ORIGIN_ENTRY_GRP_ID
030         * @see org.kuali.kfs.gl.businessobject.OriginEntrySource
031         */
032        public OriginEntryGroup getGroupWithMaxIdFromSource(String sourceCode);
033    
034        /**
035         * Get all the groups that are older than a date
036         * 
037         * @param day the date groups returned should be older than
038         * @return a Collection of origin entry groups older than that date
039         */
040        public Collection<OriginEntryGroup> getOlderGroups(Date day);
041    
042        /**
043         * Delete all the groups in the list.  Note...it doesn't delete the entries within them, you need
044         * OriginEntryDao.deleteGroups for that
045         * 
046         * @params groups a Collection of origin entry groups to delete
047         */
048        public void deleteGroups(Collection<OriginEntryGroup> groups);
049    
050        /**
051         * Fetch all the groups that match the criteria
052         * 
053         * @param searchCriteria a Map of search criteria to form the query
054         * @return a Collection of Origin Entry Groups that match that criteria
055         */
056        public Collection getMatchingGroups(Map searchCriteria);
057    
058        /**
059         * Get all the groups for the poster (that is to say, Groups with "Process" being true)
060         * 
061         * @param groupSourceCode the source code of origin entry groups to return
062         * @return a Collection of origin entry groups that should be processed by the poster
063         */
064        public Collection getPosterGroups(String groupSourceCode);
065    
066        /**
067         * Gets a collection of all backup groups that are scrubbable (i.e. valid, process, scrub indicators all set to true)
068         * 
069         * @return a Collection of scrubbable origin entry groups
070         */
071        public Collection<OriginEntryGroup> getAllScrubbableBackupGroups();
072    
073        /**
074         * Get all the groups to be copied into the backup group
075         * 
076         * @param groupDate the date returned origin entry groups must have been created on or before
077         * @return a Collection of origin entry groups to backup
078         */
079        public Collection getGroupsToBackup(Date groupDate);
080    
081        /**
082         * Save a group
083         * 
084         * @param group a group to save
085         */
086        public void save(OriginEntryGroup group);
087    
088        /**
089         * The the group for the ID passed. The EXACT one, not one that is close, it must be EXACTLY EXACT.
090         * 
091         * @param id the group id of the group to return
092         * @return a highly exact origin entry group, or, if not found, null
093         */
094        public OriginEntryGroup getExactMatchingEntryGroup(Integer id);
095    
096        /**
097         * Fetches groups created on or after the given date
098         * 
099         * @param day the date origin entry groups to return must have been created on or after
100         * @return a Collection of origin entry groups created on or after that day
101         */
102        public Collection<OriginEntryGroup> getRecentGroups(Date day);
103    }