Mercurial > dive4elements > river
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; } }