This commit is contained in:
Francesco Mangiacrapa 2020-01-13 17:48:41 +01:00
parent f115b529c5
commit 371e5c8874
13 changed files with 540 additions and 39 deletions

View File

@ -142,9 +142,9 @@ public class CkanToZendoPublisherWidget {
*/ */
private void submitPublishOnZenodo() { private void submitPublishOnZenodo() {
ZenodoItem zenodoItem = null; ZenodoItem zenodoItem = manager.getZenodoItemFromFieldsForm();
GWT.log("Publishing file: "+manager.getListFileToPublish()); GWT.log("Publishing file: "+zenodoItem.getFiles());
ckanToZenodoService.publishOnZenodo(zenodoItem, new AsyncCallback<String>() { ckanToZenodoService.publishOnZenodo(zenodoItem, new AsyncCallback<String>() {

View File

@ -1,7 +0,0 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui;
public interface ValidateForm {
boolean isValidForm();
}

View File

@ -3,6 +3,7 @@ package org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.authors;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.events.RemoveCreatorEvent; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.events.RemoveCreatorEvent;
import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.ControlGroup;
import com.github.gwtbootstrap.client.ui.TextBox; import com.github.gwtbootstrap.client.ui.TextBox;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickEvent;
@ -32,6 +33,9 @@ public class CreatorView extends Composite {
@UiField @UiField
Button remove_author; Button remove_author;
@UiField
ControlGroup cg_authors;
private HandlerManager eventBus; private HandlerManager eventBus;
@ -85,5 +89,9 @@ public class CreatorView extends Composite {
public void setField_orcid(String field_orcid) { public void setField_orcid(String field_orcid) {
this.field_orcid.setValue(field_orcid); this.field_orcid.setValue(field_orcid);
} }
public ControlGroup getControlGroup_Author() {
return cg_authors;
}
} }

View File

@ -5,11 +5,14 @@ import java.util.List;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.events.RemoveCreatorEvent; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.events.RemoveCreatorEvent;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.events.RemoveCreatorEventHandler; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.events.RemoveCreatorEventHandler;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.ValidateForm;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.utils.InfoTextAndLabels; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.utils.InfoTextAndLabels;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.FieldUtil;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.FormValidator;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCreator; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCreator;
import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.ControlGroup;
import com.github.gwtbootstrap.client.ui.constants.ControlGroupType;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.ClickHandler;
@ -27,7 +30,7 @@ import com.google.gwt.user.client.ui.Widget;
* *
* Dec 17, 2019 * Dec 17, 2019
*/ */
public class CreatorsFormView extends Composite implements ValidateForm{ public class CreatorsFormView extends Composite implements FormValidator{
private static CreatorsFormViewUiBinder uiBinder = GWT.create(CreatorsFormViewUiBinder.class); private static CreatorsFormViewUiBinder uiBinder = GWT.create(CreatorsFormViewUiBinder.class);
@ -50,8 +53,6 @@ public class CreatorsFormView extends Composite implements ValidateForm{
@UiField @UiField
Button button_add_author; Button button_add_author;
private List<ZenodoCreator> listCreators;
private List<CreatorView> listCreatorView; private List<CreatorView> listCreatorView;
/** /**
@ -61,7 +62,6 @@ public class CreatorsFormView extends Composite implements ValidateForm{
*/ */
public CreatorsFormView(List<ZenodoCreator> listCreators) { public CreatorsFormView(List<ZenodoCreator> listCreators) {
initWidget(uiBinder.createAndBindUi(this)); initWidget(uiBinder.createAndBindUi(this));
this.listCreators = listCreators;
button_add_author.addClickHandler(new ClickHandler() { button_add_author.addClickHandler(new ClickHandler() {
@ -85,23 +85,15 @@ public class CreatorsFormView extends Composite implements ValidateForm{
} }
}); });
addCreatorsToView(); addCreatorsToView(listCreators);
} }
@Override
public boolean isValidForm() {
return false;
}
/** /**
* Adds the creators to view. * Adds the creators to view.
* @param listCreators
*/ */
private void addCreatorsToView() { private void addCreatorsToView(List<ZenodoCreator> listCreators) {
if(listCreatorView==null) if(listCreatorView==null)
listCreatorView = new ArrayList<CreatorView>(); listCreatorView = new ArrayList<CreatorView>();
@ -146,5 +138,58 @@ public class CreatorsFormView extends Composite implements ValidateForm{
creator.setVisibleRemoveCreator(removableCreator); creator.setVisibleRemoveCreator(removableCreator);
} }
} }
/**
* Read list of creators from view.
*
* @return the list
*/
public List<ZenodoCreator> readListOfCreatorsFromView(){
List<ZenodoCreator> listCreators = new ArrayList<ZenodoCreator>(listCreatorView.size());
for (CreatorView creatorView : listCreatorView) {
listCreators.add(new ZenodoCreator(creatorView.getField_name().getValue(), creatorView.getField_affiliation().getValue(), creatorView.getField_affiliation().getValue(), null));
}
return listCreators;
}
@Override
public boolean isValidForm() {
return validateFormFields()==null;
}
@Override
public String validateFormFields() {
for (CreatorView creatorView : listCreatorView) {
ControlGroup cgAuthor = creatorView.getControlGroup_Author();
FieldUtil.setControlGroup(cgAuthor, ControlGroupType.NONE);
String value = FieldUtil.getTextValue(creatorView.getField_name());
boolean isValid = FieldUtil.isValidValue(value);
if(!isValid) {
FieldUtil.setControlGroup(cgAuthor, ControlGroupType.ERROR);
return "The author name is required";
}
String affiliation = FieldUtil.getTextValue(creatorView.getField_affiliation());
isValid = FieldUtil.isValidValue(affiliation);
if(!isValid) {
FieldUtil.setControlGroup(cgAuthor, ControlGroupType.ERROR);
return "The author affiliation is required";
}
String orcid = FieldUtil.getTextValue(creatorView.getField_orcid());
isValid = FieldUtil.isValidValue(orcid);
if(!isValid) {
FieldUtil.setControlGroup(cgAuthor, ControlGroupType.ERROR);
return "The author ORCID is required";
}
}
return null;
}
} }

View File

@ -1,11 +1,14 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.basicinformation; package org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.basicinformation;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.authors.CreatorsFormView; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.authors.CreatorsFormView;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.tags.TagsPanel;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.FieldUtil; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.FieldUtil;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.FormValidator; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.FormValidator;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCreator;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoMetadata; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoMetadata;
@ -72,6 +75,9 @@ public class BasicInformationView extends Composite implements FormValidator {
@UiField @UiField
Alert error_alert; Alert error_alert;
@UiField
TagsPanel the_tags_panel;
// @UiField // @UiField
// Pager pager; // Pager pager;
@ -156,10 +162,23 @@ public class BasicInformationView extends Composite implements FormValidator {
ZenodoMetadata zMeta = zenodoItem.getMetadata(); ZenodoMetadata zMeta = zenodoItem.getMetadata();
if (zMeta != null) { if (zMeta != null) {
String title = zenodoItem.getTitle()!=null?zenodoItem.getTitle():zMeta.getTitle();
field_title.setValue(title); //Re.fill title to be sure
addValuesToListBox(field_upload_type, zMeta.getUpload_type().getSelectableValues()); addValuesToListBox(field_upload_type, zMeta.getUpload_type().getSelectableValues());
selectValueToListBox(field_upload_type, zMeta.getUpload_type().getSelectableValues()); selectValueToListBox(field_upload_type, zMeta.getUpload_type().getSelectedValues());
addValuesToListBox(field_publication_type, zMeta.getPublication_type().getSelectableValues());
selectValueToListBox(field_publication_type, zMeta.getPublication_type().getSelectableValues()); if(zMeta.getPublication_type()!=null) {
addValuesToListBox(field_publication_type, zMeta.getPublication_type().getSelectableValues());
selectValueToListBox(field_publication_type, zMeta.getPublication_type().getSelectedValues());
}else
field_publication_type.setEnabled(false);
addValuesToListBox(field_access_right, zMeta.getAccess_right().getSelectableValues());
selectValueToListBox(field_access_right, zMeta.getAccess_right().getSelectedValues());
addValuesToListBox(field_license, Arrays.asList(zMeta.getLicense().getId()));
selectValueToListBox(field_license, Arrays.asList(zMeta.getLicense().getId()));
// ADDING AUTHORS // ADDING AUTHORS
creatorsView = new CreatorsFormView(zenodoItem.getMetadata().getCreators()); creatorsView = new CreatorsFormView(zenodoItem.getMetadata().getCreators());
@ -185,7 +204,7 @@ public class BasicInformationView extends Composite implements FormValidator {
return; return;
for (int i = 0; i < listValues.size(); i++) { for (int i = 0; i < listValues.size(); i++) {
list.setValue(i, listValues.get(i)); list.addItem(listValues.get(i), listValues.get(i));
} }
} }
@ -196,6 +215,7 @@ public class BasicInformationView extends Composite implements FormValidator {
* @param values the values * @param values the values
*/ */
private void selectValueToListBox(ListBox list, List<String> values) { private void selectValueToListBox(ListBox list, List<String> values) {
GWT.log("Selecting value: "+values);
String selectValue = null; String selectValue = null;
if (values == null || values.isEmpty()) { if (values == null || values.isEmpty()) {
selectValue = null; selectValue = null;
@ -303,6 +323,7 @@ public class BasicInformationView extends Composite implements FormValidator {
FieldUtil.setControlGroup(cgDOI, ControlGroupType.NONE); FieldUtil.setControlGroup(cgDOI, ControlGroupType.NONE);
FieldUtil.setControlGroup(cgTitle, ControlGroupType.NONE); FieldUtil.setControlGroup(cgTitle, ControlGroupType.NONE);
//Validating DOI
if (cgDOI.isVisible()) { if (cgDOI.isVisible()) {
GWT.log("Checking doi---"); GWT.log("Checking doi---");
String value = getTextValue(field_doi); String value = getTextValue(field_doi);
@ -310,11 +331,12 @@ public class BasicInformationView extends Composite implements FormValidator {
if(!isValid) { if(!isValid) {
FieldUtil.setControlGroup(cgDOI, ControlGroupType.ERROR); FieldUtil.setControlGroup(cgDOI, ControlGroupType.ERROR);
error_alert.setVisible(true); error_alert.setVisible(true);
error_alert.setText("This field is required"); error_alert.setText("This field DOI is required");
return "This field is required"; return "This field is required";
} }
} }
//Validating Title
if (cgTitle.isVisible()) { if (cgTitle.isVisible()) {
GWT.log("Checking title---"); GWT.log("Checking title---");
String value = getTextValue(field_title); String value = getTextValue(field_title);
@ -323,10 +345,20 @@ public class BasicInformationView extends Composite implements FormValidator {
if(!isValid) { if(!isValid) {
FieldUtil.setControlGroup(cgTitle, ControlGroupType.ERROR); FieldUtil.setControlGroup(cgTitle, ControlGroupType.ERROR);
error_alert.setVisible(true); error_alert.setVisible(true);
error_alert.setText("This field is required"); error_alert.setText("The field Title is required");
return "This field is required"; return "This field is required";
} }
} }
//Validating Authors
if(creatorsView!=null) {
String error = creatorsView.validateFormFields();
if(error!=null) {
error_alert.setVisible(true);
error_alert.setText(error);
return error;
}
}
return null; return null;
} }
@ -351,4 +383,65 @@ public class BasicInformationView extends Composite implements FormValidator {
return box.getText(); return box.getText();
} }
public CreatorsFormView getCreatorsView() {
return creatorsView;
}
/**
* Gets the list of creators.
*
* @return the list of creators
*/
public List<ZenodoCreator> getListOfCreators() {
return creatorsView.readListOfCreatorsFromView();
}
public TextBox getField_title() {
return field_title;
}
public TextBox getField_doi() {
return field_doi;
}
public Fieldset getFieldset_basic_informations() {
return fieldset_basic_informations;
}
public TextArea getField_description() {
return field_description;
}
public ListBox getField_upload_type() {
return field_upload_type;
}
public ListBox getField_access_right() {
return field_access_right;
}
public ListBox getField_license() {
return field_license;
}
public ListBox getField_publication_type() {
return field_publication_type;
}
public DateBox getField_publication_date() {
return field_publication_date;
}
public Alert getError_alert() {
return error_alert;
}
public List<String> getTags() {
return the_tags_panel.getTags();
}
} }

View File

@ -62,7 +62,7 @@
</b:Controls> </b:Controls>
</b:ControlGroup> </b:ControlGroup>
<ctag:TagsPanel></ctag:TagsPanel> <ctag:TagsPanel ui:field="the_tags_panel"></ctag:TagsPanel>
<b:ControlGroup ui:field="cg_upload_type"> <b:ControlGroup ui:field="cg_upload_type">

View File

@ -1,12 +1,17 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view; package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.BasicTabPanel; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.BasicTabPanel;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.authors.CreatorView;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.basicinformation.BasicInformationView; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.basicinformation.BasicInformationView;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.SerializableEnum;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCreator;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoMetadata;
import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerManager;
@ -28,6 +33,9 @@ public class Ckan2ZenodoViewManager {
private List<FormValidator> forms = new ArrayList<FormValidator>(); private List<FormValidator> forms = new ArrayList<FormValidator>();
private BasicInformationView basicForm; private BasicInformationView basicForm;
private PublishFileViewManager publishFileVM; private PublishFileViewManager publishFileVM;
private ZenodoItem zenodoItem;
/** /**
* Instantiates a new ckan 2 zenodo view manager. * Instantiates a new ckan 2 zenodo view manager.
@ -43,7 +51,7 @@ public class Ckan2ZenodoViewManager {
* @return the basic tab panel * @return the basic tab panel
*/ */
public BasicTabPanel viewForPublishing(final ZenodoItem zenodoItem){ public BasicTabPanel viewForPublishing(final ZenodoItem zenodoItem){
this.zenodoItem = zenodoItem;
basicTabPanel = new BasicTabPanel(); basicTabPanel = new BasicTabPanel();
boolean isUpdate = false; boolean isUpdate = false;
@ -85,5 +93,44 @@ public class Ckan2ZenodoViewManager {
public List<ZenodoFile> getListFileToPublish(){ public List<ZenodoFile> getListFileToPublish(){
return publishFileVM.getSelectedFileToZenodoPublishing(); return publishFileVM.getSelectedFileToZenodoPublishing();
} }
/**
* Gets the zenodo item from form.
*
* @return the zenodo item from form
*/
public ZenodoItem getZenodoItemFromFieldsForm(){
//Updating Basic Information
zenodoItem.setTitle(basicForm.getField_title().getValue());
zenodoItem.setDoi(basicForm.getField_doi().getValue());
//Updating Metadata
ZenodoMetadata meta = zenodoItem.getMetadata();
meta.setDescription(basicForm.getField_description().getValue());
meta.setKeywords(basicForm.getTags()); //these are the keywords
List<ZenodoCreator> creators = basicForm.getListOfCreators();
meta.setCreators(creators);
//upload type
String uploadType = basicForm.getField_upload_type().getSelectedValue();
meta.setUpload_type(new SerializableEnum<>(Arrays.asList(uploadType), meta.getUpload_type().getSelectableValues()));
//publication type
String publicationType = basicForm.getField_publication_type().getSelectedValue();
meta.setPublication_type(new SerializableEnum<>(Arrays.asList(publicationType), meta.getPublication_type().getSelectableValues()));
//access right
String accessRight = basicForm.getField_access_right().getSelectedValue();
meta.setAccess_right(new SerializableEnum<>(Arrays.asList(accessRight), meta.getAccess_right().getSelectableValues()));
zenodoItem.setMetadata(meta);
//Updating list of file for publishing
List<ZenodoFile> publishingFile = getListFileToPublish();
zenodoItem.setFiles(publishingFile);
return zenodoItem;
}
} }

View File

@ -1,10 +1,18 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view; package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view;
import com.github.gwtbootstrap.client.ui.ControlGroup; import com.github.gwtbootstrap.client.ui.ControlGroup;
import com.github.gwtbootstrap.client.ui.TextBox;
import com.github.gwtbootstrap.client.ui.constants.ControlGroupType; import com.github.gwtbootstrap.client.ui.constants.ControlGroupType;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.Widget;
/**
* The Class FieldUtil.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Jan 13, 2020
*/
public class FieldUtil { public class FieldUtil {
/** /**
@ -39,7 +47,7 @@ public class FieldUtil {
/** /**
* Sets the control group. * Sets the control group.
* *
* @param box the box * @param controlGroup the control group
* @param type the type * @param type the type
*/ */
public static void setControlGroup(ControlGroup controlGroup, ControlGroupType type) { public static void setControlGroup(ControlGroup controlGroup, ControlGroupType type) {
@ -52,4 +60,16 @@ public class FieldUtil {
} }
} }
/**
* Gets the text value.
*
* @param box the box
* @return the text value
*/
public static String getTextValue(TextBox box) {
return box.getText();
}
} }

View File

@ -9,6 +9,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.InvalidItemException;
import org.gcube.data.publishing.ckan2zenodo.model.faults.TransformationException; 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.faults.ZenodoException;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.FileDeposition; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.FileDeposition;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZendoPublisherWidgetConstant; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZendoPublisherWidgetConstant;
@ -17,6 +18,7 @@ import org.gcube.portlets.widgets.ckan2zenodopublisher.server.converter.ItemToZe
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.CatalogueItem; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.CatalogueItem;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoMetadata;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -40,9 +42,9 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
ZenodoDeposition zdPreview=loadItemPreviewFromService(zenodoItem.getName()); ZenodoDeposition zdPreview=loadItemPreviewFromService(zenodoItem.getName());
//(EVENTUALLY) UPDATING INFO CHANGED BY FORM ON CLIENT-SIDE //(EVENTUALLY) UPDATING INFO CHANGED BY FORM ON CLIENT-SIDE
//metadata //Basic info
zdPreview.setTitle(zenodoItem.getTitle()); zdPreview.setTitle(zenodoItem.getTitle());
//files //Files
if(zenodoItem.getFiles()!=null) { if(zenodoItem.getFiles()!=null) {
ArrayList<FileDeposition> listOfFiles = new ArrayList<FileDeposition>(zenodoItem.getFiles().size()); ArrayList<FileDeposition> listOfFiles = new ArrayList<FileDeposition>(zenodoItem.getFiles().size());
for (ZenodoFile zf : zenodoItem.getFiles()) { for (ZenodoFile zf : zenodoItem.getFiles()) {
@ -51,6 +53,11 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
} }
zdPreview.setFiles(listOfFiles); zdPreview.setFiles(listOfFiles);
} }
//Updating Deposition Metadata
ZenodoMetadata metadata = zenodoItem.getMetadata();
DepositionMetadata depositionMetadata = zdPreview.getMetadata();
depositionMetadata = ItemToZenodoConverter.updateMetadataInfoOfDepositionMetadata(metadata, depositionMetadata);
zdPreview.setMetadata(depositionMetadata);
//Ckan2ZenodoImpl.publish(item.getItemName()); //Ckan2ZenodoImpl.publish(item.getItemName());
//Eventually update values //Eventually update values
@ -101,6 +108,7 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
//zdPreview.setFiles(toFilterFiles); //zdPreview.setFiles(toFilterFiles);
ZenodoItem zenodoItem = ItemToZenodoConverter.toZenodoItem(zdPreview); ZenodoItem zenodoItem = ItemToZenodoConverter.toZenodoItem(zdPreview);
zenodoItem.setName(item.getItemName()); zenodoItem.setName(item.getItemName());
LOG.debug("Returning item: "+zenodoItem);
return zenodoItem; return zenodoItem;
// //TO TEST // //TO TEST

View File

@ -9,6 +9,8 @@ import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Creator;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DateInterval; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DateInterval;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.AccessRights; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.AccessRights;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.PublicationType;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.UploadType;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.FileDeposition; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.FileDeposition;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.RelatedIdentifier; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.RelatedIdentifier;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.RelatedIdentifier.Relation; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.RelatedIdentifier.Relation;
@ -16,6 +18,7 @@ import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Subject;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
import org.gcube.portlets.widgets.ckan2zenodopublisher.server.CkanToZenodoUtil; import org.gcube.portlets.widgets.ckan2zenodopublisher.server.CkanToZenodoUtil;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.SerializableEnum; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.SerializableEnum;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.LicenseBean;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCommunity; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCommunity;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoContributor; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoContributor;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCreator; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCreator;
@ -62,6 +65,8 @@ public class ItemToZenodoConverter {
if(zenodoDeposition==null) if(zenodoDeposition==null)
return null; return null;
LOG.debug("Converting item: "+zenodoDeposition);
ZenodoItem zi = new ZenodoItem(); ZenodoItem zi = new ZenodoItem();
zi.setId(zenodoDeposition.getId()); zi.setId(zenodoDeposition.getId());
zi.setDoi(zenodoDeposition.getDoi()); zi.setDoi(zenodoDeposition.getDoi());
@ -85,6 +90,8 @@ public class ItemToZenodoConverter {
zi.setMetadata(toZenodoMetadata(zenodoDeposition.getMetadata())); zi.setMetadata(toZenodoMetadata(zenodoDeposition.getMetadata()));
LOG.debug("Converted item: "+zi);
return zi; return zi;
} }
@ -122,12 +129,29 @@ public class ItemToZenodoConverter {
zm.setAccess_conditions(depositionMetadata.getAccess_conditions()); zm.setAccess_conditions(depositionMetadata.getAccess_conditions());
zm.setDescription(depositionMetadata.getDescription()); zm.setDescription(depositionMetadata.getDescription());
//Access Type
if(depositionMetadata.getAccess_right()!=null) { if(depositionMetadata.getAccess_right()!=null) {
AccessRights[] ar = { depositionMetadata.getAccess_right() }; AccessRights[] ar = { depositionMetadata.getAccess_right() };
SerializableEnum<String> sEnum = CkanToZenodoUtil.toSerializableEnum(ar, AccessRights.values()); SerializableEnum<String> sEnum = CkanToZenodoUtil.toSerializableEnum(ar, AccessRights.values());
zm.setAccess_right(sEnum); zm.setAccess_right(sEnum);
} }
//Upload Type
if(depositionMetadata.getUpload_type()!=null) {
UploadType[] upType = { depositionMetadata.getUpload_type() };
SerializableEnum<String> sEnum = CkanToZenodoUtil.toSerializableEnum(upType, UploadType.values());
zm.setUpload_type(sEnum);
}
//Publication Type
if(depositionMetadata.getPublication_type()!=null) {
PublicationType[] upType = { depositionMetadata.getPublication_type() };
SerializableEnum<String> sEnum = CkanToZenodoUtil.toSerializableEnum(upType, PublicationType.values());
zm.setPublication_type(sEnum);
}
zm.setLicense(new LicenseBean(depositionMetadata.getLicense(),depositionMetadata.getLicense(),null)); //HAVE TO BE RIVISITED
zm.setKeywords(depositionMetadata.getKeywords());
zm.setCommunities(toZenodoCommunities(depositionMetadata.getCommunities())); zm.setCommunities(toZenodoCommunities(depositionMetadata.getCommunities()));
zm.setConference_acronym(depositionMetadata.getConference_acronym()); zm.setConference_acronym(depositionMetadata.getConference_acronym());
zm.setConference_dates(depositionMetadata.getConference_dates()); zm.setConference_dates(depositionMetadata.getConference_dates());
@ -404,5 +428,36 @@ public class ItemToZenodoConverter {
fileDep.setChecksum(zenodoFile.getChecksum()); fileDep.setChecksum(zenodoFile.getChecksum());
return fileDep; return fileDep;
} }
/**
* Update metadata info of deposition metadata.
*
* @param metadata the metadata
* @param depositionMetadata the deposition metadata
* @return the deposition metadata
*/
public static DepositionMetadata updateMetadataInfoOfDepositionMetadata(ZenodoMetadata metadata, DepositionMetadata depositionMetadata) {
//upload type
SerializableEnum<String> uploadType = metadata.getUpload_type();
String theUploadTypeValue = uploadType.getSelectedValues().get(0);
LOG.debug("Set upload type: "+theUploadTypeValue);
depositionMetadata.setUpload_type(UploadType.valueOf(theUploadTypeValue));
//access right
SerializableEnum<String> accessRight = metadata.getAccess_right();
String theAccessRightValue = accessRight.getSelectedValues().get(0);
LOG.debug("Set access right: "+theAccessRightValue);
depositionMetadata.setAccess_right(AccessRights.valueOf(theAccessRightValue));
//publication type
SerializableEnum<String> publicationType = metadata.getPublication_type();
String thePublicationTypeValue = publicationType.getSelectedValues().get(0);
LOG.debug("Set publication type: "+thePublicationTypeValue);
depositionMetadata.setPublication_type(PublicationType.valueOf(thePublicationTypeValue));
return depositionMetadata;
}
} }

View File

@ -0,0 +1,96 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped;
import java.io.Serializable;
/**
* A license bean like the ckan's one.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Jan 13, 2020
*/
public class LicenseBean implements Serializable{
/**
*
*/
private static final long serialVersionUID = 6618784269251750489L;
private String id;
private String title;
private String url;
/**
* Instantiates a new license bean.
*/
public LicenseBean() {
super();
}
/**
* Instantiates a new license bean.
*
* @param id the id
* @param title the title
* @param url the url
*/
public LicenseBean(String id, String title, String url) {
super();
this.id = id;
this.title = title;
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
return obj.getClass().equals(this.getClass()) && ((LicenseBean)obj).getTitle().equals(this.title);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("LicenseBean [id=");
builder.append(id);
builder.append(", title=");
builder.append(title);
builder.append(", url=");
builder.append(url);
builder.append("]");
return builder.toString();
}
}

View File

@ -271,7 +271,38 @@ public class ZenodoItem implements Serializable {
public void setName(String name) { public void setName(String name) {
this.name = name; this.name = name;
} }
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ZenodoItem [created=");
builder.append(created);
builder.append(", doi=");
builder.append(doi);
builder.append(", files=");
builder.append(files);
builder.append(", id=");
builder.append(id);
builder.append(", metadata=");
builder.append(metadata);
builder.append(", modified=");
builder.append(modified);
builder.append(", owner=");
builder.append(owner);
builder.append(", record_id=");
builder.append(record_id);
builder.append(", record_url=");
builder.append(record_url);
builder.append(", state=");
builder.append(state);
builder.append(", submitted=");
builder.append(submitted);
builder.append(", title=");
builder.append(title);
builder.append(", name=");
builder.append(name);
builder.append("]");
return builder.toString();
}
} }

View File

@ -64,6 +64,8 @@ public class ZenodoMetadata implements Serializable{
private List<ZenodoDateInterval> dates; private List<ZenodoDateInterval> dates;
private String method; //TODO html private String method; //TODO html
private LicenseBean license; //TODO html
public ZenodoMetadata(){} public ZenodoMetadata(){}
@ -500,6 +502,109 @@ public class ZenodoMetadata implements Serializable{
public void setMethod(String method) { public void setMethod(String method) {
this.method = method; this.method = method;
} }
public LicenseBean getLicense() {
return license;
}
public void setLicense(LicenseBean license) {
this.license = license;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ZenodoMetadata [upload_type=");
builder.append(upload_type);
builder.append(", publication_type=");
builder.append(publication_type);
builder.append(", image_type=");
builder.append(image_type);
builder.append(", publication_date=");
builder.append(publication_date);
builder.append(", title=");
builder.append(title);
builder.append(", creators=");
builder.append(creators);
builder.append(", description=");
builder.append(description);
builder.append(", access_right=");
builder.append(access_right);
builder.append(", embargo_date=");
builder.append(embargo_date);
builder.append(", access_conditions=");
builder.append(access_conditions);
builder.append(", doi=");
builder.append(doi);
builder.append(", preserve_doi=");
builder.append(preserve_doi);
builder.append(", keywords=");
builder.append(keywords);
builder.append(", notes=");
builder.append(notes);
builder.append(", related_identifiers=");
builder.append(related_identifiers);
builder.append(", contributors=");
builder.append(contributors);
builder.append(", references=");
builder.append(references);
builder.append(", communities=");
builder.append(communities);
builder.append(", grants=");
builder.append(grants);
builder.append(", journal_title=");
builder.append(journal_title);
builder.append(", journal_volume=");
builder.append(journal_volume);
builder.append(", journal_issue=");
builder.append(journal_issue);
builder.append(", journal_pages=");
builder.append(journal_pages);
builder.append(", conference_title=");
builder.append(conference_title);
builder.append(", conference_acronym=");
builder.append(conference_acronym);
builder.append(", conference_dates=");
builder.append(conference_dates);
builder.append(", conference_place=");
builder.append(conference_place);
builder.append(", conference_url=");
builder.append(conference_url);
builder.append(", conference_session=");
builder.append(conference_session);
builder.append(", conference_session_part=");
builder.append(conference_session_part);
builder.append(", imprint_publisher=");
builder.append(imprint_publisher);
builder.append(", imprint_isbn=");
builder.append(imprint_isbn);
builder.append(", imprint_place=");
builder.append(imprint_place);
builder.append(", partof_title=");
builder.append(partof_title);
builder.append(", partof_pages=");
builder.append(partof_pages);
builder.append(", thesis_supervisors=");
builder.append(thesis_supervisors);
builder.append(", thesis_university=");
builder.append(thesis_university);
builder.append(", subjects=");
builder.append(subjects);
builder.append(", version=");
builder.append(version);
builder.append(", language=");
builder.append(language);
builder.append(", locations=");
builder.append(locations);
builder.append(", dates=");
builder.append(dates);
builder.append(", method=");
builder.append(method);
builder.append(", license=");
builder.append(license);
builder.append("]");
return builder.toString();
}
} }