diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/RadioSelect.java @ 9184:dace17e26d33

code review uinfo.inundationduration
author gernotbelger
date Wed, 27 Jun 2018 14:07:02 +0200
parents 2f5052835b76
children c7e5285d434f
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/RadioSelect.java	Tue Jun 26 20:19:31 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/RadioSelect.java	Wed Jun 27 14:07:02 2018 +0200
@@ -26,14 +26,14 @@
 public abstract class RadioSelect extends DefaultState {
 
     private static final long serialVersionUID = 1L;
+    private Artifact artifact;
 
     public RadioSelect() {
 
     }
 
-    protected abstract LinkedHashMap<String, String> makeEntries(CallMeta meta, Artifact artifact); // AUSNAHMSWEISE EXPLIZITER TYP, damit gewährleistet ist,
-                                                                                                    // dass die Reihenfolge
-    // nicht verrutscht
+    protected abstract LinkedHashMap<String, String> makeEntries(CallMeta meta, Artifact artifact); // AUSNAHMSWEISE EXPLIZITER TYP, damit Reihenfolge nicht
+                                                                                                    // verrutscht
 
     @Override
     protected final String getUIProvider() {
@@ -42,6 +42,10 @@
 
     @Override
     protected Element[] createItems(final XMLUtils.ElementCreator ec, final Artifact artifact, final String name, final CallContext context) {
+
+        // REMEBER: we need it for getLabelFor later
+        this.artifact = artifact;
+
         final CallMeta meta = context.getMeta();
         final Map<String, String> entries = makeEntries(meta, artifact);
 
@@ -58,9 +62,8 @@
 
     @Override
     protected String getLabelFor(final CallContext cc, final String name, final String value, final String type) {
-        // könnte nicht davon ausgegangen werden, dass die entries immer zuerst in createItems erzeugt werden und da quasi
-        // "lazy" initialisiert werden?
-        final Map<String, String> entries = makeEntries(cc.getMeta(), null);
+        // artifacts must be set in "createItems" -> createItems has to be called first
+        final Map<String, String> entries = makeEntries(cc.getMeta(), this.artifact);
 
         final String valueToSet = entries.get(value) != null ? entries.get(value) : value;
         return super.getLabelFor(cc, name, valueToSet, type);

http://dive4elements.wald.intevation.org