diff --git a/ckan2zenodo-library/pom.xml b/ckan2zenodo-library/pom.xml
index 16532f5..c1832f2 100644
--- a/ckan2zenodo-library/pom.xml
+++ b/ckan2zenodo-library/pom.xml
@@ -15,7 +15,7 @@
${project.basedir}/distro
- https://code-repo.d4science.org/gCubeSystem/
+ https://code-repo.d4science.org/gCubeSystem/
@@ -60,6 +60,20 @@
1.14.8
+
+ com.jayway.jsonpath
+ json-path
+ 2.4.0
+
+
+
+ junit
+ junit
+ 4.11
+ test
+
+
+
diff --git a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/Transformer.java b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java
similarity index 57%
rename from ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/Transformer.java
rename to ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java
index cd92ad1..80ac6c0 100644
--- a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/Transformer.java
+++ b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java
@@ -1,5 +1,8 @@
package org.gcube.data.publishing.ckan2zenodo;
-public interface Transformer {
+public interface Ckan2Zenodo {
+
+
+
}
diff --git a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java
new file mode 100644
index 0000000..8cb3e3b
--- /dev/null
+++ b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java
@@ -0,0 +1,31 @@
+package org.gcube.data.publishing.ckan2zenodo;
+
+import java.net.MalformedURLException;
+
+import org.gcube.data.publishing.ckan2zenodo.clients.GCat;
+import org.gcube.data.publishing.ckan2zenodo.clients.Zenodo;
+import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor;
+import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
+
+public class Ckan2ZenodoImpl {
+
+
+ public static void publish(String itemName) throws MalformedURLException {
+ // looking for gcat..
+ GCat gCat=new GCat();
+ // looking for item
+ CkanItemDescriptor desc=gCat.getByID(itemName);
+
+ //transforming
+// ZenodoDeposition deposition=TransformerManager.transform(desc);
+
+ // publishing / update to zenodo
+ Zenodo z=new Zenodo(getZenodoToken());
+
+
+ }
+
+ private static final String getZenodoToken() {
+ throw new RuntimeException();
+ }
+}
diff --git a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/TransformerManager.java b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/TransformerManager.java
new file mode 100644
index 0000000..46ea5eb
--- /dev/null
+++ b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/TransformerManager.java
@@ -0,0 +1,7 @@
+package org.gcube.data.publishing.ckan2zenodo;
+
+public class TransformerManager {
+
+
+
+}
diff --git a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/GCat.java b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/GCat.java
index 5f3eedc..35811a7 100644
--- a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/GCat.java
+++ b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/GCat.java
@@ -8,16 +8,12 @@ import org.gcube.gcat.client.Item;
public class GCat {
- public CkanItemDescriptor getByID(String itemName) throws MalformedURLException {
- CkanItemDescriptor toReturn=new CkanItemDescriptor();
- toReturn.setContent(new Item().read(itemName));
- toReturn.setItemName(itemName);
-
- return toReturn;
+ public static CkanItemDescriptor getByID(String itemName) throws MalformedURLException {
+ return new CkanItemDescriptor(itemName,new Item().read(itemName));
}
- public void updateItem(CkanItemDescriptor toUpdate) throws MalformedURLException {
+ public static void updateItem(CkanItemDescriptor toUpdate) throws MalformedURLException {
new Item().update(toUpdate.getItemName(), toUpdate.getContent());
}
}
diff --git a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/Zenodo.java b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/Zenodo.java
index 2fed336..72ac452 100644
--- a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/Zenodo.java
+++ b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/Zenodo.java
@@ -20,7 +20,7 @@ public class Zenodo {
private static final String DEPOSITION_BASE_URL="deposit/depositions";
- private static final String AUTH="Authentication";
+ private static final String AUTH="Authorization";
private static final String BEARER="Bearer ";
@NonNull
@@ -50,6 +50,8 @@ public class Zenodo {
}
+
+
private static String check(Response resp) throws ZenodoException {
if(resp.getStatus()<200||resp.getStatus()>=300) {
throw new ZenodoException("RESP STATUS IS "+resp.getStatus()+". Message : "+resp.readEntity(String.class));
@@ -57,5 +59,7 @@ public class Zenodo {
return resp.readEntity(String.class);
}
-
+ public ZenodoDeposition publishOrUpdate(ZenodoDeposition d) {
+ throw new RuntimeException("Implement This");
+ }
}
diff --git a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/CkanItemDescriptor.java b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/CkanItemDescriptor.java
index a006202..d9e282d 100644
--- a/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/CkanItemDescriptor.java
+++ b/ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/CkanItemDescriptor.java
@@ -1,24 +1,46 @@
package org.gcube.data.publishing.ckan2zenodo.model;
-import lombok.Data;
+import java.util.List;
+
+import com.jayway.jsonpath.JsonPath;
+import com.jayway.jsonpath.ReadContext;
+
+import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
-@Data
+@RequiredArgsConstructor
@NoArgsConstructor
public class CkanItemDescriptor {
+ private static final String PROFILE="$.extras[?(@.key=='system:type')].value";
+
+
+
@NonNull
+ @Getter
private String itemName;
@NonNull
+ @Getter
private String content;
- public String readField(String jsonContent,String field) {
- throw new RuntimeException("Implement this");
+ @Getter(lazy=true)
+ private final ReadContext document=document();
+
+
+ private ReadContext document() {
+ return JsonPath.parse(content);
}
- public void writeField(String fieldName,String fieldValue) {
- throw new RuntimeException("Implement this");
+
+ public String getProfile() {
+ List values=getDocument().read(PROFILE);
+ return values.get(0);
}
+
+
+
+
}
diff --git a/ckan2zenodo-library/src/test/java/org/gcube/tests/GCatTests.java b/ckan2zenodo-library/src/test/java/org/gcube/tests/GCatTests.java
new file mode 100644
index 0000000..c7f5458
--- /dev/null
+++ b/ckan2zenodo-library/src/test/java/org/gcube/tests/GCatTests.java
@@ -0,0 +1,24 @@
+package org.gcube.tests;
+
+import java.net.MalformedURLException;
+
+import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
+import org.gcube.data.publishing.ckan2zenodo.clients.GCat;
+import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor;
+import org.junit.Before;
+import org.junit.Test;
+
+public class GCatTests {
+
+
+ @Test
+ public void getProfile() throws MalformedURLException {
+ TokenSetter.set("/pred4s/preprod/preVRE");
+ System.out.println(SecurityTokenProvider.instance.get());
+ CkanItemDescriptor item=GCat.getByID("sampleontable_in_prevre");
+
+
+ System.out.println(item.getProfile());
+ }
+
+}
diff --git a/ckan2zenodo-library/src/test/java/org/gcube/tests/TokenSetter.java b/ckan2zenodo-library/src/test/java/org/gcube/tests/TokenSetter.java
new file mode 100644
index 0000000..a6180d5
--- /dev/null
+++ b/ckan2zenodo-library/src/test/java/org/gcube/tests/TokenSetter.java
@@ -0,0 +1,34 @@
+package org.gcube.tests;
+
+import java.util.Properties;
+
+import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
+import org.gcube.common.scope.api.ScopeProvider;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class TokenSetter {
+
+
+
+ private static Properties props=new Properties();
+
+ static{
+ try {
+ props.load(TokenSetter.class.getResourceAsStream("/tokens.properties"));
+ } catch (Exception e) {
+ throw new RuntimeException("YOU NEED TO SET TOKEN FILE IN CONFIGURATION");
+ }
+ }
+
+
+ public static void set(String scope){
+ if(!props.containsKey(scope)) throw new RuntimeException("No token found for scope : "+scope);
+ SecurityTokenProvider.instance.set(props.getProperty(scope));
+ ScopeProvider.instance.set(scope);
+ }
+
+
+
+}
diff --git a/ckan2zenodo-library/src/test/java/org/gcube/tests/ZenodoTests.java b/ckan2zenodo-library/src/test/java/org/gcube/tests/ZenodoTests.java
new file mode 100644
index 0000000..d11f748
--- /dev/null
+++ b/ckan2zenodo-library/src/test/java/org/gcube/tests/ZenodoTests.java
@@ -0,0 +1,20 @@
+package org.gcube.tests;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import org.gcube.data.publishing.ckan2zenodo.clients.Zenodo;
+import org.gcube.data.publishing.ckan2zenodo.model.faults.ZenodoException;
+import org.junit.Test;
+
+public class ZenodoTests {
+
+ @Test
+ public void readFromZenodo() throws IOException, ZenodoException {
+ String key=Files.readAllLines(Paths.get("/home/fabio/workspaces/zenodo.key")).get(0);
+
+ System.out.println(new Zenodo(key).readDeposition("10"));
+ }
+
+}