Improved corner cases error management/handling
This commit is contained in:
parent
05cf8ee1c9
commit
42e619a5b7
|
@ -1,12 +1,13 @@
|
|||
package org.gcube.common.software.analyser;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.Set;
|
||||
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.JsonNodeType;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.gcube.common.software.model.SoftwareConcept;
|
||||
import org.gcube.common.software.model.SoftwareVersion;
|
||||
|
@ -52,67 +53,93 @@ public class SoftwareConceptAnalyser {
|
|||
}
|
||||
JsonNode swVersion = objectMapper.convertValue(variables.getProperties(), JsonNode.class);
|
||||
SoftwareVersion softwareVersion = objectMapper.treeToValue(swVersion, SoftwareVersion.class);
|
||||
softwareVersion.setVariables(variables);
|
||||
// softwareVersion.setVariables(variables);
|
||||
return softwareVersion;
|
||||
}
|
||||
|
||||
public void analyse() throws Exception {
|
||||
ObjectNode concept = (ObjectNode) jsonNode.get(CONCEPT_PROPERTY_NAME);
|
||||
ObjectNode concept = (ObjectNode) jsonNode.get(CONCEPT_PROPERTY_NAME).deepCopy();
|
||||
SoftwareConcept softwareConcept = objectMapper.treeToValue(concept, SoftwareConcept.class);
|
||||
ArrayNode versions = (ArrayNode) jsonNode.get(VERSIONS_PROPERTY_NAME);
|
||||
|
||||
String name = softwareConcept.getName();
|
||||
SoftwareVersion previous = null;
|
||||
|
||||
int i = 0;
|
||||
|
||||
ArrayNode exportingVersions = objectMapper.createArrayNode();
|
||||
|
||||
for(int i=0; i<versions.size(); i++) {
|
||||
ObjectNode originalVersion = (ObjectNode) versions.get(i).deepCopy();
|
||||
exportingVersions.add(originalVersion);
|
||||
|
||||
JsonNode version = Utils.merge(concept, originalVersion);
|
||||
SoftwareVersion softwareVersion = actualize(version);
|
||||
|
||||
softwareVersion.setPrevious(previous);
|
||||
if(previous!=null) {
|
||||
previous.setNext(softwareVersion);
|
||||
try {
|
||||
for(i=0; i<versions.size(); i++) {
|
||||
ObjectNode originalVersion = (ObjectNode) versions.get(i).deepCopy();
|
||||
exportingVersions.add(originalVersion);
|
||||
|
||||
JsonNode version = Utils.merge(concept, originalVersion);
|
||||
SoftwareVersion softwareVersion = actualize(version);
|
||||
|
||||
boolean newDOI = false;
|
||||
if(softwareVersion.getDOIURL()==null) {
|
||||
newDOI = true;
|
||||
}
|
||||
|
||||
softwareVersion.setPrevious(previous);
|
||||
if(previous!=null) {
|
||||
previous.setNext(softwareVersion);
|
||||
}
|
||||
|
||||
|
||||
logger.trace("Going to process {} {} (previous version {})",
|
||||
name, softwareVersion.getVersion(),
|
||||
softwareVersion.getPrevious()!=null ? softwareVersion.getPrevious().getVersion(): null);
|
||||
|
||||
try {
|
||||
SoftwareVersionAnalyser softwareVersionAnalyser = new SoftwareVersionAnalyser(softwareVersion);
|
||||
softwareVersionAnalyser.setOriginalJson(jsonNode);
|
||||
softwareVersionAnalyser.setFirst(i==0);
|
||||
softwareVersionAnalyser.analyse();
|
||||
|
||||
previous = softwareVersion;
|
||||
}finally {
|
||||
|
||||
/* Need to export the original file with the version doi */
|
||||
if(originalVersion.has(SoftwareVersion.DOI_URL_PROPERTY_NAME)
|
||||
&& originalVersion.get(SoftwareVersion.DOI_URL_PROPERTY_NAME).getNodeType()==JsonNodeType.NULL
|
||||
&& softwareVersion.getDOIURL()!=null) {
|
||||
originalVersion.put(SoftwareVersion.DOI_URL_PROPERTY_NAME, softwareVersion.getDOIURL().toString());
|
||||
}
|
||||
|
||||
if((!originalVersion.has(SoftwareVersion.VERSION_DOI_URL_PROPERTY_NAME) || originalVersion.get(SoftwareVersion.VERSION_DOI_URL_PROPERTY_NAME).getNodeType()==JsonNodeType.NULL)
|
||||
&& softwareVersion.getVersionDOIURL()!=null) {
|
||||
originalVersion.put(SoftwareVersion.VERSION_DOI_URL_PROPERTY_NAME, softwareVersion.getVersionDOIURL().toString());
|
||||
}
|
||||
|
||||
if(newDOI) {
|
||||
URL doiURL = softwareVersion.getDOIURL();
|
||||
softwareConcept.setDOIURL(doiURL);
|
||||
concept.put(SoftwareConcept.DOI_URL_PROPERTY_NAME, doiURL.toString());
|
||||
originalVersion.put(SoftwareVersion.DOI_URL_PROPERTY_NAME, doiURL.toString());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
logger.trace("Going to process {} {} (previous version {})",
|
||||
name, softwareVersion.getVersion(),
|
||||
softwareVersion.getPrevious()!=null ? softwareVersion.getPrevious().getVersion(): null);
|
||||
|
||||
SoftwareVersionAnalyser softwareVersionAnalyser = new SoftwareVersionAnalyser(softwareVersion);
|
||||
softwareVersionAnalyser.setOriginalJson(jsonNode);
|
||||
softwareVersionAnalyser.setFirst(i==0);
|
||||
softwareVersionAnalyser.analyse();
|
||||
|
||||
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());
|
||||
} catch (Exception e) {
|
||||
for(int j=i+1; j<versions.size(); j++) {
|
||||
ObjectNode originalVersion = (ObjectNode) versions.get(j).deepCopy();
|
||||
exportingVersions.add(originalVersion);
|
||||
}
|
||||
throw e;
|
||||
}finally {
|
||||
ObjectNode toBeExported = objectMapper.createObjectNode();
|
||||
|
||||
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, toBeExported);
|
||||
|
||||
Thread.sleep(TimeUnit.SECONDS.toMillis(2));
|
||||
}
|
||||
|
||||
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, toBeExported);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,16 +10,12 @@ 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.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public class SoftwareVersionAnalyser {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(SoftwareConceptAnalyser.class);
|
||||
|
||||
protected JsonNode originalJson;
|
||||
protected SoftwareVersion softwareVersion;
|
||||
protected boolean first;
|
||||
|
|
|
@ -2,12 +2,15 @@ package org.gcube.common.software.model;
|
|||
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
import java.util.Set;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonGetter;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonSetter;
|
||||
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.common.software.utils.Utils;
|
||||
|
||||
/**
|
||||
|
@ -19,7 +22,7 @@ public class SoftwareVersion extends SoftwareConcept {
|
|||
public static final String DATE_PROPERTY_NAME = "date";
|
||||
public static final String GCUBE_RELEASE_VERSION_PROPERTY_NAME = "gcube_release_version";
|
||||
public static final String GCUBE_RELEASE_TICKET_PROPERTY_NAME = "gcube_release_ticket";
|
||||
public static final String VERISON_DOI_URL_PROPERTY_NAME = "version_doi_url";
|
||||
public static final String VERSION_DOI_URL_PROPERTY_NAME = "version_doi_url";
|
||||
|
||||
@JsonIgnore
|
||||
protected SoftwareVersion previous;
|
||||
|
@ -30,9 +33,6 @@ public class SoftwareVersion extends SoftwareConcept {
|
|||
@JsonIgnore
|
||||
protected Boolean newDeposition;
|
||||
|
||||
@JsonIgnore
|
||||
protected Variables variables;
|
||||
|
||||
@JsonProperty(VERSION_PROPERTY_NAME)
|
||||
protected String version;
|
||||
|
||||
|
@ -46,7 +46,7 @@ public class SoftwareVersion extends SoftwareConcept {
|
|||
@JsonProperty(GCUBE_RELEASE_TICKET_PROPERTY_NAME)
|
||||
protected URL gCubeReleaseTicket;
|
||||
|
||||
@JsonProperty(VERISON_DOI_URL_PROPERTY_NAME)
|
||||
@JsonProperty(VERSION_DOI_URL_PROPERTY_NAME)
|
||||
protected URL versionDOIURL;
|
||||
|
||||
|
||||
|
@ -85,15 +85,19 @@ public class SoftwareVersion extends SoftwareConcept {
|
|||
}
|
||||
|
||||
@JsonIgnore
|
||||
public Variables getVariables() {
|
||||
public Variables getVariables() throws Exception {
|
||||
ObjectMapper objectMapper = Utils.getObjectMapper();
|
||||
JsonNode jsonNode = objectMapper.valueToTree(this);
|
||||
Variables variables = objectMapper.treeToValue(jsonNode, Variables.class);
|
||||
Set<String> missingVariables = variables.parse();
|
||||
int size = missingVariables.size();
|
||||
if(size>0) {
|
||||
throw new Exception("The following variables has been used but not defined or cannot be actualised" +
|
||||
missingVariables.toArray(new String[size]).toString());
|
||||
}
|
||||
return variables;
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public void setVariables(Variables variables) {
|
||||
this.variables = variables;
|
||||
}
|
||||
|
||||
@JsonGetter(value = VERSION_PROPERTY_NAME)
|
||||
public String getVersion() {
|
||||
return version;
|
||||
|
@ -137,7 +141,7 @@ public class SoftwareVersion extends SoftwareConcept {
|
|||
this.gCubeReleaseTicket = gCubeReleaseTicket;
|
||||
}
|
||||
|
||||
@JsonGetter(VERISON_DOI_URL_PROPERTY_NAME)
|
||||
@JsonGetter(VERSION_DOI_URL_PROPERTY_NAME)
|
||||
public URL getVersionDOIURL() {
|
||||
return versionDOIURL;
|
||||
}
|
||||
|
|
|
@ -68,14 +68,14 @@ public class BibLaTeXSoftwareVersionExporter extends SoftwareVersionExporter {
|
|||
return template;
|
||||
}
|
||||
|
||||
private String getCitationID() {
|
||||
String name = softwareVersion.getName();
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
stringBuffer.append(name);
|
||||
stringBuffer.append("_");
|
||||
stringBuffer.append(softwareVersion.getVersion());
|
||||
return stringBuffer.toString();
|
||||
}
|
||||
// private String getCitationID() {
|
||||
// String name = softwareVersion.getName();
|
||||
// StringBuffer stringBuffer = new StringBuffer();
|
||||
// stringBuffer.append(name);
|
||||
// stringBuffer.append("_");
|
||||
// stringBuffer.append(softwareVersion.getVersion());
|
||||
// return stringBuffer.toString();
|
||||
// }
|
||||
|
||||
private String getAuthors(ArrayNode arrayNode) {
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
|
@ -143,7 +143,8 @@ public class BibLaTeXSoftwareVersionExporter extends SoftwareVersionExporter {
|
|||
// }
|
||||
|
||||
protected String parseTemplate(String template) throws Exception {
|
||||
String s = Utils.replaceVariable("citation_id", getCitationID(), template);
|
||||
// String s = Utils.replaceVariable("citation_id", getCitationID(), template);
|
||||
String s = template;
|
||||
s = Utils.replaceVariable("author", getAuthors(softwareVersion.getAuthors()), s);
|
||||
s = Utils.replaceVariable("keywords", getKeywords(softwareVersion.getKeywords()), s);
|
||||
|
||||
|
@ -156,6 +157,10 @@ public class BibLaTeXSoftwareVersionExporter extends SoftwareVersionExporter {
|
|||
|
||||
protected void generate() throws Exception {
|
||||
String name = softwareVersion.getName();
|
||||
if(softwareVersion.getVersionDOIURL()==null) {
|
||||
logger.info("No Version DOI URL for {} {}. It will not be exported in BibLaTex format.", name, softwareVersion.getVersion());
|
||||
return;
|
||||
}
|
||||
logger.info("Going to export {} {} in BibLaTex format.", name, softwareVersion.getVersion());
|
||||
|
||||
String template = getTemplate();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@software{{{citation_id}},
|
||||
@software{{{name}}_{{version}},
|
||||
author = {{{author}}},
|
||||
title = {{{title}}},
|
||||
abstract = {{{description}}},
|
||||
|
|
|
@ -10,7 +10,8 @@ import org.junit.Test;
|
|||
*/
|
||||
public class SoftwareConceptAnalyserTest {
|
||||
|
||||
public static final String FILENAME = "gcat-test-sandbox.json";
|
||||
// public static final String FILENAME = "gcat-test-sandbox.json";
|
||||
public static final String FILENAME = "gcat-from-scratch.json";
|
||||
|
||||
@Test
|
||||
public void testUsingTestFile() throws Exception {
|
||||
|
|
|
@ -0,0 +1,317 @@
|
|||
{
|
||||
"concept": {
|
||||
"name": "gcat",
|
||||
"group": "data-catalogue",
|
||||
"title": "MYTEST gCube Catalogue (gCat) Service {{version}}",
|
||||
"license": {
|
||||
"id": "EUPL-1.1",
|
||||
"url": "https://opensource.org/licenses/EUPL-1.1"
|
||||
},
|
||||
"keywords": ["gCube", "Catalogue", "D4Science"],
|
||||
"description": "gCube Catalogue (gCat) Service allows to publish items in the gCube Catalogue.",
|
||||
"authors": [
|
||||
{
|
||||
"affiliation": "Istituto di Scienza e Tecnologie dell'Informazione \"A. Faedo\" - CNR, Italy",
|
||||
"name": "Frosini, Luca",
|
||||
"orcid": "0000-0003-3183-2291"
|
||||
}
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"url": "https://code-repo.d4science.org/gCubeSystem/{{name}}/archive/v{{version}}.zip",
|
||||
"desired_name": "{{name}}-v{{version}}.zip"
|
||||
},
|
||||
{
|
||||
"url": "https://code-repo.d4science.org/gCubeSystem/{{name}}/archive/v{{version}}.tar.gz",
|
||||
"desired_name": "{{name}}-v{{version}}.tar.gz"
|
||||
},
|
||||
{
|
||||
"url": "https://nexus.d4science.org/nexus/service/local/repo_groups/gcube-releases-all/content/org/gcube/{{group}}/{{name}}/{{version}}/{{name}}-{{version}}.war",
|
||||
"desired_name": "{{name}}-v{{version}}.war"
|
||||
}
|
||||
],
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}",
|
||||
"doi_url": null,
|
||||
"grants": [
|
||||
{
|
||||
"id": "004260",
|
||||
"name": "DILIGENT",
|
||||
"url": "https://cordis.europa.eu/project/id/004260"
|
||||
},
|
||||
{
|
||||
"id": "212488",
|
||||
"name": "D4Science",
|
||||
"url": "https://cordis.europa.eu/project/id/212488"
|
||||
},
|
||||
{
|
||||
"id": "239019",
|
||||
"name": "D4Science-II",
|
||||
"url": "https://cordis.europa.eu/project/id/239019"
|
||||
},
|
||||
{
|
||||
"id": "283465",
|
||||
"name": "ENVRI",
|
||||
"url": "https://cordis.europa.eu/project/id/283465"
|
||||
},
|
||||
{
|
||||
"id": "283644",
|
||||
"name": "iMarine",
|
||||
"url": "https://cordis.europa.eu/project/id/283644"
|
||||
},
|
||||
{
|
||||
"id": "288754",
|
||||
"name": "EUBrazilOpenBio",
|
||||
"url": "https://cordis.europa.eu/project/id/288754"
|
||||
},
|
||||
{
|
||||
"id": "654024",
|
||||
"name": "SoBigData",
|
||||
"url": "https://cordis.europa.eu/project/id/654024"
|
||||
},
|
||||
{
|
||||
"id": "654119",
|
||||
"name": "PARTHENOS",
|
||||
"url": "https://cordis.europa.eu/project/id/654119"
|
||||
},
|
||||
{
|
||||
"id": "654142",
|
||||
"name": "EGI-Engage",
|
||||
"url": "https://cordis.europa.eu/project/id/654142"
|
||||
},
|
||||
{
|
||||
"id": "654182",
|
||||
"name": "ENVRI PLUS",
|
||||
"url": "https://cordis.europa.eu/project/id/654182"
|
||||
},
|
||||
{
|
||||
"id": "675680",
|
||||
"name": "BlueBRIDGE",
|
||||
"url": "https://cordis.europa.eu/project/id/675680"
|
||||
},
|
||||
{
|
||||
"id": "727610",
|
||||
"name": "PerformFISH",
|
||||
"url": "https://cordis.europa.eu/project/id/727610"
|
||||
},
|
||||
{
|
||||
"id": "731001",
|
||||
"name": "AGINFRA PLUS",
|
||||
"url": "https://cordis.europa.eu/project/id/731001"
|
||||
},
|
||||
{
|
||||
"id": "818194",
|
||||
"name": "DESIRA",
|
||||
"url": "https://cordis.europa.eu/project/id/818194"
|
||||
},
|
||||
{
|
||||
"id": "823914",
|
||||
"name": "ARIADNEplus",
|
||||
"url": "https://cordis.europa.eu/project/id/823914"
|
||||
},
|
||||
{
|
||||
"id": "824091",
|
||||
"name": "RISIS 2",
|
||||
"url": "https://cordis.europa.eu/project/id/824091"
|
||||
},
|
||||
{
|
||||
"id": "857650",
|
||||
"name": "EOSC-Pillar",
|
||||
"url": "https://cordis.europa.eu/project/id/857650"
|
||||
},
|
||||
{
|
||||
"id": "862409",
|
||||
"name": "Blue Cloud",
|
||||
"url": "https://cordis.europa.eu/project/id/862409"
|
||||
},
|
||||
{
|
||||
"id": "871042",
|
||||
"name": "SoBigData-PlusPlus",
|
||||
"url": "https://cordis.europa.eu/project/id/871042"
|
||||
}
|
||||
],
|
||||
"publish": "ALL",
|
||||
"export": "ALL"
|
||||
},
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"date": "2019-01-10",
|
||||
"group": "data-publishing",
|
||||
"files": [
|
||||
{
|
||||
"url": "https://nexus.d4science.org/nexus/service/local/repositories/gcube-snapshots/content/org/gcube/data-test/gcat/1.0.0-SNAPSHOT/gcat-1.0.0-20190109.172827-2.war",
|
||||
"desired_name": "{{name}}-v{{version}}.war"
|
||||
}
|
||||
],
|
||||
"gcube_release_version": null,
|
||||
"gcube_release_ticket": null,
|
||||
"version_doi_url": null,
|
||||
"code_location": null
|
||||
},
|
||||
{
|
||||
"version": "1.1.0",
|
||||
"date": "2019-02-26",
|
||||
"group": "data-publishing",
|
||||
"files": [
|
||||
{
|
||||
"url": "https://nexus.d4science.org/nexus/service/local/repo_groups/gcube-releases-all/content/org/gcube/data-publishing/gcat/1.1.0-4.13.1-177071/gcat-1.1.0-4.13.1-177071-src.zip",
|
||||
"desired_name": "{{name}}-v{{version}}.zip"
|
||||
},
|
||||
{
|
||||
"url": "https://nexus.d4science.org/nexus/service/local/repo_groups/gcube-releases-all/content/org/gcube/data-publishing/gcat/1.1.0-4.13.1-177071/gcat-1.1.0-4.13.1-177071.war",
|
||||
"desired_name": "{{name}}-v{{version}}.war"
|
||||
}
|
||||
],
|
||||
"gcube_release_version": "4.13.1",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/12988",
|
||||
"version_doi_url": null,
|
||||
"code_location": null
|
||||
},
|
||||
{
|
||||
"version": "1.2.0",
|
||||
"date": "2019-05-20",
|
||||
"group": "data-publishing",
|
||||
"files": [
|
||||
{
|
||||
"url": "https://nexus.d4science.org/nexus/service/local/repositories/gcube-snapshots/content/org/gcube/data-publishing/gcat/1.2.0-SNAPSHOT/gcat-1.2.0-20190520.132914-10.war",
|
||||
"desired_name": "{{name}}-v{{version}}.war"
|
||||
}
|
||||
],
|
||||
"gcube_release_version": null,
|
||||
"gcube_release_ticket": null,
|
||||
"version_doi_url": null,
|
||||
"code_location": null
|
||||
},
|
||||
{
|
||||
"version": "1.3.0",
|
||||
"date": "2019-06-27",
|
||||
"group": "data-publishing",
|
||||
"files": [
|
||||
{
|
||||
"url": "https://nexus.d4science.org/nexus/service/local/repo_groups/gcube-releases-all/content/org/gcube/data-publishing/gcat/1.3.0-4.14.0-179505/gcat-1.3.0-4.14.0-179505-src.zip",
|
||||
"desired_name": "{{name}}-v{{version}}.zip"
|
||||
},
|
||||
{
|
||||
"url": "https://nexus.d4science.org/nexus/service/local/repo_groups/gcube-releases-all/content/org/gcube/data-publishing/gcat/1.3.0-4.14.0-179505/gcat-1.3.0-4.14.0-179505.war",
|
||||
"desired_name": "{{name}}-v{{version}}.war"
|
||||
}
|
||||
],
|
||||
"gcube_release_version": "4.14.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/16743",
|
||||
"version_doi_url": null,
|
||||
"code_location": null
|
||||
},
|
||||
{
|
||||
"version": "1.4.0",
|
||||
"date": "2019-11-20",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "4.15.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/17294",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.1",
|
||||
"date": "2019-12-20",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "4.18.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/18335",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.2",
|
||||
"date": "2020-02-14",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "4.20.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/18507",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.3",
|
||||
"date": "2020-06-16",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "4.23.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/19322",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.4",
|
||||
"date": "2021-02-24",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "5.0.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/20648",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.5",
|
||||
"date": "2021-03-31",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "5.1.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/20920",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"date": "2021-05-04",
|
||||
"gcube_release_version": "5.2.0",
|
||||
"doi_url": null,
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.1.0",
|
||||
"date": "2022-01-27",
|
||||
"gcube_release_version": "5.7.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/21685/",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.2.0",
|
||||
"date": "2022-05-12",
|
||||
"gcube_release_version": "5.11.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/22943",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.3.0",
|
||||
"date": "2022-07-22",
|
||||
"gcube_release_version": "5.13.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/23374",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.4.0",
|
||||
"date": "2022-09-16",
|
||||
"gcube_release_version": "5.13.1",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/23650",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.4.1",
|
||||
"date": "2022-12-07",
|
||||
"gcube_release_version": "5.14.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/23885",
|
||||
"version_doi_url": null,
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
}
|
||||
],
|
||||
"publishers": {
|
||||
"ZenodoSoftwareVersionPublisher" :{
|
||||
"html_description": "<p><a href=\"https://www.gcube-system.org/\">gCube</a> Catalogue (gCat) Service allows any client to publish items in the gCube Catalogue.</p>\n\n<p><a href=\"https://www.gcube-system.org/\">gCube</a> is an open-source software toolkit used for building and operating Hybrid Data Infrastructures enabling the dynamic deployment of Virtual Research Environments, such as the <a href=\"https://www.d4science.org/\">D4Science Infrastructure</a>, by favouring the realisation of reuse-oriented policies.</p>\n\n<p><a href=\"https://www.gcube-system.org/\">gCube</a> has been used to successfully build and operate infrastructures and virtual research environments for application domains ranging from biodiversity to environmental data management and cultural heritage.</p>\n\n<p><a href=\"https://www.gcube-system.org/\">gCube</a> offers components supporting typical data management workflows including data access, curation, processing, and visualisation on a large set of data typologies ranging from primary biodiversity data to geospatial and tabular data.</p>\n\n<p><a href=\"https://www.d4science.org/\">D4Science</a> is a Hybrid Data Infrastructure combining over 500 software components and integrating data from more than 50 different data providers into a coherent and managed system of hardware, software, and data resources. The D4Science infrastructure drastically reduces the cost of ownership, maintenance, and operation thanks to the exploitation of gCube.</p>\n\n<p> </p>",
|
||||
"html_code_location": "\n\n<p>The official source code location of this software version is available at:</p>\n\n<p><a href=\"{{code_location}}\">{{code_location}}</a></p>",
|
||||
"skip_grants": ["004260"]
|
||||
}
|
||||
},
|
||||
"exporters": {
|
||||
|
||||
}
|
||||
}
|
|
@ -267,7 +267,6 @@
|
|||
{
|
||||
"version": "2.0.0",
|
||||
"date": "2021-05-04",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "5.2.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/19738",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1139069",
|
||||
|
@ -276,7 +275,6 @@
|
|||
{
|
||||
"version": "2.1.0",
|
||||
"date": "2022-01-27",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "5.7.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/21685/",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1139070",
|
||||
|
@ -285,7 +283,6 @@
|
|||
{
|
||||
"version": "2.2.0",
|
||||
"date": "2022-05-12",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "5.11.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/22943",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1139322",
|
||||
|
@ -294,7 +291,6 @@
|
|||
{
|
||||
"version": "2.3.0",
|
||||
"date": "2022-07-22",
|
||||
"group": "data-publishing",
|
||||
"gcube_release_version": "5.13.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/23374",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1139680",
|
||||
|
@ -303,7 +299,6 @@
|
|||
{
|
||||
"version": "2.4.0",
|
||||
"date": "2022-09-16",
|
||||
"group": "data-catalogue",
|
||||
"gcube_release_version": "5.13.1",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/23650",
|
||||
"version_doi_url" : "https://doi.org/10.5072/zenodo.1144798",
|
||||
|
@ -312,7 +307,6 @@
|
|||
{
|
||||
"version": "2.4.1",
|
||||
"date": "2022-12-07",
|
||||
"group": "data-catalogue",
|
||||
"gcube_release_version": "5.14.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/23885",
|
||||
"version_doi_url" : "https://doi.org/10.5072/zenodo.1144799",
|
||||
|
|
Loading…
Reference in New Issue