diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/DataCage.java @ 963:f48cef242e7f

Datacage: recommendation mechanism now accepts nodes to append results. flys-artifacts/trunk@2382 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 20 Jul 2011 22:03:50 +0000
parents 92027887775a
children ff6ce301c472
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/DataCage.java	Wed Jul 20 20:51:13 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/DataCage.java	Wed Jul 20 22:03:50 2011 +0000
@@ -15,6 +15,7 @@
 import org.apache.log4j.Logger;
 
 import org.w3c.dom.Document;
+import org.w3c.dom.Node;
 
 import org.hibernate.Session;
 
@@ -52,23 +53,11 @@
         return builder;
     }
 
-    public Document recommend(FLYSArtifact artifact, String [] outs) {
-        return recommend(artifact, outs, null);
-    }
-
-    public Document recommend(
-        FLYSArtifact        artifact,
-        String []           outs,
-        Map<String, Object> extraParameters
+    protected static void artifactToParameters(
+        FLYSArtifact        artifact, 
+        Map<String, Object> parameters
     ) {
-        Map<String, Object> parameters = new HashMap<String, Object>();
-
-        if (extraParameters != null) {
-            parameters.putAll(extraParameters);
-        }
-
         parameters.put("current-state-id", artifact.getCurrentStateId());
-        parameters.put("artifact-outs", outs);
 
         for (StateData sd: artifact.getAllData()) {
             Object value = sd.getValue();
@@ -78,16 +67,34 @@
             String key = sd.getName().replace('.', '-');
             parameters.put(key, value);
         }
-
-        return process(parameters);
     }
 
-    public Document process(final Map<String, Object> parameters) {
-        final Document result = XMLUtils.newDocument();
+    public void  recommend(
+        FLYSArtifact        artifact,
+        String []           outs,
+        Map<String, Object> extraParameters,
+        Node                result
+    ) {
+        Map<String, Object> parameters = new HashMap<String, Object>();
 
+        if (extraParameters != null) {
+            parameters.putAll(extraParameters);
+        }
+
+        artifactToParameters(artifact, parameters);
+
+        parameters.put("artifact-outs", outs);
+
+        recommend(parameters, result);
+    }
+
+    public void recommend(
+        final Map<String, Object> parameters,
+        final Node                result
+    ) {
         if (builder != null) {
             log.error("builder not configured properly.");
-            return result;
+            return;
         }
 
         Session session = SessionHolder.HOLDER.get();
@@ -100,8 +107,6 @@
                 builder.build(connection, result, parameters);
             }
         });
-
-        return result;
     }
 
     public static synchronized DataCage getInstance() {

http://dive4elements.wald.intevation.org