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.sys.service;
017
018 import java.io.ByteArrayOutputStream;
019 import java.util.Date;
020 import java.util.Map;
021
022 /**
023 * To provide utilities that can generate reports
024 */
025 public interface ReportGenerationService {
026
027 /**
028 * generate a report as PDF file with the given file name
029 *
030 * @param reportData the data being written into the PDF report file
031 * @param template the report template full file name
032 * @param reportFileName the full name of the generated PDF file
033 */
034 public void generateReportToPdfFile(Map<String, Object> reportData, String template, String reportFileName);
035
036 /**
037 * generate a report as PDF file with the given file name
038 *
039 * @param reportData the data being written into the PDF report file
040 * @param dataSource the data source being used for the PDF report
041 * @param template the report template full file name
042 * @param reportFileName the full name of the generated PDF file
043 */
044 public void generateReportToPdfFile(Map<String, Object> reportData, Object dataSource, String template, String reportFileName);
045
046 /**
047 * generate a report as PDF file and outputs to stream
048 *
049 * @param reportData the data being written into the PDF report file
050 * @param dataSource the data source being used for the PDF report
051 * @param template the report template full file name
052 * @param reportFileName the output stream for sending back contents
053 */
054 public void generateReportToOutputStream(Map<String, Object> reportData, Object dataSource, String template, ByteArrayOutputStream baos);
055
056 /**
057 * build a full file name with the given information. The format of the file name is <absolute path><filename>_<timestamp>.<extension>
058 *
059 * @param directory the directory where the file would be located
060 * @param fileName the given file name without file extension
061 * @param extension the given file extension
062 * @param runDate the run date which is used to generate a timestamp
063 * @return a full file name built from the given information.
064 */
065 public String buildFullFileName(Date runDate, String directory, String fileName, String extension);
066 }