1 /* 2 * Copyright 2008-2009 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.ole.sys.batch.dataaccess; 17 18 import java.util.List; 19 import java.util.Map; 20 import java.util.Set; 21 22 import org.apache.ojb.broker.query.Criteria; 23 import org.kuali.ole.sys.businessobject.FiscalYearBasedBusinessObject; 24 25 /** 26 * Defines methods that must be implemented for a DAO making an entity for a new fiscal year 27 */ 28 public interface FiscalYearMaker { 29 30 /** 31 * Does any necessary changes on the base record (for base fiscal year) for storing as a record of the new fiscal year. The 32 * fiscal year field should be updated an minimum. 33 * 34 * @param baseFiscalYear fiscal year of the base record 35 * @param currentRecord business object of type (@see org.kuali.ole.coa.dataaccess.FiscalYearMakerDao.getBusinessObjectClass()) 36 * populated with the current year record data 37 * @return business object of type (@see org.kuali.ole.coa.dataaccess.FiscalYearMakerDao.getBusinessObjectClass()) populated 38 * with data for the new fiscal year record 39 */ 40 public void changeForNewYear(Integer baseFiscalYear, FiscalYearBasedBusinessObject currentRecord); 41 42 /** 43 * Creates OJB Criteria object that will be used to query for records to copy 44 * 45 * @param baseFiscalYear fiscal year of the base record 46 * @return OJB criteria object 47 * @see org.apache.ojb.broker.query.Criteria 48 */ 49 public Criteria createSelectionCriteria(Integer baseFiscalYear); 50 51 /** 52 * Creates OJB Criteria object that will be used to delete records in the target year 53 * 54 * @param baseFiscalYear fiscal year of the base record 55 * @return OJB criteria object 56 * @see org.apache.ojb.broker.query.Criteria 57 */ 58 public Criteria createDeleteCriteria(Integer baseFiscalYear); 59 60 /** 61 * Hook to do custom new population for a business object 62 * 63 * @param baseFiscalYear fiscal year of the base record 64 * @param firstCopyYear boolean that indicates whether this is the first year being copied (useful for two year copies) 65 */ 66 public void performCustomProcessing(Integer baseFiscalYear, boolean firstCopyYear); 67 68 /** 69 * Indicator for determining whether we should do normal FYM process and call custom hook or only custom 70 * 71 * @return true if only custom processing should be done, false if both normal FYM process and custom should be performed 72 */ 73 public boolean doCustomProcessingOnly(); 74 75 /** 76 * Returns the class for the business object the fiscal year maker implementation operates on 77 * 78 * @return business object class 79 */ 80 public Class<? extends FiscalYearBasedBusinessObject> getBusinessObjectClass(); 81 82 /** 83 * Returns Set of Class objects that are parents to this business object. Parents will be copied before this object to satisfy 84 * referential integrity in the database 85 * 86 * @return Set of Class objects that extend PersistableBusinessObject 87 */ 88 public Set<Class<? extends FiscalYearBasedBusinessObject>> getParentClasses(); 89 90 /** 91 * Indicates whether records should be created for two fiscal years out as opposed to just one 92 * 93 * @return true if two years should be copied, false otherwise (only the default one) 94 */ 95 public boolean isTwoYearCopy(); 96 97 /** 98 * Indicates whether records of this type can be cleared for target year (if Override parameter is set to true). Clearing 99 * records for some tables causes RI issues therefore they cannot be safely deleted once created 100 * 101 * @return true if target year data can be cleared, false if not 102 */ 103 public boolean isAllowOverrideTargetYear(); 104 105 Criteria createNextYearSelectionCriteria(Integer fiscalYear); 106 107 List<String> getPrimaryKeyPropertyNames(); 108 List<String> getPropertyNames(); 109 @SuppressWarnings("rawtypes") 110 Map<String,Class> getReferenceObjectProperties(); 111 @SuppressWarnings("rawtypes") 112 Map<String,Class> getCollectionProperties(); 113 Map<String,String> getForeignKeyMappings( String referenceName ); 114 }