Mit der JasperReports Integration kann eine mit dem JasperSoft Studio erstellte Vorlagen oder Template ausgelesen, mit Daten befüllt und anschließend angezeigt oder gespeichert werden. Ein Report besteht meist aus drei Teilen:

  1. Fields
    Fields sind gleichzusetzen mit den Attributen der Entities in RapidClipse. Sie sind wie Platzhalter für die eigentlichen Reportdaten und werden zur Laufzeit mit den jeweiligen Daten befüllt. Die Daten für die Fields werden immer in Form einer Liste an
    den Report übergeben. Dies kann eine "List / ArrayList" oder ein "Set / HashSet" typisiert auf das jeweilige Entity sein. Folgendes muss bei den Fields beachtet werden:
    1. Der Datentyp des Attributes und der des Zielfeldes müssen identisch sein
    2. Im besten Fall tragen beide den selben Namen, denn über diesen wird die Zuweisung im Report erledigt. Ist aber nicht zwingen notwendig.
    3. Fields können auch Binärdaten wie Blobs, Clobs oder Byte[] beinhalten. 

  2. Parameter
    Parameter können statische an den Report übergebene Werte wie zum Beispiel der Ersteller oder das Erstelldatum sein. Parameter können aber auch Steuerungsdaten sein welche zum Beispiel Grenzwerte definieren die dann
    entscheiden, ob andere Werte speziell markiert werden. Parameter werden als einzel Variablen, gesammelt in einer HashMap, an den Report übergeben. Folgendes muss bei den Parametern beachtet werden:
    1. Der Datentyp der Variable in Java und der des Zielparameters müssen identisch sein
    2. Im besten Fall tragen beide den selben Namen, denn über diesen wird die Zuweisung im Report erledigt. Ist aber nicht zwingen notwendig.
    3. Parameter können auch Binärdaten wie Blobs, Clobs oder Byte[] beinhalten.

  3. Static Fields
    Static Fields sind statische Beschriftungen in einem Report welche einfach nur der Beschreibung dienen.


Optionen:

Mapping Wizard



Wie sie einen Report anbinden

  1. Erstellen Sie einen Reporttemplate mit Hilfe des JasperSoftStudios. Geben Sie dazu im Quick Access rechts oben "Report Design" ein und wählen die Report Design Perspective. In dieser perspective haben Sie die Möglichkeit ein Template ähnlich eines Serienbriefes zu erstellen. Eine detailierte Beschreibung zum erstellen eines Templates finden Sie in der Dokumentation JasperSoft Studio Doku.
  2. Kopieren Sie die beiden Dateien des Templates (.jrxml und .jasper) in einen neu erstellen Ordner z.B. "Reports" innerhalb der Resources.
  3. Wählen Sie ein geeignetes Event für die Ausführung Ihres Reports aus z.B. XdevButton und platzieren Sie dort Ihren Cursor.
  4. Klicken Sie auf den Eintrag Report in der Palette. Es öffnet sich folgender Dialog.
  5. Füllen Sie die einzelnen Felder und Inhalte siehe Beschreibung zum Wizard oben.
  6. Schließen Sie den Dialog mit einem Klick auf OK ab.


Verwenden des Ergebnisses nach dem Wizard

  1. Nach dem Wizard wird folgender Code generiert:

    Report.New().jrxml("/report.jrxml")
    	.dataSource(com.xdev.dal.DAOs.get(com.company.jasperreportsdemo.dal.ProductDAO.class)
    	.getProductsOrderedByCategory())
    	.parameter("creator", "CK").parameter("created", new Date()).exportToResource(Format.Pdf());


  2. Weisen Sie einer Variable das erzeugt Statement zu
    a) Positionieren Sie nun den Cursor an das Ende des gesamten Statements also nach "exportToResource(Format.Pdf());"
    b) Drücken Sie Strg + 1 → Wählen Sie "Assing statement to new local variable (Strg+2, L)"
    c) Bestätigen Sie die Auswahl mit Enter.
    Es wird jetzt automatisch eine Variable vor dem Statement erzeugt welche die Resource entgegen nimmt.

    Resource exportToResource = Report.New().jrxml("/report.jrxml")
    	.dataSource(com.xdev.dal.DAOs.get(com.company.jasperreportsdemo.dal.ProductDAO.class)
    	.getProductsOrderedByCategory())
    	.parameter("creator", "CK").parameter("created", new Date()).exportToResource(Format.Pdf());


  3. Erstellen Sie eine Komponente, mit welcher Sie PDF-Resources anzeigen können:

    @Tag("object")
    public class EmbeddedPdfDocument extends Component implements HasSize
    {
    	public EmbeddedPdfDocument(final StreamResource pdfResource)
    	{
    		this();
    		this.getElement().setAttribute("data", pdfResource);
    	}
    
    	public EmbeddedPdfDocument(final String url)
    	{
    		this();
    		this.getElement().setAttribute("data", url);
    	}
    	
    	protected EmbeddedPdfDocument()
    	{
    		this.getElement().setAttribute("type", "application/pdf");
    		this.setSizeFull();
    	}
    }
    
    


  4. Fügen Sie dann diese Komponente zu Ihren View hinzu:

    Resource resource = Report.New().jrxml("/report.jrxml")
    	.dataSource(com.xdev.dal.DAOs.get(com.company.jasperreportsdemo.dal.ProductDAO.class)
    	.getProductsOrderedByCategory())
    	.parameter("creator", "CK").parameter("created", new Date()).exportToResource(Format.Pdf());
    
    final HtmlObject htmlPreview = new HtmlObject(resource, "application/pdf");
    htmlPreview.setSizeFull();
    
    final Dialog dialog = new Dialog(htmlPreview);
    	dialog.setWidth("900px");
    	dialog.setHeight("700px");
    	dialog.open();