Jasper API in Java

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;

import com.mellon.jasper.reporting.properties.PropertiesManager;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRCsvDataSource;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;

public class JasperCommand {

PropertiesManager pm = new PropertiesManager();

public void generateJasperReport(String reportOutputLocation, String templateName ,
String inputDataFile, String reportOutputFormat, Map parameterMap) throws Exception {


String jasperTemplate = abc.jasper;
String mergeDatafile = data.txt;


if(reportOutputFormat.equalsIgnoreCase("PDF")){
System.out.println("PDF format Execution - START");
generatePDFOutput(jasperTemplate, mergeDatafile, reportOutputLocation, parameterMap);
System.out.println("PDF format Execution - END");
}else if (reportOutputFormat.equalsIgnoreCase("NTV")){
System.out.println("NTV format Execution - START");
generateNativeOutput(jasperTemplate, mergeDatafile, parameterMap);
System.out.println("NTV format Execution - END");
}else if (reportOutputFormat.equalsIgnoreCase("XLS")){
generateXLSOutput(jasperTemplate, mergeDatafile, reportOutputLocation);
}else if (reportOutputFormat.equalsIgnoreCase("CSV")){
generateCSVOutput(jasperTemplate, mergeDatafile, reportOutputLocation);
}else if (reportOutputFormat.equalsIgnoreCase("XML")){
generateXMLOutput(jasperTemplate, mergeDatafile, reportOutputLocation);
}else if (reportOutputFormat.equalsIgnoreCase("HTML")){
generateHTMLOutput(jasperTemplate, mergeDatafile, reportOutputLocation);
}
}

protected JRCsvDataSource getDataSource(String inputDataFile) throws JRException, ClassNotFoundException {

JRCsvDataSource ds = new JRCsvDataSource(
JRLoader.getLocationInputStream(inputDataFile));

ds.setRecordDelimiter("\r\n");
ds.setUseFirstRowAsHeader(true);
//ds.setDatePattern("MM dd yyyy HH mm ss");

DateFormat dt = new SimpleDateFormat("MM dd yyyy hh mm ss");
        ds.setDateFormat(dt);

return ds;
}

@SuppressWarnings("unchecked")
protected void generatePDFOutput(String jasperTemplate ,
String inputDataFile, String reportOutputLocation, Map parameterMap) throws Exception {

JRCsvDataSource datasource = new JRCsvDataSource(inputDataFile);
datasource.setDatePattern("MM dd yyyy HH mm ss");

String jasperPrint = JasperFillManager.fillReportToFile(jasperTemplate,
parameterMap, getDataSource(inputDataFile));

JasperExportManager.exportReportToPdfFile(jasperPrint,
reportOutputLocation);
}

@SuppressWarnings("unchecked")
protected void generateNativeOutput (String jasperTemplate , String inputDataFile,
Map parameterMap) throws Exception {

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperTemplate,
parameterMap, getDataSource(inputDataFile));
JasperViewer.viewReport(jasperPrint);
}

protected void generateXLSOutput(String jasperTemplate,
String inputDataFile, String reportOutputLocation) throws Exception {

Map<String, Object> parameters = new HashMap<String, Object>();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperTemplate,
parameters, getDataSource(inputDataFile));

ByteArrayOutputStream output = new ByteArrayOutputStream();
   OutputStream outputfile= new FileOutputStream(new File(reportOutputLocation));

JRXlsExporter exporterXLS = new JRXlsExporter();  
    exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
    exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, output);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
    exporterXLS.exportReport();
    outputfile.write(output.toByteArray());
}

protected void generateHTMLOutput(String jasperTemplate,
String inputDataFile, String reportOutputLocation) throws Exception {

Map<String, Object> parameters = new HashMap<String, Object>();
String jasperPrint = JasperFillManager.fillReportToFile(jasperTemplate,
parameters, getDataSource(inputDataFile));
JasperExportManager.exportReportToHtmlFile(jasperPrint,
reportOutputLocation);
}

protected void generateCSVOutput(String jasperTemplate,
String inputDataFile, String reportOutputLocation) throws Exception {

Map<String, Object> parameters = new HashMap<String, Object>();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperTemplate,
parameters, getDataSource(inputDataFile));

ByteArrayOutputStream output = new ByteArrayOutputStream();
   OutputStream outputfile= new FileOutputStream(new File(reportOutputLocation));

JRCsvExporter exporter = new JRCsvExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, output);

exporter.exportReport();
outputfile.write(output.toByteArray());
}

protected void generateXMLOutput(String jasperTemplate,
String inputDataFile, String reportOutputLocation)  throws Exception{
Boolean isEmbeddingImages = false;
Map<String, Object> parameters = new HashMap<String, Object>();
String jasperPrint = JasperFillManager.fillReportToFile(jasperTemplate,
parameters, getDataSource(inputDataFile));
JasperExportManager.exportReportToXmlFile(jasperPrint, reportOutputLocation, isEmbeddingImages);
  }
}