diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1f18661..7239c0f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,13 @@
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
# Changelog for org.gcube.data.publishing.ckan2zenodo-library
+## [v1.0.2] 2021-07-30
+- Introduced environemnt check [#19990](https://support.d4science.org/issues/19990)
+
+
## [v1.0.1] 2021-04-7
--Integration with gCat 2.0.0 [#20751](https://support.d4science.org/issues/20751)
+- Integration with gCat 2.0.0 [#20751](https://support.d4science.org/issues/20751)
## [v1.0.0] 2021-02-18
diff --git a/pom.xml b/pom.xml
index c234ef4..b775a62 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
org.gcube.data.publishing
ckan2zenodo-library
- 1.0.1
+ 1.0.2
CKAN 2 Zenodo Library
Library to publish d4science CKAN items into Zenodo
@@ -42,7 +42,7 @@
org.gcube.data-catalogue
gcat-client
- [2.0.0-SNAPSHOT,3.0.0)
+ [2.0.0,3.0.0)
diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java
index 67caf97..98db493 100644
--- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java
+++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java
@@ -13,6 +13,7 @@ import org.gcube.data.publishing.ckan2zenodo.model.faults.GcatException;
import org.gcube.data.publishing.ckan2zenodo.model.faults.InvalidItemException;
import org.gcube.data.publishing.ckan2zenodo.model.faults.TransformationException;
import org.gcube.data.publishing.ckan2zenodo.model.faults.ZenodoException;
+import org.gcube.data.publishing.ckan2zenodo.model.report.EnvironmentReport;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
public interface Ckan2Zenodo {
@@ -106,4 +107,6 @@ public interface Ckan2Zenodo {
*
*
*/
+
+ public EnvironmentReport checkEnvironment();
}
diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java
index 9cfd943..50bee69 100644
--- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java
+++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java
@@ -5,6 +5,7 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.Future;
+import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.data.publishing.ckan2zenodo.clients.FileUploaderManager;
import org.gcube.data.publishing.ckan2zenodo.clients.GCat;
import org.gcube.data.publishing.ckan2zenodo.clients.UploadFilesCall;
@@ -17,6 +18,8 @@ import org.gcube.data.publishing.ckan2zenodo.model.faults.GcatException;
import org.gcube.data.publishing.ckan2zenodo.model.faults.InvalidItemException;
import org.gcube.data.publishing.ckan2zenodo.model.faults.TransformationException;
import org.gcube.data.publishing.ckan2zenodo.model.faults.ZenodoException;
+import org.gcube.data.publishing.ckan2zenodo.model.report.EnvironmentReport;
+import org.gcube.data.publishing.ckan2zenodo.model.report.Status;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
import lombok.extern.slf4j.Slf4j;
@@ -109,6 +112,39 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{
return toReturn;
}
+ @Override
+ public EnvironmentReport checkEnvironment() {
+ log.info("Checking environment.. ");
+ long start=System.currentTimeMillis();
+ EnvironmentReport report=new EnvironmentReport();
+ report.setContext(ScopeProvider.instance.get());
+ // check gCat presence
+ String gCatCheck="GCat Presence : ";
+ try{
+ GCat.check();
+ gCatCheck+= "OK";
+ report.getReportItems().put(gCatCheck, Status.PASSED);
+ }catch(Throwable t){
+ gCatCheck+= "Unable to contact gCat : "+t.getMessage();
+ report.getReportItems().put(gCatCheck, Status.ERROR);
+ }
+ log.info("Checked GCat presence in "+(System.currentTimeMillis()-start)+"ms");
+
+
+ // check zenodo credentials
+ String zenodoCheck="Zenodo : ";
+ try{
+ Zenodo.get();
+ zenodoCheck+= "OK";
+ report.getReportItems().put(zenodoCheck, Status.PASSED);
+ }catch(Throwable t){
+ zenodoCheck+= "Unable to contact Zenodo : "+t.getMessage();
+ report.getReportItems().put(zenodoCheck, Status.ERROR);
+ }
+ log.info("Environment report produced in "+(System.currentTimeMillis()-start)+"ms");
+ return report;
+ }
+
@Override
public ZenodoDeposition forceTranslation(CkanItemDescriptor desc) throws InvalidItemException, ZenodoException, TransformationException {
try {
diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/GCat.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/GCat.java
index 4c30a7e..5541717 100644
--- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/GCat.java
+++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/GCat.java
@@ -73,7 +73,9 @@ public class GCat {
new Item().update(toUpdate.getName(), toUpdate.getContent());
}
-
+ public static void check() throws MalformedURLException {
+ new Item().count();
+ }
private static String getItemUrl(CkanItemDescriptor toUpdate) throws GcatException {
diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/report/EnvironmentReport.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/report/EnvironmentReport.java
new file mode 100644
index 0000000..e538a32
--- /dev/null
+++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/report/EnvironmentReport.java
@@ -0,0 +1,24 @@
+package org.gcube.data.publishing.ckan2zenodo.model.report;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Data
+public class EnvironmentReport {
+
+
+ private HashMap reportItems=new HashMap<>();
+
+ private String context;
+
+ public boolean isok(){
+ for(Map.Entry entry:reportItems.entrySet())
+ if(entry.getValue().equals(Status.ERROR)) return false;
+ return true;
+ }
+}
diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/report/Status.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/report/Status.java
new file mode 100644
index 0000000..3b68263
--- /dev/null
+++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/report/Status.java
@@ -0,0 +1,6 @@
+package org.gcube.data.publishing.ckan2zenodo.model.report;
+
+public enum Status {
+
+ ERROR,WARNING,PASSED
+}
diff --git a/src/test/java/org/gcube/tests/EnvironmentCheckTests.java b/src/test/java/org/gcube/tests/EnvironmentCheckTests.java
new file mode 100644
index 0000000..e60736c
--- /dev/null
+++ b/src/test/java/org/gcube/tests/EnvironmentCheckTests.java
@@ -0,0 +1,28 @@
+package org.gcube.tests;
+
+import org.gcube.data.publishing.ckan2zenodo.Ckan2Zenodo;
+import org.gcube.data.publishing.ckan2zenodo.Ckan2ZenodoImpl;
+import org.gcube.data.publishing.ckan2zenodo.model.report.EnvironmentReport;
+import org.junit.Assume;
+import org.junit.Test;
+
+public class EnvironmentCheckTests {
+
+ @Test
+ public void failCheckEnvironemnt(){
+ TokenSetter.set("/gcube");
+ Ckan2Zenodo client=new Ckan2ZenodoImpl();
+ EnvironmentReport report=client.checkEnvironment();
+ Assume.assumeFalse(report.isok());
+ System.out.println(report);
+ }
+
+ @Test
+ public void okCheckEnvironemnt(){
+ TokenSetter.set("/pred4s/preprod/preVRE");
+ Ckan2Zenodo client=new Ckan2ZenodoImpl();
+ EnvironmentReport report=client.checkEnvironment();
+ Assume.assumeTrue(report.isok());
+ System.out.println(report);
+ }
+}