diff --git a/src/main/java/org/gcube/common/software/analyser/ConfigAnalyser.java b/src/main/java/org/gcube/common/software/analyser/Analyser.java similarity index 71% rename from src/main/java/org/gcube/common/software/analyser/ConfigAnalyser.java rename to src/main/java/org/gcube/common/software/analyser/Analyser.java index 849ecb4..fb6ad9f 100644 --- a/src/main/java/org/gcube/common/software/analyser/ConfigAnalyser.java +++ b/src/main/java/org/gcube/common/software/analyser/Analyser.java @@ -1,6 +1,5 @@ package org.gcube.common.software.analyser; -import java.io.File; import java.net.URL; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -20,26 +19,40 @@ import org.slf4j.LoggerFactory; /** * @author Luca Frosini (ISTI - CNR) */ -public class ConfigAnalyser { +public class Analyser { - private static final Logger logger = LoggerFactory.getLogger(ConfigAnalyser.class); + private static final Logger logger = LoggerFactory.getLogger(Analyser.class); public static final String EXPORT_FILENAME_EXTENSION = ".json"; - public static final String GLOBAL_PROPERTY_NAME = "global"; - public static final String VERSIONS_PROPERTY_NAME = "versions"; - protected ObjectMapper objectMapper; - protected JsonNode jsonNode; - public ConfigAnalyser(File jsonFile) throws Exception { + protected ObjectNode originalGlobal; + protected ArrayNode originalVersions; + protected ArrayNode exportingVersions; + + public Analyser() throws Exception { this.objectMapper = Utils.getObjectMapper(); - this.jsonNode = objectMapper.readTree(jsonFile); } - public ConfigAnalyser(String json) throws Exception { - this.objectMapper = Utils.getObjectMapper(); - this.jsonNode = objectMapper.readTree(json); + public ObjectNode getOriginalGlobal() { + return originalGlobal; + } + + public void setOriginalGlobal(ObjectNode originalGlobal) { + this.originalGlobal = originalGlobal.deepCopy(); + } + + public ArrayNode getOriginalVersions() { + return originalVersions; + } + + public void setOriginalVersions(ArrayNode originalVersions) { + this.originalVersions = originalVersions.deepCopy(); + } + + public ArrayNode getExportingVersions() { + return exportingVersions; } protected SoftwareVersionConfig actualizeSoftwareVersionConfig(JsonNode version) throws Exception { @@ -59,32 +72,24 @@ public class ConfigAnalyser { Variables variables = objectMapper.treeToValue(node, Variables.class); variables.parse(); JsonNode sc = objectMapper.convertValue(variables.getProperties(), JsonNode.class); - GlobalConfig softwareConfig = objectMapper.treeToValue(sc, GlobalConfig.class); - return softwareConfig; + return objectMapper.treeToValue(sc, GlobalConfig.class); } public void analyse() throws Exception { - ObjectNode originalGlobal = (ObjectNode) jsonNode.get(GLOBAL_PROPERTY_NAME).deepCopy(); GlobalConfig globalConfig = actualizeGlobalConfig(originalGlobal); globalConfig.setOriginalJson(originalGlobal); - ObjectNode global = originalGlobal.deepCopy(); - global.remove(GlobalConfig.EXPORT_FILENAME_PROPERTY_NAME); - - ArrayNode versions = (ArrayNode) jsonNode.get(VERSIONS_PROPERTY_NAME); - SoftwareVersionConfig previous = null; int i = 0; - ArrayNode exportingVersions = objectMapper.createArrayNode(); + exportingVersions = objectMapper.createArrayNode(); try { - for(i=0; i additionalProperties; + protected Map properties; @JsonIgnore protected ObjectNode originalJson; public GlobalConfig() { - this.additionalProperties = new LinkedHashMap<>(); - } - - @JsonIgnore - public String getExportFileName() { - if(exportFileName==null) { - if(additionalProperties.containsKey(EXPORT_FILENAME_PROPERTY_NAME)) { - exportFileName = additionalProperties.get(EXPORT_FILENAME_PROPERTY_NAME).asText(); - }else { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); - exportFileName = simpleDateFormat.format(Calendar.getInstance().getTime()); - } - } - return exportFileName; - } - - @JsonSetter(EXPORT_FILENAME_PROPERTY_NAME) - public void setExportFileName(String exportFileName) { - this.exportFileName = exportFileName; + this.properties = new LinkedHashMap<>(); } @JsonIgnore @@ -61,18 +34,18 @@ public class GlobalConfig { } @JsonAnyGetter - public Map getAdditionalProperties() { - return additionalProperties; + public Map getProperties() { + return properties; } @JsonAnySetter - public void addAdditionalProperty(String key, JsonNode value) { - this.additionalProperties.put(key, value); + public void addProperty(String key, JsonNode value) { + this.properties.put(key, value); } @JsonIgnore - public JsonNode getAdditionalProperty(String key) { - return this.additionalProperties.get(key); + public JsonNode getProperty(String key) { + return this.properties.get(key); } } diff --git a/src/test/java/org/gcube/common/software/analyser/SoftwareConceptAnalyserTest.java b/src/test/java/org/gcube/common/software/analyser/SoftwareConceptAnalyserTest.java index fb99c5d..94444a8 100644 --- a/src/test/java/org/gcube/common/software/analyser/SoftwareConceptAnalyserTest.java +++ b/src/test/java/org/gcube/common/software/analyser/SoftwareConceptAnalyserTest.java @@ -17,8 +17,10 @@ public class SoftwareConceptAnalyserTest { @Test public void testUsingTestFile() throws Exception { File file = FileUtils.getFileFromFilename(FILENAME); - ConfigAnalyser softwareConceptAnalyser = new ConfigAnalyser(file); - softwareConceptAnalyser.analyse(); + Analyser analyser = AnalyserFactory.getAnalyser(file); + analyser.analyse(); + File exportFile = new File("exported-"+file.getName()); + AnalyserFactory.writeAnalysResultToFile(analyser, exportFile); } } diff --git a/src/test/resources/exported-gcat-from-scratch.json b/src/test/resources/exported-gcat-from-scratch.json index cd35106..8aebd27 100644 --- a/src/test/resources/exported-gcat-from-scratch.json +++ b/src/test/resources/exported-gcat-from-scratch.json @@ -149,8 +149,7 @@ "BibLaTeXSoftwareVersionExporter": { "elaboration": "ALL" } - }, - "export_filename": "{{name}}" + } }, "versions": [ diff --git a/src/test/resources/gcat-from-scratch.json b/src/test/resources/gcat-from-scratch.json index d1b7e97..6a9f816 100644 --- a/src/test/resources/gcat-from-scratch.json +++ b/src/test/resources/gcat-from-scratch.json @@ -139,8 +139,7 @@ "BibLaTeXSoftwareVersionExporter": { "elaboration": "ALL" } - }, - "export_filename": "{{name}}" + } }, "versions": [ { diff --git a/src/test/resources/gcat-test-sandbox.json b/src/test/resources/gcat-test-sandbox.json index 3d5cfa8..2cc8675 100644 --- a/src/test/resources/gcat-test-sandbox.json +++ b/src/test/resources/gcat-test-sandbox.json @@ -139,8 +139,7 @@ "BibLaTeXSoftwareVersionExporter": { "elaboration": "ALL" } - }, - "export_filename": "{{name}}" + } }, "versions": [ {