Fixed corner case
This commit is contained in:
parent
9c286b40f7
commit
05cf8ee1c9
|
@ -7,6 +7,7 @@ import java.util.concurrent.TimeUnit;
|
|||
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.gcube.common.software.model.SoftwareConcept;
|
||||
import org.gcube.common.software.model.SoftwareVersion;
|
||||
import org.gcube.common.software.model.Variables;
|
||||
|
@ -23,6 +24,11 @@ public class SoftwareConceptAnalyser {
|
|||
|
||||
public static final String CONCEPT_FILENAME_EXTENSION = ".json";
|
||||
|
||||
public static final String CONCEPT_PROPERTY_NAME = "concept";
|
||||
public static final String VERSIONS_PROPERTY_NAME = "versions";
|
||||
public static final String PUBLISHERS_PROPERTY_NAME = "publishers";
|
||||
public static final String EXPORTERS_PROPERTY_NAME = "exporters";
|
||||
|
||||
protected ObjectMapper objectMapper;
|
||||
protected JsonNode jsonNode;
|
||||
|
||||
|
@ -51,15 +57,20 @@ public class SoftwareConceptAnalyser {
|
|||
}
|
||||
|
||||
public void analyse() throws Exception {
|
||||
JsonNode concept = jsonNode.get("concept");
|
||||
ObjectNode concept = (ObjectNode) jsonNode.get(CONCEPT_PROPERTY_NAME);
|
||||
SoftwareConcept softwareConcept = objectMapper.treeToValue(concept, SoftwareConcept.class);
|
||||
ArrayNode versions = (ArrayNode) jsonNode.get("versions");
|
||||
ArrayNode versions = (ArrayNode) jsonNode.get(VERSIONS_PROPERTY_NAME);
|
||||
|
||||
String name = softwareConcept.getName();
|
||||
SoftwareVersion previous = null;
|
||||
|
||||
ArrayNode exportingVersions = objectMapper.createArrayNode();
|
||||
|
||||
for(int i=0; i<versions.size(); i++) {
|
||||
JsonNode version = Utils.merge(concept, versions.get(i));
|
||||
ObjectNode originalVersion = (ObjectNode) versions.get(i).deepCopy();
|
||||
exportingVersions.add(originalVersion);
|
||||
|
||||
JsonNode version = Utils.merge(concept, originalVersion);
|
||||
SoftwareVersion softwareVersion = actualize(version);
|
||||
|
||||
softwareVersion.setPrevious(previous);
|
||||
|
@ -78,12 +89,30 @@ public class SoftwareConceptAnalyser {
|
|||
|
||||
previous = softwareVersion;
|
||||
|
||||
|
||||
/* Need to export the original file with the version doi */
|
||||
if(!originalVersion.has(SoftwareVersion.VERISON_DOI_URL_PROPERTY_NAME) && softwareVersion.getVersionDOIURL()!=null) {
|
||||
originalVersion.put(SoftwareVersion.VERISON_DOI_URL_PROPERTY_NAME, softwareVersion.getVersionDOIURL().toString());
|
||||
}
|
||||
|
||||
Thread.sleep(TimeUnit.SECONDS.toMillis(2));
|
||||
}
|
||||
|
||||
logger.debug("{}", objectMapper.writeValueAsString(softwareConcept));
|
||||
ObjectNode toBeExported = objectMapper.createObjectNode();
|
||||
if(concept.get(SoftwareConcept.DOI_URL_PROPERTY_NAME)==null && exportingVersions.size()>0) {
|
||||
JsonNode originalVersion = exportingVersions.get(0);
|
||||
if(originalVersion.has(SoftwareVersion.DOI_URL_PROPERTY_NAME)) {
|
||||
concept.replace(SoftwareConcept.DOI_URL_PROPERTY_NAME, originalVersion.get(SoftwareVersion.DOI_URL_PROPERTY_NAME));
|
||||
}
|
||||
}
|
||||
toBeExported.replace(CONCEPT_PROPERTY_NAME, concept);
|
||||
toBeExported.replace(VERSIONS_PROPERTY_NAME, exportingVersions);
|
||||
toBeExported.replace(PUBLISHERS_PROPERTY_NAME, jsonNode.get(PUBLISHERS_PROPERTY_NAME).deepCopy());
|
||||
toBeExported.replace(EXPORTERS_PROPERTY_NAME, jsonNode.get(EXPORTERS_PROPERTY_NAME).deepCopy());
|
||||
|
||||
File file = new File(name+CONCEPT_FILENAME_EXTENSION);
|
||||
objectMapper.writeValue(file, softwareConcept);
|
||||
objectMapper.writeValue(file, toBeExported);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package org.gcube.common.software.analyser;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -11,7 +10,6 @@ import org.gcube.common.software.model.SoftwareVersionFile;
|
|||
import org.gcube.common.software.model.Variables;
|
||||
import org.gcube.common.software.process.export.SoftwareVersionExporter;
|
||||
import org.gcube.common.software.process.publish.SoftwareVersionPublisher;
|
||||
import org.gcube.common.software.utils.Utils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -54,7 +52,7 @@ public class SoftwareVersionAnalyser {
|
|||
svf.setDesiredName(desiredName);
|
||||
}
|
||||
|
||||
ObjectNode publishers = (ObjectNode) originalJson.get("publishers");
|
||||
ObjectNode publishers = (ObjectNode) originalJson.get(SoftwareConceptAnalyser.PUBLISHERS_PROPERTY_NAME).deepCopy();
|
||||
List<SoftwareVersionPublisher> svps = SoftwareVersionPublisher.getPublishers();
|
||||
for(SoftwareVersionPublisher svp: svps) {
|
||||
JsonNode conf = publishers.get(svp.getClass().getSimpleName());
|
||||
|
@ -64,7 +62,7 @@ public class SoftwareVersionAnalyser {
|
|||
svp.publish();
|
||||
}
|
||||
|
||||
ObjectNode exporters = (ObjectNode) originalJson.get("exporters");
|
||||
ObjectNode exporters = (ObjectNode) originalJson.get(SoftwareConceptAnalyser.EXPORTERS_PROPERTY_NAME).deepCopy();
|
||||
List<SoftwareVersionExporter> sves = SoftwareVersionExporter.getExporters();
|
||||
for(SoftwareVersionExporter sve: sves) {
|
||||
JsonNode conf = publishers.get(exporters.getClass().getSimpleName());
|
||||
|
|
Loading…
Reference in New Issue