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.module.bc.document.service;
017    
018    import java.io.ByteArrayOutputStream;
019    import java.util.Collection;
020    import java.util.List;
021    import java.util.Map;
022    
023    import org.kuali.kfs.coa.businessobject.ObjectCode;
024    import org.kuali.kfs.module.bc.businessobject.BudgetConstructionAdministrativePost;
025    import org.kuali.kfs.module.bc.businessobject.BudgetConstructionIntendedIncumbent;
026    import org.kuali.kfs.module.bc.businessobject.BudgetConstructionObjectDump;
027    import org.kuali.kfs.module.bc.businessobject.BudgetConstructionPosition;
028    import org.kuali.kfs.module.bc.businessobject.BudgetConstructionSalaryFunding;
029    import org.kuali.kfs.module.bc.businessobject.BudgetConstructionSalarySocialSecurityNumber;
030    import org.kuali.kfs.module.bc.businessobject.PendingBudgetConstructionAppointmentFunding;
031    
032    import com.lowagie.text.DocumentException;
033    
034    
035    /**
036     * defines methods that help build report data in Budget Construction
037     */
038    public interface BudgetConstructionReportsServiceHelper {
039    
040        /**
041         * generates the data for an object representing the report data from temporary storage for a specific user
042         * 
043         * @param clazz
044         * @param principalName
045         * @param orderList
046         * @return
047         */
048        public Collection getDataForBuildingReports(Class clazz, String principalName, List<String> orderList);
049    
050        /**
051         * generates the data for an object representing the report data
052         * 
053         * @param clazz
054         * @param searchCriteria
055         * @param orderList
056         * @return
057         */
058        public Collection getDataForBuildingReports(Class clazz, Map searchCriteria, List<String> orderList);
059    
060        /**
061         * generates PFD file containing the errorMessages passed in
062         * 
063         * @param errorMessages
064         * @param baos
065         * @throws DocumentException
066         */
067        public void generatePdf(List<String> errorMessages, ByteArrayOutputStream baos) throws DocumentException;
068    
069        /**
070         * get an object code
071         * 
072         * @param universityFiscalYear
073         * @param chartOfAccountsCode
074         * @param financialObjectCode
075         * @return
076         */
077        public ObjectCode getObjectCode(Integer universityFiscalYear, String chartOfAccountsCode, String financialObjectCode);
078    
079        /**
080         * get the selected object codes from the list displayed to the user
081         * 
082         * @param principalName
083         * @return
084         */
085        public String getSelectedObjectCodes(String principalName);
086    
087        /**
088         * get the selected reason codes from the list displayed to the user
089         * 
090         * @param principalName
091         * @return
092         */
093        public String getSelectedReasonCodes(String principalName);
094    
095        /**
096         * get a budget construction administrative post
097         * 
098         * @param appointmentFundingEntry
099         * @return
100         */
101        public BudgetConstructionAdministrativePost getBudgetConstructionAdministrativePost(PendingBudgetConstructionAppointmentFunding appointmentFundingEntry);
102    
103        /**
104         * get a budget construction position for an appointment funding
105         * 
106         * @param universityFiscalYear
107         * @param appointmentFundingEntry
108         * @return
109         */
110        public BudgetConstructionPosition getBudgetConstructionPosition(Integer universityFiscalYear, PendingBudgetConstructionAppointmentFunding appointmentFundingEntry);
111    
112        /**
113         * get a budget construction intended incumbent for an appointment funding
114         * 
115         * @param appointmentFundingEntry
116         * @return
117         */
118        public BudgetConstructionIntendedIncumbent getBudgetConstructionIntendedIncumbent(PendingBudgetConstructionAppointmentFunding appointmentFundingEntry);
119    
120        /**
121         * gets the budget construction appointment fundings for an object dump
122         * 
123         * @param universityFiscalYear
124         * @param budgetConstructionObjectDump
125         * @return
126         */
127        public Collection<PendingBudgetConstructionAppointmentFunding> getPendingBudgetConstructionAppointmentFundingList(Integer universityFiscalYear, BudgetConstructionObjectDump budgetConstructionObjectDump);
128    
129        /**
130         * gets a budget construction salary ssn for salary funding
131         * 
132         * @param principalName
133         * @param salaryFunding
134         * @return
135         */
136        public BudgetConstructionSalarySocialSecurityNumber getBudgetConstructionSalarySocialSecurityNumber(String principalName, BudgetConstructionSalaryFunding salaryFunding);
137    
138        /**
139         * gets salary funding from temporary storage for a specific user
140         * 
141         * @param principalName
142         * @param emplid
143         * @return
144         */
145        public Collection<BudgetConstructionSalaryFunding> getSalaryFunding(String principalName, String emplid);
146    }