diff --git a/pom.xml b/pom.xml index e5a5956..0ca85e5 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,7 @@ com.google.gwt gwt-user + ${gwtVersion} provided @@ -73,6 +74,12 @@ ckan2zenodo-library [0.0.1-SNAPSHOT, 1.0.0-SNAPSHOT) + + org.gcube.portlets.widgets + switch-button-widget + [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) + compile + junit junit @@ -109,7 +116,7 @@ compile - + diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/CkanToZenodoPublisher.gwt.xml b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/CkanToZenodoPublisher.gwt.xml index 6653a1b..7463099 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/CkanToZenodoPublisher.gwt.xml +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/CkanToZenodoPublisher.gwt.xml @@ -6,7 +6,9 @@ - + + + @@ -16,6 +18,7 @@ + diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/CkanToZendoPublisherWidget.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/CkanToZendoPublisherWidget.java index 2dbb913..cfa84bc 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/CkanToZendoPublisherWidget.java +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/CkanToZendoPublisherWidget.java @@ -1,6 +1,8 @@ package org.gcube.portlets.widgets.ckan2zenodopublisher.client; -import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.uibinder.FormToPublishOnZenodoView; +import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.uibinder.AccordionBasicPanel; +import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.uibinder.BasicInformationView; +import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.uibinder.Ckan2ZenodoViewManager; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.CatalogueItem; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem; @@ -42,24 +44,27 @@ public class CkanToZendoPublisherWidget { @Override public void onSuccess(ZenodoItem result) { Modal modal = new Modal(true); - FormToPublishOnZenodoView form = new FormToPublishOnZenodoView(result) { - - - @Override - public void submitHandler() { - } - - @Override - public void setError(boolean visible, String error) { - } - - @Override - public void setConfirm(boolean visible, String msg) { - } - }; + Ckan2ZenodoViewManager manager = new Ckan2ZenodoViewManager(); + AccordionBasicPanel theForm = manager.viewForPublishing(result); +// BasicInformationView form = new BasicInformationView(result) { +// +// +// @Override +// public void submitHandler() { +// } +// +// @Override +// public void setError(boolean visible, String error) { +// } +// +// @Override +// public void setConfirm(boolean visible, String msg) { +// } +// }; modal.setTitle("Publishing on Zenodo..."); + modal.addStyleName("ckan2zenodo-modal-style"); modal.setCloseVisible(true); - modal.add(form); + modal.add(theForm); modal.show(); } }); diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/AccordionBasicPanel.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/AccordionBasicPanel.java new file mode 100644 index 0000000..2377b8d --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/AccordionBasicPanel.java @@ -0,0 +1,52 @@ +package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.uibinder; + +import com.github.gwtbootstrap.client.ui.AccordionGroup; +import com.google.gwt.core.client.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; + +public class AccordionBasicPanel extends Composite { + + private static AccordionBasicPanelUiBinder uiBinder = GWT.create(AccordionBasicPanelUiBinder.class); + + interface AccordionBasicPanelUiBinder extends UiBinder { + } + + @UiField + AccordionGroup acc_basic_info; + + @UiField + AccordionGroup acc_files; + + @UiField + AccordionGroup acc_license; + + public AccordionBasicPanel() { + initWidget(uiBinder.createAndBindUi(this)); + } + + + public AccordionBasicPanel(String firstName) { + initWidget(uiBinder.createAndBindUi(this)); + } + + + public AccordionGroup getAcc_basic_info() { + return acc_basic_info; + } + + + public AccordionGroup getAcc_files() { + return acc_files; + } + + + public AccordionGroup getAcc_license() { + return acc_license; + } + + + +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/AccordionBasicPanel.ui.xml b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/AccordionBasicPanel.ui.xml new file mode 100644 index 0000000..ebc5ad9 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/AccordionBasicPanel.ui.xml @@ -0,0 +1,29 @@ + + + + .important { + font-weight: bold; + } + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/FormToPublishOnZenodoView.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/BasicInformationView.java similarity index 77% rename from src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/FormToPublishOnZenodoView.java rename to src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/BasicInformationView.java index fc41f2f..069bb22 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/FormToPublishOnZenodoView.java +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/BasicInformationView.java @@ -1,8 +1,12 @@ package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.uibinder; +import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem; +import com.github.gwtbootstrap.client.ui.Fieldset; +import com.github.gwtbootstrap.client.ui.Label; import com.github.gwtbootstrap.client.ui.Pager; +import com.github.gwtbootstrap.client.ui.TextArea; import com.github.gwtbootstrap.client.ui.TextBox; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; @@ -10,7 +14,6 @@ import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; @@ -19,17 +22,17 @@ import com.google.gwt.user.client.ui.Widget; * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it May 4, 2018 */ -public abstract class FormToPublishOnZenodoView extends Composite { +public abstract class BasicInformationView extends Composite { /** The ui binder. */ - private static FormToPublishOnZenodoViewUiBinder uiBinder = GWT.create(FormToPublishOnZenodoViewUiBinder.class); + private static BasicInformationViewUiBinder uiBinder = GWT.create(BasicInformationViewUiBinder.class); /** * The Interface CreateTaskConfigurationViewUiBinder. * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it May 4, 2018 */ - interface FormToPublishOnZenodoViewUiBinder extends UiBinder { + interface BasicInformationViewUiBinder extends UiBinder { } /** The pager. */ @@ -41,7 +44,21 @@ public abstract class FormToPublishOnZenodoView extends Composite { @UiField TextBox field_record_url; - + +// @UiField +// ControlGroup cg_list_of_files; +// +// @UiField +// VerticalPanel vp_list_of_files; + + @UiField + Fieldset to_zenodo_form_unit_fields; + + @UiField + Label label_files; + + @UiField + TextArea field_description; public final static HandlerManager eventBus = new HandlerManager(null); @@ -82,7 +99,7 @@ public abstract class FormToPublishOnZenodoView extends Composite { * * @param zenodoItem the zenodo item */ - public FormToPublishOnZenodoView(final ZenodoItem zenodoItem) { + public BasicInformationView(final ZenodoItem zenodoItem) { initWidget(uiBinder.createAndBindUi(this)); this.zenodoItem = zenodoItem; // if(conf!=null) @@ -109,11 +126,22 @@ public abstract class FormToPublishOnZenodoView extends Composite { private void fillForm() { field_title.setValue(zenodoItem.getTitle()); + field_description.setValue(zenodoItem.getMetadata().getDescription()); field_record_url.setValue(zenodoItem.getRecord_url().toString()); - - Window.alert(zenodoItem.getMetadata().getRelated_identifiers().toString()); - + if(zenodoItem.getFiles()!=null) { + label_files.setVisible(true); + for (ZenodoFile file : zenodoItem.getFiles()) { + addFileForPublishing(file); + } + } + } + + private void addFileForPublishing(ZenodoFile file) { + PublishFileView pv = new PublishFileView(); + pv.getField_file_name().setValue(file.getFilename()); + pv.getSwitchButton().setValue(true); + to_zenodo_form_unit_fields.add(pv); } /** diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/FormToPublishOnZenodoView.ui.xml b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/BasicInformationView.ui.xml similarity index 57% rename from src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/FormToPublishOnZenodoView.ui.xml rename to src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/BasicInformationView.ui.xml index f904ec7..bfd3858 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/FormToPublishOnZenodoView.ui.xml +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/BasicInformationView.ui.xml @@ -6,13 +6,19 @@ .noBorder { border: 0px; } + + .margin-left-100 { + margin-left: 80px; + } + ui:field="to_zenodo_form_unit_fields"> + The Item Title @@ -21,21 +27,25 @@ - + + Description + + + + - Record URL + URL + ui:field="field_record_url" + addStyleNames="my-external-select-width" readOnly="true"> - - - - - - + File/s diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/Ckan2ZenodoViewManager.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/Ckan2ZenodoViewManager.java new file mode 100644 index 0000000..2c0cde5 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/Ckan2ZenodoViewManager.java @@ -0,0 +1,39 @@ +package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.uibinder; + +import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem; + +public class Ckan2ZenodoViewManager { + + + AccordionBasicPanel basePanel; + + + public Ckan2ZenodoViewManager() { + } + + + public AccordionBasicPanel viewForPublishing(final ZenodoItem zenodoItem){ + basePanel = new AccordionBasicPanel(); + + BasicInformationView form = new BasicInformationView(zenodoItem) { + + + @Override + public void submitHandler() { + } + + @Override + public void setError(boolean visible, String error) { + } + + @Override + public void setConfirm(boolean visible, String msg) { + } + }; + + basePanel.getAcc_basic_info().add(form); + return basePanel; + + } + +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/PublishFileView.java b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/PublishFileView.java new file mode 100644 index 0000000..e674e91 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/PublishFileView.java @@ -0,0 +1,62 @@ +package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.uibinder; + +import org.gcube.portlets.widgets.switchbutton.client.SwitchButton; + +import com.github.gwtbootstrap.client.ui.TextBox; +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; + +public class PublishFileView extends Composite { + + private static PublishFileViewUiBinder uiBinder = GWT.create(PublishFileViewUiBinder.class); + + @UiField + SwitchButton switchButton; + + @UiField + TextBox field_file_name; + + interface PublishFileViewUiBinder extends UiBinder { + } + + public PublishFileView() { + initWidget(uiBinder.createAndBindUi(this)); + + switchButton.addValueChangeHandler(new ValueChangeHandler() { + + @Override + public void onValueChange(ValueChangeEvent event) { + + field_file_name.setEnabled(event.getValue()); + if(event.getValue()) { + field_file_name.getElement().getStyle().setOpacity(1.0); + }else { + field_file_name.getElement().getStyle().setOpacity(0.5); + } + } + }); + } + + public SwitchButton getSwitchButton() { + return switchButton; + } + public TextBox getField_file_name() { + return field_file_name; + } + + public void setSwitchButton(SwitchButton switchButton) { + this.switchButton = switchButton; + } + + public void setField_file_name(TextBox field_file_name) { + this.field_file_name = field_file_name; + } + + + +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/PublishFileView.ui.xml b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/PublishFileView.ui.xml new file mode 100644 index 0000000..18452bb --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/client/view/uibinder/PublishFileView.ui.xml @@ -0,0 +1,34 @@ + + + + + .padding-left-10 { + padding-left: 10px; + } + + .internal-width { + width: 295px !important; + } + + + + + + Publish + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/public/CkanToZenodoPublisher.css b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/public/CkanToZenodoPublisher.css new file mode 100644 index 0000000..afa6afd --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/public/CkanToZenodoPublisher.css @@ -0,0 +1,15 @@ +/** Add css rules here for your application. */ + +.ckan2zenodo-modal-style { + width: 800px !important; + margin-left: -400px !important; +} + +.ckan2zenodo-modal-style input, textarea { + width: 400px; + max-width: 400px; +} + +.ckan2zenodo-modal-style .modal-body{ + max-height: 550px; +} \ No newline at end of file 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 caa8a6d..6438081 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 @@ -9,6 +9,7 @@ import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Creator; 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.UploadType; +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.Relation; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition; @@ -55,7 +56,17 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple //TO TEST ZenodoDeposition zd = new ZenodoDeposition(); + zd.setTitle("My beautiful title"); + ArrayList files = new ArrayList(); + for (int i = 0; i < 5; i++) { + FileDeposition fd = new FileDeposition(); + int index = i+1; + fd.setFilename("My file "+index); + files.add(fd); + } + zd.setFiles(files); DepositionMetadata metadata = new DepositionMetadata(UploadType.dataset, new Date(), "My title", new ArrayList(), "My desr", AccessRights.open); + metadata.setDescription("My beautiful description"); List related_identifiers = new ArrayList(1); related_identifiers.add(new RelatedIdentifier("12345", Relation.cites)); metadata.setRelated_identifiers(related_identifiers); 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 80e748c..ff246ae 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 @@ -59,6 +59,7 @@ public class ItemToZenodoConverter { for (FileDeposition fileDeposition : zenodoDeposition.getFiles()) { listOfFiles.add(toZenodoFile(fileDeposition)); } + zi.setFiles(listOfFiles); } zi.setModified(zenodoDeposition.getModified()); @@ -106,6 +107,7 @@ public class ItemToZenodoConverter { ZenodoMetadata zm = new ZenodoMetadata(); zm.setAccess_conditions(depositionMetadata.getAccess_conditions()); + zm.setDescription(depositionMetadata.getDescription()); if(depositionMetadata.getAccess_right()!=null) { AccessRights[] ar = { depositionMetadata.getAccess_right() }; @@ -193,10 +195,8 @@ public class ItemToZenodoConverter { DateInterval.Type[] rel = { dateInterval.getType() }; types = CkanToZenodoUtil.toSerializableEnum(rel, DateInterval.Type.values()); } - ZenodoDateInterval zdi = new ZenodoDateInterval(dateInterval.getStart(), dateInterval.getEnd(), types, dateInterval.getDescription()); - //TODO MUST BE COMPLETED - //list.add(new ZenodoCommunity(community.getIdentifier())); + list.add(new ZenodoDateInterval(dateInterval.getStart(), dateInterval.getEnd(), types, dateInterval.getDescription())); } return list; 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 fc4f1c2..efec6a1 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,7 +1,6 @@ package org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped; import java.io.Serializable; -import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -110,15 +109,6 @@ public class ZenodoItem implements Serializable { return files; } - /** - * Sets the files. - * - * @param files the new files - */ - public void setFiles(ArrayList files) { - this.files = files; - } - /** * Gets the id. * diff --git a/src/main/resources/org/gcube/portlets/widgets/ckan2zenodopublisher/CkanToZenodoPublisher.gwt.xml b/src/main/resources/org/gcube/portlets/widgets/ckan2zenodopublisher/CkanToZenodoPublisher.gwt.xml index 6653a1b..7463099 100644 --- a/src/main/resources/org/gcube/portlets/widgets/ckan2zenodopublisher/CkanToZenodoPublisher.gwt.xml +++ b/src/main/resources/org/gcube/portlets/widgets/ckan2zenodopublisher/CkanToZenodoPublisher.gwt.xml @@ -6,7 +6,9 @@ - + + + @@ -16,6 +18,7 @@ + diff --git a/src/main/webapp/CkanToZenodoPublisher.css b/src/main/webapp/CkanToZenodoPublisher.css index 7aca7ac..87cb15b 100644 --- a/src/main/webapp/CkanToZenodoPublisher.css +++ b/src/main/webapp/CkanToZenodoPublisher.css @@ -1,34 +1,10 @@ /** Add css rules here for your application. */ - -/** Example rules used by the template application (remove for your app) */ -h1 { - font-size: 2em; - font-weight: bold; - color: #777777; - margin: 40px 0px 70px; - text-align: center; +.ckan2zenodo-modal-style { + width: 800px !important; + left: -400px !important; } -.sendButton { - display: block; - font-size: 16pt; -} - -/** Most GWT widgets already have a style name defined */ -.gwt-DialogBox { - width: 400px; -} - -.dialogVPanel { - margin: 5px; -} - -.serverResponseLabelError { - color: red; -} - -/** Set ids using widget.getElement().setId("idOfElement") */ -#closeButton { - margin: 15px 6px 6px; -} +.ckan2zenodo-modal-style input { + width: 400px +} \ No newline at end of file