diff --git a/src/main/java/org/gcube/common/software/analyser/Analyser.java b/src/main/java/org/gcube/common/software/analyser/Analyser.java index 2ad4cfd..0a66ace 100644 --- a/src/main/java/org/gcube/common/software/analyser/Analyser.java +++ b/src/main/java/org/gcube/common/software/analyser/Analyser.java @@ -48,8 +48,8 @@ public class Analyser { return globalConfiguration; } - public void setGlobalConfiguration(ObjectNode originalGlobal) { - this.globalConfiguration = originalGlobal.deepCopy(); + public void setGlobalConfiguration(ObjectNode originalGlobalConfiguration) { + this.globalConfiguration = originalGlobalConfiguration.deepCopy(); } public ArrayNode getArtifactMetadataArray() { diff --git a/src/main/java/org/gcube/common/software/analyser/AnalyserFactory.java b/src/main/java/org/gcube/common/software/analyser/AnalyserFactory.java index a6a7fc5..a99e743 100644 --- a/src/main/java/org/gcube/common/software/analyser/AnalyserFactory.java +++ b/src/main/java/org/gcube/common/software/analyser/AnalyserFactory.java @@ -24,17 +24,34 @@ public class AnalyserFactory { return getAnalyser(jsonNode); } - public static Analyser getAnalyser(String json) throws Exception { + public static Analyser getAnalyser(String inputJson) throws Exception { ObjectMapper objectMapper = Utils.getObjectMapper(); - JsonNode jsonNode = objectMapper.readTree(json); - return getAnalyser(jsonNode); + JsonNode inputNode = objectMapper.readTree(inputJson); + return getAnalyser(inputNode); } - public static Analyser getAnalyser(JsonNode jsonNode) throws Exception { + public static Analyser getAnalyser(JsonNode inputNode) throws Exception { Analyser analyser = new Analyser(); - ObjectNode originalGlobalConfiguration = (ObjectNode) jsonNode.get(CONFIGURATION_PROPERTY_NAME); + ObjectNode originalGlobalConfiguration = (ObjectNode) inputNode.get(CONFIGURATION_PROPERTY_NAME); analyser.setGlobalConfiguration(originalGlobalConfiguration); - ArrayNode originalArtifactMetadataArray = (ArrayNode) jsonNode.get(ARTIFACTS_PROPERTY_NAME); + ArrayNode originalArtifactMetadataArray = (ArrayNode) inputNode.get(ARTIFACTS_PROPERTY_NAME); + analyser.setArtifactMetadataArray(originalArtifactMetadataArray); + return analyser; + } + + public static Analyser getAnalyser(String localConfiguration, String inputJson) throws Exception { + ObjectMapper objectMapper = Utils.getObjectMapper(); + JsonNode localConfigurationNode = objectMapper.readTree(localConfiguration); + JsonNode inputNode = objectMapper.readTree(inputJson); + return getAnalyser(localConfigurationNode, inputNode); + } + + public static Analyser getAnalyser(JsonNode localConfiguration, JsonNode inputNode) throws Exception { + Analyser analyser = new Analyser(); + ObjectNode inputConfiguration = (ObjectNode) inputNode.get(CONFIGURATION_PROPERTY_NAME); + ObjectNode mergedConfiguration = (ObjectNode) Utils.merge(localConfiguration, inputConfiguration); + analyser.setGlobalConfiguration(mergedConfiguration); + ArrayNode originalArtifactMetadataArray = (ArrayNode) inputNode.get(ARTIFACTS_PROPERTY_NAME); analyser.setArtifactMetadataArray(originalArtifactMetadataArray); return analyser; }