diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java @ 940:f4439e015278

Append artifact recommendations to the artifact's describe document. flys-artifacts/trunk@2334 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 14 Jul 2011 15:30:55 +0000
parents 9e813e9137a5
children 1b509e4cf99b
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java	Thu Jul 14 14:25:36 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java	Thu Jul 14 15:30:55 2011 +0000
@@ -23,12 +23,16 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 
+import de.intevation.artifacts.Artifact;
+import de.intevation.artifacts.ArtifactDatabase;
+import de.intevation.artifacts.ArtifactDatabaseException;
 import de.intevation.artifacts.ArtifactFactory;
 import de.intevation.artifacts.CallContext;
 
 import de.intevation.artifacts.common.ArtifactNamespaceContext;
 import de.intevation.artifacts.common.utils.XMLUtils;
 
+import de.intevation.artifactdatabase.ArtifactDatabaseImpl;
 import de.intevation.artifactdatabase.DefaultArtifact;
 import de.intevation.artifactdatabase.data.DefaultStateData;
 import de.intevation.artifactdatabase.data.StateData;
@@ -78,6 +82,9 @@
     public static final String XPATH_ADVANCE_TARGET =
         "/art:action/art:target/@art:name";
 
+    public static final String XPATH_MODEL_ARTIFACT =
+        "/art:action/art:template/@art:uuid";
+
     /** The constant string that shows that an operation was successful.*/
     public static final String OPERATION_SUCCESSFUL = "SUCCESS";
 
@@ -170,6 +177,28 @@
         List<State> states = engine.getStates(name);
 
         setCurrentState(states.get(0));
+
+        String model = XMLUtils.xpathString(
+            data,
+            XPATH_MODEL_ARTIFACT,
+            ArtifactNamespaceContext.INSTANCE);
+
+        if (model != null && model.length() > 0) {
+            ArtifactDatabase db = (ArtifactDatabase) flysContext.get(
+                ArtifactDatabaseImpl.GLOBAL_CONTEXT_KEY);
+
+            try {
+                initialize(db.getRawArtifact(model), context);
+            }
+            catch (ArtifactDatabaseException adbe) {
+                logger.error(adbe, adbe);
+            }
+        }
+    }
+
+
+    protected void initialize(Artifact artifact, Object context) {
+        // do nothing here
     }
 
 

http://dive4elements.wald.intevation.org