Standard-ResultLayer DefaultFactory
Obwohl es einige spezielle ResultLayer gibt, z.B. im oben erwähnten BDPPlugIn oder im AckerschlagFlora-Plugin, wurde für das Wasser-Plugin die Möglichkeit geschaffen, einen Result-Layer ohne komlexe Kofiguration mit Standard-Werten zu erstellen.
Die statische Methode ‚getResultLayerDefault()‘ der Klasse
…\src\de\luh\iup\manuela\util\layer\ResultLayerDefaultFactory
implementiert das abstrakte Fascade-Pattern, das er erlaubt, komplexe Inhalte hinter einer einfachen Fassade zu verbergen.

Aufruf
Java |
---------- |
ResultLayerDefaultFactory.getResultLayerDefault(
featureCollection,
context,
resultLayerName,
columnName,
select,
label);
- FeatureCollection: Die Feature Collection, die einem Layer zugrunde liegt (der optional auch bereits angezeigt werden kann), der ein Feature-Attribut enthält, das grafisch dargestellt werden soll.
- Der PlugInContext: Der Plugin-Kontext der aufrufenden Klasse.
- ResultLayerName (String): der Name des Ergebnis-Layers. Diesem wird automatisch in Klammern der kleinste Wert und der größte Wert als Orientierungshilfe hinzugefügt.
- ColumnName (String): Dies ist der Name des Attributs der FeatureCollection, das hier farblich dargestellt werden soll. Dies funktioniert mit allen numerischen Werten von Byte bis Double.
- Select (boolean): Bei ‚true‘ wird der dargestellte Layer direkt ausgewählt und dadurch auch angezeigt. ResultLayer mit ‚false‘ werden nur im linken Projekt-Menü angezeigt und erst durch das Aktivieren des Benutzers sichtbar.
- Label (boolean): Bei ‚true‘ wird der farblich dargestellte Wert zusätzlich als Zahl in der Geometrie dargestellt. Bei nicht numerischen Werten wird die String-Repräsentation des Objekts in der betreffendenen Spalte nur als Text eingeblendet (vor transparenten Features).
Verfahren
- Die Methode startet einen AWT-Thread:
- Mittels der ebenfalls statischen Methode ‚generatePercentageResultLayerLists()‘ in derselben Klasse wird ein Mapping erstellt, das 101 Wertstufen als %-Werte von 0 bis 100 enthält.
- Es wird ein ‚StructResultLayerLists‘ erzeugt, der auf der einen Seite das Mapping für den Styl (also die Farbe) für jede der 101 Stufen bzw. Keys enthält und zum anderen das Mapping für die Label (also Beschriftungen) für die 101 Keys enthält. Die Nutzung deses Structs ist sehr praktisch, da diese sicherstellt, dass nur Paare von Styl und Label unter einem Key eingefügt werden können und immer sichergestellt ist, das beide Maps Values unter den gleichen Keys beinhalten.
- Dabei beginnt die Färung der 0% mit einem grünen Farbton, der über Gelb zu Rot übergeht.
- Es wird die übergebene FeatureCollection durchgegangen und geprüft, ob eine oder mehrere Geometrys null sind und diese ggf. entfernt. Sonst kommt es zu einer Exception, die hier nicht abzufangen ist, in der OpenJump-Methode ‚…\org\openjump\core\apitools\LayerTools‘.
- Es wird der kleinste numerische Wert des Attributs der angegebenen (resultLayerName) Spalte und der größte dieser Werte ermittelt (Beliebige deser Werte können dabei auch negativ sein).
- Die statische Methode ‚generatePercentageMapping()‘ der selben Klasse erzeugt eine neue FeatureCollection, die die Werte der angegebenen Spalte (resultLayerName) auf die Wertstufen von 0 bis 100 mappt. (Die Neuerstellung ist notwendig, da das Hinzufügen einer neuen Spalte (was das Mappen fordert) bei bereits in OpenJump (als Layer) dargestellten FeatureCollections zu einer Exception führt.)
- Mit Hilfe der statischen OpenJump-Methode ‚LayerTools.addStandardResultLayer()‘ wird der Ergebnis-Layer mit Hilfe des Mappings erzeugt und direkt angezeigt.
Ergebnis
Das Ergebnis ist kein ‚Layer‘, sondern nur ein ‚StructLayer‘.
…\src\de\luh\iup\manuela\util\layer\StructLayer
Die ‚StructLayer‘-Klasse enthält nur eine Referenz auf einen Layer, der von ‚null‘ auf den erzeugten ResultLayer gesetzt wird, sobald der Thread beendet wird, wenn er seine Aufgabe erledigt hat.