diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/Ckan2ZenodoViewManager.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/Ckan2ZenodoViewManager.java index b090dc6..74be84a 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/Ckan2ZenodoViewManager.java +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/Ckan2ZenodoViewManager.java @@ -180,7 +180,7 @@ public class Ckan2ZenodoViewManager { // Updating list of file for publishing List publishingFile = getListFileToPublish(); - zenodoItem.addFiles(publishingFile); + zenodoItem.setFiles(publishingFile); return zenodoItem; diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/PublishFileViewManager.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/PublishFileViewManager.java index e8592a4..b00c088 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/PublishFileViewManager.java +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/PublishFileViewManager.java @@ -7,8 +7,8 @@ import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.publishfile.Pub import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.publishfile.PublishFilesFormView; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile; +import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.HTML; public class PublishFileViewManager { @@ -48,14 +48,20 @@ public class PublishFileViewManager { public List getSelectedFileToZenodoPublishing(){ List listOfPublFilesFormView = publishFileFormView.getListOfPublishingFileView(); + GWT.log("Checking Files to publish: "+listOfPublFilesFormView); List lisFileToPublish = new ArrayList(); for (PublishFileView publishFileView : listOfPublFilesFormView) { if(publishFileView.isToPublish()) { + //THE FILE NAME SHOULD BE CHANGED BY USER, SO UPDATING IT + ZenodoFile file = publishFileView.getFile(); + if(!publishFileView.getField_file_name().getValue().isEmpty()) { + file.setFilename(publishFileView.getField_file_name().getValue()); + } lisFileToPublish.add(publishFileView.getFile()); } } - + GWT.log("List of Files to publish (with publish ON): "+lisFileToPublish); return lisFileToPublish; } diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/CkanToZenodoPublisherServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/CkanToZenodoPublisherServiceImpl.java index 3c0e6f6..a1cc1bd 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/CkanToZenodoPublisherServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/CkanToZenodoPublisherServiceImpl.java @@ -78,7 +78,10 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple for (ZenodoFile zf : zenodoItem.getFiles()) { for (CkanResource ckanResource : filteredResources) { if(zf.getId().compareTo(ckanResource.getId())==0 && zf.getIsAlreadyPublished()==false) { - toUpload.add(ckanResource); + if(CkanToZenodoUtil.isNotEmpty(zf.getFilename())) { + ckanResource.setName(zf.getFilename()); //only the filename can be changed on clien-side + toUpload.add(ckanResource); + } } } } @@ -113,7 +116,11 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple LOG.error(error, e); String clientError = String.format("%s", error); throw new Exception(clientError); - + } catch (ZenodoException e) { + String error = "ZenodoException during upload to Zenodo the catalogue item: "+zenodoItem.getName(); + LOG.error(error, e); + String clientError = String.format("%s", e.getMessage()); + throw new Exception(clientError); } catch (Exception e) { String error = "Error during upload to Zenodo the catalogue item: "+zenodoItem.getName(); LOG.error(error, e); diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/CkanToZenodoUtil.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/CkanToZenodoUtil.java index 6d6da18..82307a4 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/CkanToZenodoUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/CkanToZenodoUtil.java @@ -61,4 +61,16 @@ public class CkanToZenodoUtil { return new SerializableEnum(selectedLicense, allLicenses); } + + /** + * Checks if is not empty. + * + * @param value the value + * @return true, if is not empty + */ + public static boolean isNotEmpty(String value) { + if(value!=null && !value.isEmpty()) + return true; + return false; + } } diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/converter/ItemToZenodoConverter.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/converter/ItemToZenodoConverter.java index 0e689fd..be765a8 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/converter/ItemToZenodoConverter.java +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/converter/ItemToZenodoConverter.java @@ -571,9 +571,15 @@ public class ItemToZenodoConverter { for (ZenodoAuthor zenodoAuthor : zenodoCreators) { Creator creator = new Creator(); creator.setName(zenodoAuthor.getName()); - creator.setAffiliation(zenodoAuthor.getAffiliation()); - creator.setGnd(zenodoAuthor.getGnd()); - creator.setOrcid(zenodoAuthor.getOrcid()); + if(CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getAffiliation())) { + creator.setAffiliation(zenodoAuthor.getAffiliation()); + } + if(CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getGnd())) { + creator.setGnd(zenodoAuthor.getGnd()); + } + if(CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getOrcid())) { + creator.setOrcid(zenodoAuthor.getOrcid()); + } listOfCreators.add(creator); } @@ -595,9 +601,15 @@ public class ItemToZenodoConverter { for (ZenodoAuthor zenodoAuthor : zenodoContributors) { Contributor contributor = new Contributor(); contributor.setName(zenodoAuthor.getName()); - contributor.setAffiliation(zenodoAuthor.getAffiliation()); - contributor.setGnd(zenodoAuthor.getGnd()); - contributor.setOrcid(zenodoAuthor.getOrcid()); + if(CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getAffiliation())) { + contributor.setAffiliation(zenodoAuthor.getAffiliation()); + } + if(CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getGnd())) { + contributor.setGnd(zenodoAuthor.getGnd()); + } + if(CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getOrcid())) { + contributor.setOrcid(zenodoAuthor.getOrcid()); + } Type type = null; String theType = null; try { diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/shared/wrapped/ZenodoItem.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/shared/wrapped/ZenodoItem.java index 1b4fc1d..1c31c30 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/shared/wrapped/ZenodoItem.java +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/shared/wrapped/ZenodoItem.java @@ -1,6 +1,7 @@ package org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped; import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -70,6 +71,20 @@ public class ZenodoItem implements Serializable { } } + + /** + * Sets the files. + * + * @param files the new files + */ + public void setFiles(List files) { + + this.files = new ArrayList(); + if(files!=null) { + this.files.addAll(files); + } + } + /** * Gets the created. *