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.pdp.service;
017    
018    import org.kuali.kfs.pdp.businessobject.LoadPaymentStatus;
019    import org.kuali.kfs.pdp.businessobject.PaymentFileLoad;
020    import org.kuali.kfs.sys.batch.BatchInputFileType;
021    import org.kuali.rice.kns.util.MessageMap;
022    
023    /**
024     * Handles processing (validation, loading, and reporting) of incoming payment files.
025     */
026    public interface PaymentFileService {
027    
028        /**
029         * Process all incoming payment files
030         * 
031         * @param paymentInputFileType <code>BatchInputFileType</code> for payment files
032         */
033        public void processPaymentFiles(BatchInputFileType paymentInputFileType);
034    
035        /**
036         * Performs hard edits on payment file
037         * 
038         * @param paymentFile <code>PaymentFileLoad</code> containing parsed file contents
039         * @param errorMap <code>Map</code> that will hold errors encountered
040         */
041        public void doPaymentFileValidation(PaymentFileLoad paymentFile, MessageMap errorMap);
042    
043        /**
044         * Performs soft edits of payment file data and loads records into database
045         * 
046         * @param paymentFile <code>PaymentFileLoad</code> containing parsed file contents
047         * @param status <code>LoadPaymentStatus</code> containing status information for load
048         * @param incomingFileName string file name
049         */
050        public void loadPayments(PaymentFileLoad paymentFile, LoadPaymentStatus status, String incomingFileName);
051    
052        /**
053         * Creates the PDP XML output which can be parsed to obtain load status information
054         * 
055         * @param status <code>LoadPaymentStatus</code> containing status information for load
056         * @param inputFileName incomingFileName string file name
057         * @return true if output file was successfully created, false otherwise
058         */
059        public boolean createOutputFile(LoadPaymentStatus status, String inputFileName);
060    
061    }
062