11.5. Ein Diagramm erstellen

11.5.1. Script für ein Tortendiagramm
11.5.2. Pie Chart Report Template
11.5.3. Bilder einbinden
11.5.4. Eine Layout-Vorlage für Excel erzeugen

Berichte können durch ein Diagramm mit einer grafischen Darstellung der abgerufenen Daten erweitert werden. Die Daten für diese Diagramme werden ebenfalls durch das Berichts-Skript aufbereitet und im Kontext gespeichert. Die Layout-Vorlage übergibt die Daten an die Diagrammkomponente von SeamPDF. In diesem Abschnitt wird gezeigt, wie ein Tortendiagramm wie in Abbildung 11.7, „Ein Beispiel für ein Tortendiagramm“ erstellt wird.

Ein Beispiel für ein Tortendiagramm

Abbildung 11.7. Ein Beispiel für ein Tortendiagramm


11.5.1. Script für ein Tortendiagramm

Das Berichts-Skript wird nicht nur zum Abrufen der Daten verwendet, sondern auch zum Aufbereiten der Daten für die Layout-Vorlage. Der folgende Code-Ausschnitt zeigt, wie die Daten für ein Tortendiagramm aufbereitet werden. Für jeden möglichen Ergebnistyp wird ein leeres List-Objekt erstellt. Dann werden die zuvor abgerufenen de.verit.klaros.core.model.KlarosTestCaseResult-Objekte je nach ihrem Ergebnistyp zu einer der Listen hinzugefügt. Auf diese Listen kann dann später aus dem Kontext heraus über den entsprechenden Schlüssel zugegriffen werden.

  List<KlarosTestCaseResult> error = new ArrayList<KlarosTestCaseResult>();
  List<KlarosTestCaseResult> failure = new ArrayList<KlarosTestCaseResult>();
  List<KlarosTestCaseResult> success = new ArrayList<KlarosTestCaseResult>();
  // Iterate over the results and retrieve the status
  Iterator<KlarosTestCaseResult> iter = (Iterator<KlarosTestCaseResult>) tcr.iterator();
  while (iter.hasNext()) {
    KlarosTestCaseResult result = iter.next();
      if (result.isError()) error.add(result);
      else if (result.isFailure()) failure.add(result);
      else if (result.isPassed()) success.add(result);
  }
  context.add("error", error);
  context.add("failure", failure);
  context.add("success", success);

11.5.2. Pie Chart Report Template

Der folgende Code-Ausschnitt zeigt das Diagramm unter Verwendung der Daten, die durch das Berichts-Skript im vorigen Abschnitt vorbereitet wurden.

  <p:paragraph horizontalAlignment="center">
    <p:piechart title="Test Results" direction="anticlockwise" circular="true"
      startAngle="30" labelGap="0.1" labelLinkPaint="#000000" plotBackgroundPaint="#ffffff"
      labelBackgroundPaint="#ffffff" is3D="true">
      <p:series key="results">
        <p:data key="Error [#{error.size}]" value="#{error.size}" sectionPaint="#FF0A0A" />
        <p:data key="Success [#{success.size}]" value="#{success.size}" sectionPaint="#33CC00"/>
        <p:data key="Failure [#{failure.size}]" value="#{failure.size}" sectionPaint="#FFCC00"/>
      </p:series>
    </p:piechart>
  </p:paragraph>

Das Element piechart definiert die Darstellung und den Inhalt des Diagramms. Für ein Tortendiagramm ist das Element series erforderlich. Die Daten werden aus den Listen abgerufen, die zuvor vom Skript im Kontext gespeichert wurden.

  <p:data key="Error [#{error.size}]" value="#{error.size}" sectionPaint="#FF0A0A" />

Dieser Code-Ausschnitt ruft die Liste mit den Ergebnissen aus dem Kontext ab und ruft seine size() Methode auf, um die Anzahl der Testfälle zu bestimmen. Das Tortendiagramm wird dann für die drei Datenabschnitte gerendert, wie in Abbildung 11.7, „Ein Beispiel für ein Tortendiagramm“ zu sehen ist.

[Anmerkung] Anmerkung

Detaillierte Informationen zu den verschiedenen Diagrammtypen finden Sie in der SeamPDF-Dokumentation.

11.5.3. Bilder einbinden

Dieser Abschnitt zeigt, wie ein Bild in einen Bericht aufgenommen werden kann. Um für die Layout-Vorlage zugänglich zu sein, muss die Bilddatei an einem von zwei möglichen Orten gespeichert werden:

  • In einer .jar-Datei im Ordner .klaros/resources
  • Auf einem Webserver, welches über eine URL abgerufen werden kann

Wenn das Bild in einer .jar-Datei gespeichert wird, kann mit dem folgenden Code-Ausschnitt auf das Bild zugegriffen werden.

  <p:image value="images/image.png"/>

Das Attribut value definiert den Bilddateinamen und den Ordner, in dem sich das Bild innerhalb der jar-Datei befindet.

Wenn ein Bild über eine URL bereitgestellt wird, kann darauf mit dem folgenden Code-Ausschnitt zugegriffen werden.

  <p:html>
    <img src="http://www.verit.de/images/logo-klaros-160.png" />
  </p:html>

Das Attribut src definiert die URL der Bild-Datei.

11.5.4. Eine Layout-Vorlage für Excel erzeugen

Die in diesem Abschnitt vorgestellten Code-Ausschnitte zeigen, wie man eine Layout-Vorlage für Klaros-Test­management erstellt. Detaillierte Informationen finden Sie im SeamExcel Handbuch. Weitere Informationen über das Klaros-Test­management Objektmodell sind hier zu finden de.verit.klaros.core.model.

Das folgende Code-Segment zeigt den Aufbau einer Excel-Layout-Vorlage. as Element <e:workbook> enthält alle weiteren Berichtsdetails.

  <e:workbook xmlns:e="http://jboss.org/schema/seam/excel"
    xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets">
        <e:worksheet name="#{user.name}" value="#{testCases}" var="testCase">...
        </e:worksheet>
  </e:workbook>

Beachten Sie die Verwendung der de.verit.klaros.core.model.KlarosUser und der de.verit.klaros.core.model.KlarosTestCase Parameter aus dem Kontext: #{user.name} und #{testCases}.

Ein Arbeitsblatt verwendet eine Liste von Objekten, um die Zeilen und Spalten der Excel-Tabelle zu erzeugen. Diese Liste muss an das Attribut value des worksheet-Elements übergeben werden.

Im Attribut var kann der Name des aktuellen Objekts definiert werden. Zum Beispiel: Um den Testfallnamen des aktuellen Objekts innerhalb des Arbeitsblattes auszugeben, muss die Anweisung #{testCase.name} verwendet werden.

Es ist ebenfalls möglich, mehrere worksheet-Elemente in einer Vorlage zu verwenden. In diesem Beispiel verwenden wir aber nur ein einziges Arbeitsblatt mit dem Benutzernamen als Arbeitsblattname.