Dieser Artikel beschreibt wie die Kettle Penthao PDI eingerichtet werden muss um mit einem SAP System per RFC zu kommunizieren. Weiterhin wird ein kurzer Blick auf die Vorgehensweise von Kettle bei der Informationsbeschaffung der Übergabeparameter und deren Typen gerichtet. Die Einrichtung erfolgt am Beispiel einer Windows 10 64-Bit Version.
Schritt 1: Kettle Pentaho PDI downloaden und entpacken
Schritt 2: In den Umgebungsvariablen von Windows sollten die Variablen JAVA_HOME und PENTAHO_JAVA gesetzt sein. Beide müssen auf das Verzeichniss des Java Runtime Enviroments (JRE) zeigen.
Beispiel:
JAVA_HOME = c:\Programm Files\Java\jre8
PENTAHO_JAVA = c:\Programm Files\Java\jre8
Es sollte die Java Installation genutzt werden, die zu dem Betriebssystem passt z.B. 64 Java Version zum 64 Bit Betriebssystem.
Schritt 3: Für die Kommunikation von Kettle mit dem SAP System wird der SAP Java Connector (JCo) benötigt. Dieser kann bei SAP heruntergeladen werden. Voraussetzung ist ein SAP Service Marketplace Zugang, den viele SAP Kunden besitzen. Es sollte auf die rfichtige Betriebssystem Version geachtet werden. Für das o.g. Beispiel wird die Windows 64 Bit Version benötigt. Es sollte immer die version des Betriebssystems gewählt werden, da Kettle sich automatich per Batch Datei auf das richtige System einstellt.
Der JCo wird in einer ZIP Datei geliefert. Diese muss entpackt werden um vier Dateien daraus zu kopieren. Diese sind:
sapjco3.dll
sapjco3.jar
sapjco3.pdb
sapjcomanifest.mf
Schritt 4: Dateien in das lib Verzeichniss kopieren. Die im Schritt 3 heruntergeladenen Dateien müssen in daslib Verzeichniss der Kettle Installation kopiert werden.
Schritt 5: Verbindung einrichten und testen
Verbindungsaufbau und laden von Funktionsbausteinen
Wenn Kettle nach einem Funktionsbausein sucht und dessen Parameter anzeigen möchte werden folgende Funktionsbausteine im Hintergurnd aufgerufen:
RFCPING
RFC_GET_FUNCTION_INTERFACE
DDIF_FIELDINFO_GET
RFC_FUNCTION_SEARCH
RFC_GET_NAMETAB
Falls irgendwas nicht richtig läfut kann das externe Debugging im SAP einschaltet werden um einen externen Breakpoint zu setzen. Anschließen können im Debug Modus Eingabe und Ausgabeparemeter der jeweiligen Funktionsbausteine überprüft werden. Oft ist die Stelle an der die Exception oder der Fehelr auftritt aussagekräftiger als die Fehlermeldung selbst. Ein Beispiel hierfür ist der Fehler TABLE_NOT_ACTIVE, welcher hier beschrieben wird.
Buzzwords: Penthao, Kettle, Spoon, SAP, JCo
Java Dingsda
HowTos, HandsOn- und sonstige Tutorials rund um Eclipse RCP Entwicklung und Java.
Donnerstag, 3. August 2017
Donnerstag, 17. Oktober 2013
Eclipse RCP - Heapspace vergrößern
Version: Eclipse 3.7 Helios
Problembeschreibung: Heapspace einer Eclipse RCP oder eine normalen Java Anwendung vergrößern. Es soll sowohl der minimale Speicherverbrauch als auch der Maximale geändert/vergößert werden.
Fallunterscheidung: Applikationsstart aus der Entwicklungsumgebung oder Applikationsstart durch Aufruf einer Executable ("appName.exe") oder von der Kommandozeile aus.
Entwicklungsumgebung
Diese Einstellung bewirkt, dass Java Projekte und im speziellen Eclipse RCP Projekte mit gewünschtem minimal und maximal Speicher aus der Entwiclungsumgebung gestartet werden.
Vorgehensweise
Schritt 1.
Erzeuge ein Eclipse RCP Projekt oder ein Java Projekt.
Schritt 2.
Rechtsklick auf das Projekt. Im Kontextmenü "Run As" und anschließend "Run Configurations..." auswählen. Siehe Bild 1.
Schritt 3.
Den Reiter "Arguments" wie in Bild 2 für die gewünschte Konfiguration öffenen. Punkt 1 im Bild muss ausgewählt werden für eine Eclipse RCP Applikation, Punkt 2 entsprechend für eine normales Java Projekt.
Die Textbox "VM arguments" sollte dan folgende zwei Argumente besitzen -Xms40m und -Xmx512m. Xms gibt dabei den minimalen Heapspeicher an und Xmx den maximalen. Hier im Beispiel erfolgen die Angaben in Megabyte, da jeweils immer ein 'm' angegeben ist. Es sind ebenfalls Angaben in Kilobyte mit 'k' und in Gigabyte mit 'g' möglich. Ob Gros- oder Kleinbuchstaben bei der Gößenangebe benutzt werden spielt keine Rolle. Es ist deshalb -Xmx512m gleichwertig mit -Xmx512M
Applikationssstart über die Kommandozeile (in Windows cmd.exe)
Beim Starten einer Applikation von der Kommandozeile werden die Argumente in den Java interpreter Aufruf übergeben. In Bild 3 sehen wir ein Beispielaufruf der test.jar.
Applikationssstart durch eine Executable
Wird eine Eclipse RCP exportiert und dadurch ohne die Entwicklungsumgebung lauffähig gemacht, dann müssen die beiden Paremeter -Xms und -Xmx in der Product Configuration im Reiter Launching eingetragen werden. Dies ist in Bild 4 zu sehen.
Quellen:
http://javarevisited.blogspot.de/2011/11/hotspot-jvm-options-java-examples.html
Problembeschreibung: Heapspace einer Eclipse RCP oder eine normalen Java Anwendung vergrößern. Es soll sowohl der minimale Speicherverbrauch als auch der Maximale geändert/vergößert werden.
Fallunterscheidung: Applikationsstart aus der Entwicklungsumgebung oder Applikationsstart durch Aufruf einer Executable ("appName.exe") oder von der Kommandozeile aus.
Entwicklungsumgebung
Diese Einstellung bewirkt, dass Java Projekte und im speziellen Eclipse RCP Projekte mit gewünschtem minimal und maximal Speicher aus der Entwiclungsumgebung gestartet werden.
Vorgehensweise
Schritt 1.
Erzeuge ein Eclipse RCP Projekt oder ein Java Projekt.
Schritt 2.
Rechtsklick auf das Projekt. Im Kontextmenü "Run As" und anschließend "Run Configurations..." auswählen. Siehe Bild 1.
![]() |
Bild 1 |
Schritt 3.
Den Reiter "Arguments" wie in Bild 2 für die gewünschte Konfiguration öffenen. Punkt 1 im Bild muss ausgewählt werden für eine Eclipse RCP Applikation, Punkt 2 entsprechend für eine normales Java Projekt.
![]() |
Bild 2 |
Die Textbox "VM arguments" sollte dan folgende zwei Argumente besitzen -Xms40m und -Xmx512m. Xms gibt dabei den minimalen Heapspeicher an und Xmx den maximalen. Hier im Beispiel erfolgen die Angaben in Megabyte, da jeweils immer ein 'm' angegeben ist. Es sind ebenfalls Angaben in Kilobyte mit 'k' und in Gigabyte mit 'g' möglich. Ob Gros- oder Kleinbuchstaben bei der Gößenangebe benutzt werden spielt keine Rolle. Es ist deshalb -Xmx512m gleichwertig mit -Xmx512M
Applikationssstart über die Kommandozeile (in Windows cmd.exe)
Beim Starten einer Applikation von der Kommandozeile werden die Argumente in den Java interpreter Aufruf übergeben. In Bild 3 sehen wir ein Beispielaufruf der test.jar.
Bild 3 |
Applikationssstart durch eine Executable
Wird eine Eclipse RCP exportiert und dadurch ohne die Entwicklungsumgebung lauffähig gemacht, dann müssen die beiden Paremeter -Xms und -Xmx in der Product Configuration im Reiter Launching eingetragen werden. Dies ist in Bild 4 zu sehen.
Bild 4 |
http://javarevisited.blogspot.de/2011/11/hotspot-jvm-options-java-examples.html
Dienstag, 10. September 2013
Java - aus currentTimeMillis in formatierten Datum Srting
Aufgabe:
Erzeuge aus der Milisekundenangabe des Systems
Lösung:
Erzeuge aus der Milisekundenangabe des Systems
(long java.lang.System.currentTimeMillis() )
einen Formatierten Datum String in der Form YYYYMMDD wobei YYYY = Jahr, MM = Monat, DD = Tag. Beispiele 20130213, 19990131, usw. Lösung:
String formatedDate = new SimpleDateFormat("yyyyMMdd")
.format(new Date(System.currentTimeMillis());
Donnerstag, 21. März 2013
Eclipse RCP E4 - Erste Anwendung
Aufgabe: Erste RCP E4 Applikation erstellen. Es handels sich hierbei um ein generiertes Eclipse Application Project
Schritt 1: Im Menü File->New->Other... auswählen. Anschließend wie im Bild zu sehen Eclipse 4 Application Project auswählen. und Anschließend mit Next bestätigen
Schritt 2: Projektnamen unter ID eingeben und mit Next bestätigen.
Schritt 3: Mit Finish Projekt erzeugen
Schritt 4: Das Projekt wird gestartet durch einen Klick auf Launch an Eclipse application (Abblidung 5) in der Product Overview (Abbildung 4)
Fehlerbehebung: Sollten beim Ausführen Fehler auftreten (wie in Abbildung 6 und Listing 1 gezeigt), könnte der unten beschriebene Schritt helfen diese zu beheben.
Listing 1
Fehlerursache 1: Unter Product Dependencies fehlen Plugins, die über den Button Add Required Plug-ins hinzugefügt werden können.
Das Plugin selbst (im Beispiel ist es com.blogspot.javadingsda.firste4) muss ebenfalls vorhanden sein.
Schritt 1: Im Menü File->New->Other... auswählen. Anschließend wie im Bild zu sehen Eclipse 4 Application Project auswählen. und Anschließend mit Next bestätigen
![]() |
Abbildung 1 |
Schritt 2: Projektnamen unter ID eingeben und mit Next bestätigen.
![]() |
Abbildung 2 |
Schritt 3: Mit Finish Projekt erzeugen
![]() |
Abbildung 3 |
Schritt 4: Das Projekt wird gestartet durch einen Klick auf Launch an Eclipse application (Abblidung 5) in der Product Overview (Abbildung 4)
![]() |
Abbildung 4 |
![]() |
Abbildung 5 |
Fehlerbehebung: Sollten beim Ausführen Fehler auftreten (wie in Abbildung 6 und Listing 1 gezeigt), könnte der unten beschriebene Schritt helfen diese zu beheben.
![]() |
Abbildung 6 |
Listing 1
!SESSION 2013-03-20 22:18:54.415 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_13
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Framework arguments: -product com.blogspot.javadingsda.firste4.product
Command-line arguments: -product com.blogspot.javadingsda.firste4.product -data C:\Users\Steffi\workspace/../runtime-com.blogspot.javadingsda.firste4.product -dev file:C:/Users/Steffi/workspace/.metadata/.plugins/org.eclipse.pde.core/com.blogspot.javadingsda.firste4.product/dev.properties -os win32 -ws win32 -arch x86 -consoleLog
!ENTRY org.eclipse.equinox.app 0 0 2013-03-20 22:18:56.599
!MESSAGE Product com.blogspot.javadingsda.firste4.product could not be found.
!ENTRY org.eclipse.osgi 2 0 2013-03-20 22:18:56.663
!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
!SUBENTRY 1 org.eclipse.osgi 2 0 2013-03-20 22:18:56.663
!MESSAGE Bundle initial@reference:file:plugins/org.eclipse.e4.ui.services_0.10.3.v20130123-162658.jar was not resolved.
!SUBENTRY 2 org.eclipse.e4.ui.services 2 0 2013-03-20 22:18:56.663
!MESSAGE Missing imported package org.w3c.dom.css_2.0.0.
!SUBENTRY 1 org.eclipse.osgi 2 0 2013-03-20 22:18:56.663
!MESSAGE Bundle initial@reference:file:plugins/org.eclipse.e4.ui.css.swt.theme_0.9.4.v20130123-162658.jar was not resolved.
!SUBENTRY 2 org.eclipse.e4.ui.css.swt.theme 2 0 2013-03-20 22:18:56.663
!MESSAGE Missing imported package org.w3c.dom.css_2.0.0.
!SUBENTRY 1 org.eclipse.osgi 2 0 2013-03-20 22:18:56.663
...
!SUBENTRY 2 com.blogspot.javadingsda.firste4 2 0 2013-03-20 22:18:56.756
!MESSAGE Missing required bundle org.eclipse.e4.ui.css.core_0.10.2.
!ENTRY org.eclipse.osgi 4 0 2013-03-20 22:18:56.756
!MESSAGE Application error
!STACK 1
java.lang.RuntimeException: No application id has been found.
at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)
at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
An error has occurred. See the log file
Fehlerursache 1: Unter Product Dependencies fehlen Plugins, die über den Button Add Required Plug-ins hinzugefügt werden können.
Das Plugin selbst (im Beispiel ist es com.blogspot.javadingsda.firste4) muss ebenfalls vorhanden sein.
Samstag, 16. März 2013
Eclipse E4 Tutorial - Eclipse vorbereiten
Aufgabe: Das Plugin Eclipse E4 Tools installieren.
Schritt 1: Install Dialog aufrufen
Im Menü Help -> Install New Software... ausführen
Schritt 2: Downloadlocation hinzufüguen
Downloadlocation für Installation von Eclipse E4 Tools hinzufügen:
http://download.eclipse.org/e4/downloads/drops/R-0.12-201206131100/repository
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4fWqdu-MWlOX_SZK8KKg_sBRg5bGqNVaCP5NW-4Xb6MPpfsyjhFHwVf1Ab83hsImnmh_PylNxN7shS-udWw20hdecoF35acMnacGyexcKPNoEV5BB-QS2hSOg34nDT5k9xaEqzJOc2hY/s1600/install_tools_1.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj491a9D3qJKw1rf1sBKMVG3kJijXNqKWG1st24DmYokA9mySpr2_JqQhF746BPtl4OSTmWDxNHetvs8Dpj9j7EqkTxt6a0FpKNSq1VgLbUvXYKPZ-DxYKlPfBI-I_e1gyxpRhYc9nkA2E/s1600/install_tools_2.png)
Schritt 3: Tools auswählen
Folgendes Tool sollte installiert werden.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpMezun3Gj3C962bj_MLw85qPq7_2VcBOChBUP_ihco2Ck5HwY7Iuy-sWrcnIBSUx0628Bfg014CveAwd9jTiIoQv93k7vSDUP6vbr52Zy8yw_MARqblJ0FVtjwbr-gwl-boZZsCmN00Q/s1600/install_tools_4.png)
E4 Tools -> Eclipse E4 Tools (Incubation) auswählen und mit Next bestätigen.
Schritt 4: Lizenzbestimmungen zustimmen und weiter mit Finish
Schritt 5: Eclipse neustarten
Der Tipp dieses Tool einzusetzen wird im Eclipse E4 Tutorial von http://eclipsesource.com erwähnt.
Schritt 1: Install Dialog aufrufen
Im Menü Help -> Install New Software... ausführen
Schritt 2: Downloadlocation hinzufüguen
Downloadlocation für Installation von Eclipse E4 Tools hinzufügen:
http://download.eclipse.org/e4/downloads/drops/R-0.12-201206131100/repository
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4fWqdu-MWlOX_SZK8KKg_sBRg5bGqNVaCP5NW-4Xb6MPpfsyjhFHwVf1Ab83hsImnmh_PylNxN7shS-udWw20hdecoF35acMnacGyexcKPNoEV5BB-QS2hSOg34nDT5k9xaEqzJOc2hY/s1600/install_tools_1.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj491a9D3qJKw1rf1sBKMVG3kJijXNqKWG1st24DmYokA9mySpr2_JqQhF746BPtl4OSTmWDxNHetvs8Dpj9j7EqkTxt6a0FpKNSq1VgLbUvXYKPZ-DxYKlPfBI-I_e1gyxpRhYc9nkA2E/s1600/install_tools_2.png)
Schritt 3: Tools auswählen
Folgendes Tool sollte installiert werden.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpMezun3Gj3C962bj_MLw85qPq7_2VcBOChBUP_ihco2Ck5HwY7Iuy-sWrcnIBSUx0628Bfg014CveAwd9jTiIoQv93k7vSDUP6vbr52Zy8yw_MARqblJ0FVtjwbr-gwl-boZZsCmN00Q/s1600/install_tools_4.png)
E4 Tools -> Eclipse E4 Tools (Incubation) auswählen und mit Next bestätigen.
Schritt 4: Lizenzbestimmungen zustimmen und weiter mit Finish
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9tFk8dN2iN6SM4A_H7g7oyyRoJbBazGIX3tnTiut0MJH99fnkvE0XY4joE_wNUHxAGjDRby7Vzy-89QBsYLmmmuXBgkfVaJ03hKbDPLD1go1TTJPwLNKFosqoEgF5q9QZSOBPhsQTUuE/s1600/install_tools_6.png)
Schritt 5: Eclipse neustarten
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisTu1Fzl6NTroi6VbtiT7PUyN8Wl4eOCDKrS91Y0h8NesPd9wX3LwGcBfqVvV4lRZR6uDP-1ePytflLQn7LmnIhUZlbsSBGwW7Z5TktDMi-Gj2dP9Eec1IV11YgTLIaAxdhSqvh0xKX50/s1600/install_tools_7.png)
Der Tipp dieses Tool einzusetzen wird im Eclipse E4 Tutorial von http://eclipsesource.com erwähnt.
Montag, 14. Januar 2013
Eclipse RCP - Textboxen zur Schriftgröße unter Windows anpassen
Artikelinhalt:Anpassen von Widgets wie Textboxen (
Problembeschreibung: in Windows hat der Benutzer einer Eclipse RCP Anwendung die Möglichkeit die Schriftgröße in Standartapplikationen anzupassen. Unter Windows 7 ist dies in Systemsteuerung\Alle Systemsteuerungselemente\Anzeige möglich, indem die Textgröße auf Mittel 125% oder Größer 150% eingestellt wird. Weiterhin kann ein Benutzer auch unter Benutzerdefinierte Textgröße (DPI) festlegen die größe beliebig skalieren. Werden Widgets mit fester Größe erzeugt, so kann es vorkommen, dass ein Text im Label nicht mehr vollständig angezeigt wird.
Zu beachten ist, dass hier nicht die Schriftgröße skaliert wird, sonder die Auflösung (Anzahl der Bildpunkte oder oft auch DPI oder PPI genannt). In dieser Erkenntnis liegt auch die Lösung für das Problem.
Lösungsansatz: Mit Hilfe der
Mit folgenden zwei Zeilen kann der DPI Wert ermittelt werden.
Beispielanwendung:
Schritt 1: Erzeuge eine Eclipse RCP Applikation mit den Namen com.blogspot.javadingsda.getweindowdpiaus aus dem Template RCP Application with a view
Schritt 2: Ändere die Klasse View wie folgt ab:
org.eclipse.swt.widgets.Text
) oder Labels (org.eclipse.swt.widgets.Label
) an die Bildschirmauflösung.
Problembeschreibung: in Windows hat der Benutzer einer Eclipse RCP Anwendung die Möglichkeit die Schriftgröße in Standartapplikationen anzupassen. Unter Windows 7 ist dies in Systemsteuerung\Alle Systemsteuerungselemente\Anzeige möglich, indem die Textgröße auf Mittel 125% oder Größer 150% eingestellt wird. Weiterhin kann ein Benutzer auch unter Benutzerdefinierte Textgröße (DPI) festlegen die größe beliebig skalieren. Werden Widgets mit fester Größe erzeugt, so kann es vorkommen, dass ein Text im Label nicht mehr vollständig angezeigt wird.
Zu beachten ist, dass hier nicht die Schriftgröße skaliert wird, sonder die Auflösung (Anzahl der Bildpunkte oder oft auch DPI oder PPI genannt). In dieser Erkenntnis liegt auch die Lösung für das Problem.
Lösungsansatz: Mit Hilfe der
Toolkit
AWT Klasse ist es möglich die Bildschirmauflösung abzufragen. Unter Windows 7 ist die Textgröße von 100% gleichzusetzen mit 96 DPI. Die Textgröße von 150% entspricht dann 144 DPI. Mit folgenden zwei Zeilen kann der DPI Wert ermittelt werden.
Toolkit tk = Toolkit.getDefaultToolkit();
System.out.println("Screen resolution = " + tk.getScreenResolution());
Beispielanwendung:
Schritt 1: Erzeuge eine Eclipse RCP Applikation mit den Namen com.blogspot.javadingsda.getweindowdpiaus aus dem Template RCP Application with a view
Schritt 2: Ändere die Klasse View wie folgt ab:
package com.blogspot.javadingsda.getweindowdpi;
import java.awt.Toolkit;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.part.ViewPart;
public class View extends ViewPart {
public static final String ID =
"com.blogspot.javadingsda.getweindowdpi.view";
public void createPartControl(Composite parent) {
Toolkit tk = Toolkit.getDefaultToolkit();
int resolution = tk.getScreenResolution();
double factor = ((double)resolution) / 96;
parent.setLayout(new GridLayout(1, false));
// Text der sich der Auflösung anpasst
Text textBox = new Text(parent,SWT.BORDER);
GridData gdTextBox = new GridData();
gdTextBox.widthHint = (int)(54 * factor);
textBox.setLayoutData(gdTextBox);
textBox.setText("Teststring!");
// Text der sich nicht anpasst
Text textBox2 = new Text(parent,SWT.BORDER);
GridData gdTextBox2 = new GridData();
gdTextBox2.widthHint = 54;
textBox2.setLayoutData(gdTextBox2);
textBox2.setText("Teststring!");
}
public void setFocus() {
}
}
Schritt 3: Die Schriftgröße wie oben genannt in Windows ändern und Anwendung ausprobieren. Das obere Text Feld sollte sich anpassen, während das untere immer die gleiche Größe behält.
Mittwoch, 5. Dezember 2012
Eclipse RCP / SWT - TreeViewer Sortierreihenfolge Teil 2
Eclipse 3.7
Problem: Knoten im TreeViewer sollen sortiert werden.
Lösung: Der ViewSorter erledigt die Sortierung. In unserem Beispiel werden die Knoten alphabetisch sortiert. Im ersten Teil dieses Artikels wurde ein Beispiel vorbereitet. Im diesem Teil soll die Sortierung hinzugefügt werden.
Schritt 1: Erzeuge die Klasse
Schritt 2: In der
Schritt 3: Code ausführen!
Problem: Knoten im TreeViewer sollen sortiert werden.
Lösung: Der ViewSorter erledigt die Sortierung. In unserem Beispiel werden die Knoten alphabetisch sortiert. Im ersten Teil dieses Artikels wurde ein Beispiel vorbereitet. Im diesem Teil soll die Sortierung hinzugefügt werden.
Schritt 1: Erzeuge die Klasse
StructureViewerComparator
.
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
public class StructureViewerComparator extends ViewerComparator {
@Override
public int compare(Viewer viewer, Object e1, Object e2) {
if ((e1 instanceof MyTreeNode) && (e2 instanceof MyTreeNode)){
return e2.toString().compareTo(e1.toString());
}
return 0;
}
}
Schritt 2: In der
View
Klasse, wird in der createPartControl
Methode dem Viewer ein neuer Comparator vom Typ StructureViewerComparator
hinzugefügt.
public void createPartControl(Composite parent) {
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL);
viewer.setContentProvider(new TreeContentProvider());
viewer.setInput(new MyTreeNode(0,""));
viewer.setComparator(new StructureViewerComparator()); //Comparator hinzugefügt
}
Schritt 3: Code ausführen!
Abonnieren
Posts (Atom)