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.batch.service;
017
018 import java.io.File;
019
020 import org.kuali.kfs.gl.businessobject.Balance;
021 import org.kuali.kfs.gl.businessobject.LedgerBalanceHistory;
022 import org.kuali.kfs.gl.businessobject.OriginEntryInformation;
023
024
025 /**
026 * Interface for BalancingService
027 */
028 public interface BalancingService {
029 /**
030 * Handle for batch processes to kick off balancing
031 * @return boolean true when success
032 */
033 public boolean runBalancing();
034
035 /**
036 * @return input poster file. Returns null if no file found.
037 */
038 public abstract File getPosterInputFile();
039
040 /**
041 * @return output poster error file. Returns null if no file found.
042 */
043 public abstract File getPosterErrorOutputFile();
044
045 /**
046 * @return input reversal file. Returns null if no file found.
047 */
048 public abstract File getReversalInputFile();
049
050 /**
051 * @return output reversal error file. Returns null if no file found.
052 */
053 public abstract File getReversalErrorOutputFile();
054
055 /**
056 * @return input ICR file. Returns null if no file found.
057 */
058 public abstract File getICRInputFile();
059
060 /**
061 * @return output ICR error file. Returns null if no file found.
062 */
063 public abstract File getICRErrorOutputFile();
064
065 /**
066 * @return system parameter for NUMBER_OF_PAST_FISCAL_YEARS_TO_CONSIDER
067 */
068 public abstract int getPastFiscalYearsToConsider();
069
070 /**
071 * @return system parameter for NUMBER_OF_COMPARISON_FAILURES_TO_PRINT_PER_REPORT
072 */
073 public abstract int getComparisonFailuresToPrintPerReport();
074
075 /**
076 * @param businessObjectName name of the BO for which to return the label
077 * @return functional short labels for tables affected in this process
078 */
079 public abstract String getShortTableLabel(String businessObjectName);
080
081 /**
082 * Gets an OriginEntryInformation for the parsed line. This needs to be handled separately for GL and Labor because Labor is a special case
083 * of GL (positionNumber + emplid). Could be done with an OriginEntryHistory interface but in the interest of not mucking with
084 * OriginEntries the is done with delegation.
085 * @param inputLine line that was read from getPosterInputFilename
086 * @param lineNumber line number we are currently reading from getPosterInputFilename
087 * @return parsed line into an object as per inputLine parameter
088 */
089 public abstract OriginEntryInformation getOriginEntry(String inputLine, int lineNumber);
090
091 /**
092 * Update the entry history table
093 * @param mode of post, e.g. MODE_REVERSAL
094 * @param originEntry representing the update details
095 */
096 public abstract void updateEntryHistory(Integer postMode, OriginEntryInformation originEntry);
097
098 /**
099 * Updates the balance history table
100 * @param originEntry representing the update details
101 */
102 public abstract void updateBalanceHistory(Integer postMode, OriginEntryInformation originEntry);
103
104 /**
105 * Returns a Balance object for the parameters of the passed in LedgerBalanceHistory. Necessary for generic amount comparision since
106 * it may be either labor or gl.
107 * @param ledgerBalanceHistory to retrieve the Balance object for
108 * @return balance object adhereing to the Balance interface
109 */
110 public abstract Balance getBalance(LedgerBalanceHistory ledgerBalanceHistory);
111
112 /**
113 * In order to avoid file system scans this class caches poster input and poster error filenames. In rare cases they may want to be reset.
114 */
115 public abstract void clearPosterFileCache();
116
117 /**
118 * Removes the data from the History tables.
119 *
120 */
121
122 public abstract void clearHistories();
123
124 }