diff artifacts/src/main/java/org/dive4elements/river/artifacts/services/MetaDataService.java @ 9232:5030c46d8cb4

Implemented xpath function that selectes the 'mean year' of a fixation-artifact. Needs to provide the ArtifactDatabase to the builder implementation.
author gernotbelger
date Fri, 06 Jul 2018 13:09:54 +0200
parents 5e38e2924c07
children
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/services/MetaDataService.java	Fri Jul 06 13:09:25 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/services/MetaDataService.java	Fri Jul 06 13:09:54 2018 +0200
@@ -15,12 +15,14 @@
 import java.util.Map;
 import java.util.HashMap;
 
+import org.dive4elements.artifactdatabase.ArtifactCallContext;
+import org.dive4elements.artifactdatabase.ArtifactDatabaseImpl;
 import org.dive4elements.artifacts.Artifact;
 import org.dive4elements.artifacts.CallMeta;
 import org.dive4elements.artifacts.GlobalContext;
 import org.dive4elements.artifacts.ArtifactDatabase;
 import org.dive4elements.artifacts.ArtifactDatabaseException;
-
+import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.artifacts.common.utils.XMLUtils;
 import org.dive4elements.artifacts.common.utils.StringUtils;
 
@@ -97,8 +99,7 @@
         String parameters = XMLUtils.xpathString(
             data, XPATH_PARAMETERS, ArtifactNamespaceContext.INSTANCE);
 
-        return doService(
-            artifactId, userId, outs, parameters, globalContext);
+        return doService( artifactId, userId, outs, parameters, globalContext, callMeta);
     }
 
 
@@ -133,7 +134,8 @@
         String        userId,
         String        outsString,
         String        parameters,
-        GlobalContext globalContext
+        GlobalContext globalContext, 
+        CallMeta callMeta
     ) {
         Document result = XMLUtils.newDocument();
 
@@ -151,22 +153,19 @@
             return result;
         }
 
+        Object dbObject = (ArtifactDatabase)globalContext.get(ARTIFACT_DATA_BASE_KEY);
+        if (!(dbObject instanceof ArtifactDatabase)) {
+            log.error("Cannot find artifact database");
+            return result;
+        }
+        ArtifactDatabaseImpl db = (ArtifactDatabaseImpl)dbObject;
+        
         if (artifactId != null) {
             if (!StringUtils.checkUUID(artifactId)) {
                 log.warn("'" + artifactId + "' is not a UUID");
                 return result;
             }
 
-            Object dbObject =
-                (ArtifactDatabase)globalContext.get(ARTIFACT_DATA_BASE_KEY);
-
-            if (!(dbObject instanceof ArtifactDatabase)) {
-                log.error("Cannot find artifact database");
-                return result;
-            }
-
-            ArtifactDatabase db = (ArtifactDatabase)dbObject;
-
             Artifact artifact;
 
             try {
@@ -196,10 +195,16 @@
             ? new String [0]
             : outsString.split("\\s*,\\s*");
 
-        Recommendations rec = Recommendations.getInstance();
-        rec.recommend(
-            flysArtifact, userId, outs, data, result);
 
+        // REMARK: this is an ugly place to do it and should rather be done inside the ArtifactDatabase, from where this service is called.
+        // REMARK: at the moment we know that this is currently only used to transport the ArtifactDatabase
+        final ArtifactCallContext callContext = new ArtifactCallContext(db, CallContext.NOTHING, callMeta, null);
+            
+        final Recommendations rec = Recommendations.getInstance();
+        rec.recommend( flysArtifact, userId, outs, data, result, callContext );
+
+        callContext.postCall();
+        
         return result;
     }
 }

http://dive4elements.wald.intevation.org