/*
* 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.sys.batch.dataaccess;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import org.kuali.kfs.sys.businessobject.FiscalYearBasedBusinessObject;
/**
* Provides data access methods for the fiscal year maker process
*/
public interface FiscalYearMakersDao {
/**
* Clears out records for the new year and object being copied
*
* @param baseYear fiscal year that we are copying
* @param objectFiscalYearMaker FiscalYearMaker implementation for the object we are copying
*/
public void deleteNewYearRows(Integer baseYear, FiscalYearMaker objectFiscalYearMaker);
/**
* Populates records for the new year and object
*
* @param baseYear fiscal year that we are copying
* @param objectFiscalYearMaker FiscalYearMaker implementation for the object we are copying
* @param replaceMode indicates whether records found for the new year should be replaced or left alone
* @param parentKeysWritten Map that contains class as key and Set of of primary key strings representing records written
* @param isParentClass indicates whether the class being copied is a parent to another FYM class that will be copied
* @return Collection of error messages encountered while attempting to copy a record
*/
public Collection<String> createNewYearRows(Integer baseYear, FiscalYearMaker objectFiscalYearMaker, boolean replaceMode, Map<Class<? extends FiscalYearBasedBusinessObject>, Set<String>> parentKeysWritten, boolean isParentClass) throws Exception;
}