- package myPackage;
- import java.io.InputStream;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.Statement;
- import java.util.HashMap;
- import javax.swing.JFrame;
- import javax.swing.JOptionPane;
- import net.sf.jasperreports.engine.JRResultSetDataSource;
- import net.sf.jasperreports.engine.JasperFillManager;
- import net.sf.jasperreports.engine.JasperPrint;
- import net.sf.jasperreports.view.JasperViewer;
- public class MyReport {
- private Connection getConnection() {
- try {
- Class.forName("org.postgresql.Driver");
- return DriverManager.getConnection("jdbc:postgresql://localhost:5432/my_db", "postgres", "123456789");
- } catch (Exception ex) {
- ex.printStackTrace();
- return null;
- }
- }
- private StringBuffer getSQL() {
- StringBuffer sql = new StringBuffer();
- sql.append("select *");
- sql.append(" from sample_table");
- //
- return sql;
- }
- public void showReport() {
- try {
- String reportName = "path/to/my_report.jasper";
- //
- StringBuffer sql;
- sql = getSQL();
- String wsql = " where";
- // a filter
- if (myCombo.getSelectedIndex() > -1) {
- sql.append(wsql).append(" some_field = '").append(myCombo.getSelectedItem().toString()).append("'");
- wsql = " and";
- }
- // another filter
- if (myTextField.getText().trim().length() > 0) {
- sql.append(wsql).append(" some_other_field = '").append(myTextField.getText()).append("'");
- }
- // SQL ending
- sql.append(" order by another_field");
- Connection connection = getConnection();
- Statement stmt = connection.createStatement();
- Hashmap parameters = new HashMap(); //set the report parameters here
- JRResultSetDataSource jrrs = new JRResultSetDataSource(stmt.executeQuery(sql.toString()));
- InputStream is = this.getClass().getClassLoader().getResourceAsStream(reportName);
- JasperPrint jasperPrint = JasperFillManager.fillReport(is, parameters, jrrs);
- if (jasperPrint.getPages().size() > 0) {
- JasperViewer jv = new JasperViewer(jasperPrint, false);
- jv.setTitle("My Report");
- jv.setExtendedState(JFrame.MAXIMIZED_BOTH);
- jv.setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE);
- jv.setVisible(true);
- } else {
- JOptionPane.showMessageDialog(this, "Some message to show when the SQL returns nothing.");
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }