Библиотека JasperReports и MongoDB - PullRequest
       2

Библиотека JasperReports и MongoDB

2 голосов
/ 24 февраля 2012

Итак, вот мой исходный код:

import com.jaspersoft.mongodb.MongoDbConnection;
import com.jaspersoft.mongodb.MongoDbDataSource;
import java.io.File;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

public class Generate {

    public static void main(String[] args) throws UnknownHostException {
        try {
            // - Connexion à la base
            String mongoURI = "mongodb://localhost/test";
            MongoDbConnection connection = null;

            Map<String, Object> parameters = new HashMap<String, Object>();
            try {
                connection = new MongoDbConnection(mongoURI,null,null);
                parameters.put(MongoDbDataSource.CONNECTION, connection);
                JasperDesign jasperDesign = JRXmlLoader.load("/home/test/gocoffee.jrxml");
                JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
                File jasperFile;
                jasperFile = new File("/home/test/MongoDbReport.jasper");
                JasperCompileManager.compileReportToFile("/home/test/gocoffee.jrxml", "/home/test/MongoDbReport.jasper");
                JasperFillManager.fillReportToFile("/home/test/MongoDbReport.jasper", parameters);               
                JasperExportManager.exportReportToPdfFile("/home/test/MongoDbReport.jrprint");
            } catch(Exception e) {
            }
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
}

Монго работает.У меня есть gocoffee.jrxml в моей папке с именем «test», и когда я компилирую, я получаю BUILD SUCCESSFUL, но в моей папке «test» не появляется файл pdf.

Интересный факт: если я сделаю

System.out.print("123");

после этой строки:

JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

Не работает.

(я только что исправил эту ошибку до этой ошибки. Может быть, она связана)

Спасибо!

Ps: mdahlman, ты потрясающий

1 Ответ

1 голос
/ 25 февраля 2012

Отчет, работающий в iReport, но не работающий в вашем приложении, использующем JasperReports, вероятно, означает, что вам не хватает исполнителя запроса. Создайте jasperreports.properties (или отредактируйте существующий), убедитесь, что он находится в пути к классам, и добавьте следующую строку:

net.sf.jasperreports.query.executer.factory.MongoDbQuery=com.jaspersoft.mongodb.MongoDbQueryExecuterFactory

Примечание 1: Вы должны посмотреть на тест рабочего модуля (который использует эту идею) в источнике, который опубликован в jasperforge . Это действительно должно иметь все, что вам нужно.

Примечание 2: Недавно мы выяснили, что это сложно, поэтому мы обновили коннектор, получив копию jasperreports_extension.properties, которая выполняет ту же роль. Но затем он включается в файл коннектора .jar, так что вам не нужно об этом беспокоиться. Это будет опубликовано в ближайшее время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...