19. Dezember 2012 | 2 min lesezeit

DGE – Gruppierung mittels Annotations

Die open knowledge DataGrid Extensions (DGE) bestehen aktuell aus zwei verschiedenen Modulen (dge-grouping und dge-filter), die uns helfen in-memory Daten über JSF Komponenten zu gruppieren und zu filtern. Der erste Blog Eintrag hat an einem Beispiel gezeigt, wie mit Hilfe von dge-filter eine Menge von Daten gefiltert werden kann. Der heutige Eintrag zeigt wie dge-grouping verwendet wird.

Unser Beispiel basiert auf einer Liste von Tieren. Als Erstes möchten wir euch zeigen wie das Resultat aussieht und anschließend gibt’s dann die Code-Snippets.

Demo

Bild 1 zeigt eine Möglichkeit dge-grouping mit JSF zu verwenden. Das Beispiel gibt’s hier zum selber ausprobieren.

Im Beispiel wird eine Liste der möglichen Gruppierungen über ein selectOneMenu angezeigt. Wird eine der Möglichkeiten ausgewählt, so wird die Tabelle mit Tieren gruppiert. In diesem Fall stehen No Selection, Species und Age zur Verfügung. Die Tabelle zeigt das Ergebnis für die Gruppierung nach Species an.

Abgesehen davon, dass die Tiere nun nach ihrer Art gruppiert sind, wurde ebenso das Alter der Tiere für die jeweilige Gruppierung aggregiert.

Soweit so gut und wenig spektakulär, darum geht’s jetzt zum Code!

Code

Wie eingangs schon angekündigt erfolgt die Gruppierung mittels Annotations. Snippet 1 zeigt: die Getter unseres Objekts, die Pet-Klasse, werden mit Annotations versehen und die Bean lässt die Daten mit Hilfe des GroupingManagers sortieren.

Mittels @Group haben wir die Getter annotiert, die später in dem selectOneMenu zur Gruppierung zur Verfügung stehen sollen. Der Parameter order definiert die Reihenfolge der Auflistung in dem selectOneMenu und über den displayName können wir den Anzeigename (ggf. auch einen I18N Key) definieren.

Mit @AggregatedValue erreichen wir, dass der GroupingManager den Rückgabewert des Getters aggregiert bereitstellt.

Pet.java

PetBean.java

Der Ausschnitt aus der PetBean-Klasse beinhaltet eine group-Methode, welche den ausgewählten Wert des selectOneMenus erwartet und diesen, nach der Initialisierung des GroupingManagers, der groupBy-Methode übergibt.

Die Initialisierung des GroupingManagers bekommt eine Liste mit Objekten und die Information, dass es sich dabei um Objekte der Pet-Klasse handelt, übergeben. Die Liste der Objekte kommt in dem Fall von der getFilteredPets()-Methode, somit können die Objekte vorher noch gefiltert werden.

Bisher gibt es die Komponenten, wie z.B. das selectOneMenu zur Gruppierung und die Ergebnis-Tabelle, leider noch nicht als fertige DGE Komponenten, daher hier noch kurz ein kleiner Einblick in das xhtml.

*.xhtml-Datei

Das vollwertige und lauffähige Beispiel findet ihr im Repository.


Keine Kommentare

Kontakt

OPEN KNOWLEDGE GmbH

Standort Oldenburg:
Poststraße 1, 26122 Oldenburg

Standort Essen:
II. Hagen 7, 45127 Essen