1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
import java.sql.Connection;
import java.sql.DriverManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
public class PdfExport {
/**
* Sets the database connection
*
* @param databaseType
* holds database types, only oracle, mysql and postgreSQL are supported for the moment
* @param connectionString
* holds database URL,
* @param userName
* holds user name
* @param password
* holds password to connect the database,
*
* @return Returns the JDBC connection to the database
*/
public static Connection connectDB(String databaseType,
String connectionString, String userName, String password) {
Connection jdbcConnection = null;
String driverClassName = null;
try {
if (databaseType.equals("oracle"))
driverClassName = "oracle.jdbc.driver.OracleDriver";
else if (databaseType.equals("mysql"))
driverClassName = "com.mysql.jdbc.Driver";
else if (databaseType.equals("postgresl"))
driverClassName = "org.postgresql.Driver";
else {
System.out.println("Unkown database\n avalable databases are oracle/mysql/postgresql");
System.exit(1);
}
Class.forName(driverClassName);
jdbcConnection = DriverManager.getConnection(connectionString,userName, password);
} catch (Exception ex) {
String connectMsg = "Could not connect to the database: "+ ex.getMessage() + " " + ex.getLocalizedMessage();
System.out.println(connectMsg);
}
return jdbcConnection;
}
/**
* connects to the database prepares and exports the report.
*
* @param args
* Takes 6 arguments as an input: databaseName, userName,
* password, reportFileLocation <br/>
* args[0] holds database types,only oracle, mysql and postgreSQL are supported for the moment
* args[1] holds database URL,<br/>
* args[2] holds user name<br/>
* args[3] holds password to connect the database,<br/>
* args[4] holds the location of the JasperReports compiled file (.jasper)<br/>
* args[5] holds the location of the output file
*/
public static void main(String[] args) {
if (args.length == 6) {
String databaseType = args[0];
String connectionString = args[1];
String userName = args[2];
String password = args[3];
String reportFile = args[4];
String pdfOutput = args[5];
try {
System.out.println("loading report file from "+reportFile);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile);
System.out.println("Setting up connection ...");
Connection jdbcConnection = connectDB(databaseType, connectionString, userName, password);
System.out.println("filling the report object ...");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jdbcConnection);
System.out.println("exporting report ...");
JasperExportManager.exportReportToPdfFile(jasperPrint,pdfOutput);
System.out.println("Report exported to "+pdfOutput);
System.out.println("export successfull!");
} catch (Exception e) {
String connectMsg = "Could not create the report " + e.getMessage() + " " + e.getLocalizedMessage();
System.out.println(connectMsg);
}
} else {
System.out.println("Usage:");
System.out.println("java -jar pdfExport.jar connectionString connectionString userName password reportFileLocation pdfOutput");
}
return;
}
} |
Partager