Fixed empty mappings

This commit is contained in:
Fabio Sinibaldi 2020-01-23 18:03:28 +01:00
parent 40fa4bd48c
commit 57294e0a6c
7 changed files with 60 additions and 43 deletions

View File

@ -19,12 +19,22 @@ import org.gcube.data.publishing.ckan2zenodo.model.faults.TransformationExceptio
import org.gcube.data.publishing.ckan2zenodo.model.faults.ZenodoException;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Ckan2ZenodoImpl implements Ckan2Zenodo{
private Zenodo z=null;
private synchronized Zenodo getZenodo() throws ConfigurationException {
if(z==null)
z=Zenodo.get();
return z;
}
@Override
public CkanItemDescriptor read(String itemName) throws GcatException {
try{
@ -40,7 +50,7 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{
ZenodoDeposition toUpdate=null;
CkanRelatedIdentifier doi=desc.getZenodoDoi();
if(doi!=null) {
Zenodo z=Zenodo.get();
Zenodo z=getZenodo();
toUpdate=z.readDeposition(doi.getZenodoId());
}
Translator tr=new TransformerManager().getByProfile(desc.getProfile());
@ -49,17 +59,17 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{
@Override
public ZenodoDeposition updatedMetadata(ZenodoDeposition toUpdate) throws ZenodoException, ConfigurationException {
Zenodo z=Zenodo.get();
Zenodo z=getZenodo();
//initialize if not created
if(toUpdate.getSubmitted()==null) {
ZenodoDeposition created=z.createNew();
created.setMetadata(toUpdate.getMetadata());
toUpdate=created;
}
if(toUpdate.getSubmitted())
Zenodo.get().unlockPublished(toUpdate.getId());
if(toUpdate.getSubmitted()&&toUpdate.getState().equals("done"))
z.unlockPublished(toUpdate.getId());
return Zenodo.get().updateMetadata(toUpdate);
return z.updateMetadata(toUpdate);
}
@Override
@ -70,10 +80,10 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{
@Override
public Future<ZenodoDeposition> uploadFiles(Set<CkanResource> toUpload, ZenodoDeposition deposition) throws ZenodoException, ConfigurationException {
final Zenodo z=Zenodo.get();
final Zenodo z=getZenodo();
if(deposition.getSubmitted())
Zenodo.get().unlockPublished(deposition.getId());
if(deposition.getSubmitted()&&deposition.getState().equals("done"))
z.unlockPublished(deposition.getId());
Callable<ZenodoDeposition> call=new Callable<ZenodoDeposition>() {
@Override
@ -94,40 +104,20 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{
}
@Override
public ZenodoDeposition publish(ZenodoDeposition dep, CkanItemDescriptor toUpdate) throws ZenodoException, ConfigurationException, InvalidItemException, MalformedURLException {
if(dep.getSubmitted())
Zenodo.get().unlockPublished(dep.getId());
public ZenodoDeposition publish(ZenodoDeposition dep, CkanItemDescriptor toUpdate) throws ZenodoException, ConfigurationException, InvalidItemException, MalformedURLException {
Zenodo z=getZenodo();
if(dep.getSubmitted()&&dep.getState().equals("done"))
z.unlockPublished(dep.getId());
// Publishing to zenodo
ZenodoDeposition toReturn =Zenodo.get().publish(dep);
ZenodoDeposition toReturn =z.publish(dep);
// Updateing item
if(toUpdate.getZenodoDoi()==null) {
toUpdate.setZenodoDoi(CkanRelatedIdentifier.getZenodo(toReturn.getDoi()));
toUpdate.setZenodoDoi(CkanRelatedIdentifier.getZenodo(toReturn.getDOIUrl()));
GCat.updateItem(toUpdate);
}
return toReturn;
}
// public static void preview(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 ZenodoCredentials getZenodoToken() {
// throw new RuntimeException();
// }
}

View File

@ -1,6 +1,7 @@
package org.gcube.data.publishing.ckan2zenodo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -131,7 +132,13 @@ public class Translator {
break;
}
case jsonPath : {
sourceValues.addAll(sourceCtx.read(v.getValue()));
for(String s: ((Collection<? extends String>) sourceCtx.read(v.getValue()))){
if(s!=null) {
s=s.trim();
if(!s.isEmpty())sourceValues.add(s);
}
}
break;
}
}

View File

@ -1,9 +1,9 @@
package org.gcube.data.publishing.ckan2zenodo.model;
import java.net.URL;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
@Getter
@ -12,8 +12,8 @@ import lombok.ToString;
@ToString
public class CkanRelatedIdentifier {
public static CkanRelatedIdentifier getZenodo(String doi) {
return new CkanRelatedIdentifier("URL", "isReferencedBy", doi);
public static CkanRelatedIdentifier getZenodo(URL doi) {
return new CkanRelatedIdentifier("URL", "isReferencedBy", doi.toString());
}
// @NonNull

View File

@ -1,5 +1,6 @@
package org.gcube.data.publishing.ckan2zenodo.model.zenodo;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
@ -14,6 +15,7 @@ public class ZenodoDeposition {
@JsonFormat(pattern = Commons.ISO_DATE_PATTERN)
private Date created;
private String doi;
private DepositionLinks links;
private ArrayList<FileDeposition> files;
private Integer id;
private DepositionMetadata metadata;
@ -26,5 +28,11 @@ public class ZenodoDeposition {
private Boolean submitted;
private String title;
public URL getDOIUrl() throws MalformedURLException {
try {
return new URL(links.getConceptdoi());
}catch(Throwable t) {
return new URL("https://doi.org/"+doi);
}
}
}

View File

@ -2,10 +2,13 @@ package org.gcube.tests;
import java.net.MalformedURLException;
import javax.ws.rs.WebApplicationException;
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.gcube.gcat.client.Item;
import org.gcube.gcat.client.Profile;
import org.junit.Test;
public class GCatTests {
@ -20,7 +23,13 @@ public class GCatTests {
System.out.println(item.getProfile());
}
@Test
public void listProfiles() throws WebApplicationException, MalformedURLException {
TokenSetter.set("/gcube/devsec");
System.out.println(SecurityTokenProvider.instance.get());
System.out.println("PROFILES : ");
System.out.println(new Profile().list());
}
@Test
public void publishUpdate() throws MalformedURLException {

View File

@ -21,7 +21,10 @@ public class OneHitTest {
public static void main(String[] args) throws GcatException, InvalidItemException, ZenodoException, ConfigurationException, TransformationException, InterruptedException, ExecutionException, MalformedURLException {
TokenSetter.set("/gcube/devsec/devVRE");
String scope="/gcube/devsec";
// String scope="/pred4s/preprod/preVRE";
TokenSetter.set(scope);
Ckan2Zenodo client=new Ckan2ZenodoImpl();
String toPublishItemName="rasff_vizualizationhu_gif";

View File

@ -116,7 +116,7 @@ public class ZenodoTests {
}
dep=z.publish(dep);
desc.setZenodoDoi(CkanRelatedIdentifier.getZenodo(dep.getDoi()));
desc.setZenodoDoi(CkanRelatedIdentifier.getZenodo(dep.getDOIUrl()));
// Change title
String fakeTitle="Dummy Title";