This commit is contained in:
Francesco Mangiacrapa 2020-01-15 17:51:22 +01:00
parent 1341b7b853
commit 3e938addad
23 changed files with 921 additions and 352 deletions

View File

@ -1,9 +1,9 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.compiler.source=1.7

24
pom.xml
View File

@ -31,10 +31,10 @@
<properties> <properties>
<!-- Convenience property to set the GWT version --> <!-- Convenience property to set the GWT version -->
<gwtVersion>2.8.2</gwtVersion> <gwtVersion>2.7.0</gwtVersion>
<!-- GWT needs at least java 1.6 --> <!-- GWT needs at least java 1.6 -->
<maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
@ -48,13 +48,6 @@
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt</artifactId>
<version>${gwtVersion}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
@ -69,17 +62,17 @@
<groupId>com.github.gwtbootstrap</groupId> <groupId>com.github.gwtbootstrap</groupId>
<artifactId>gwt-bootstrap</artifactId> <artifactId>gwt-bootstrap</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>switch-button-widget</artifactId>
<version>[1.0.0, 2.0.0-SNAPSHOT)</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>org.gcube.data.publishing</groupId> <groupId>org.gcube.data.publishing</groupId>
<artifactId>ckan2zenodo-library</artifactId> <artifactId>ckan2zenodo-library</artifactId>
<version>[0.0.1-SNAPSHOT, 1.0.0-SNAPSHOT)</version> <version>[0.0.1-SNAPSHOT, 1.0.0-SNAPSHOT)</version>
</dependency> </dependency>
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>switch-button-widget</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>com.liferay.portal</groupId> <groupId>com.liferay.portal</groupId>
<artifactId>portal-service</artifactId> <artifactId>portal-service</artifactId>
@ -162,6 +155,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId> <artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration> <configuration>
<descriptors> <descriptors>
<descriptor>descriptor.xml</descriptor> <descriptor>descriptor.xml</descriptor>

View File

@ -8,11 +8,9 @@
<!-- any one of the following lines. --> <!-- any one of the following lines. -->
<!--<inherits name='com.google.gwt.user.theme.standard.Standard' />--> <!--<inherits name='com.google.gwt.user.theme.standard.Standard' />-->
<inherits name="com.github.gwtbootstrap.Bootstrap" />
<inherits name='org.gcube.portlets.widgets.switchbutton.SwitchButton' /> <inherits name='org.gcube.portlets.widgets.switchbutton.SwitchButton' />
<inherits name='com.github.gwtbootstrap.datepicker.Datepicker' /> <inherits name='com.github.gwtbootstrap.datepicker.Datepicker' />
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<!-- Other module inherits --> <!-- Other module inherits -->
<!-- Specify the app entry point class. --> <!-- Specify the app entry point class. -->

View File

@ -29,23 +29,17 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
*/ */
public class CkanToZendoPublisherWidget { public class CkanToZendoPublisherWidget {
private final CkanToZenodoPublisherServiceAsync ckanToZenodoService = CkanToZenodoPublisherServiceAsync.Util private CkanToZenodoPublisherServiceAsync ckanToZenodoService;
.getInstance();
private Button buttonPublish = new Button("Publish on Zenodo"); private Button buttonPublish = new Button("Publish on Zenodo");
private Ckan2ZenodoViewManager manager = null; private Ckan2ZenodoViewManager manager = null;
/**
* Instantiates a new ckan to zendo publisher widget.
*/
public CkanToZendoPublisherWidget() {
public CkanToZendoPublisherWidget() {
ckanToZenodoService = CkanToZenodoPublisherServiceAsync.Util.getInstance();
} }
/**
* Publish on zenodo.
*
* @param item the item
*/
public void publishOnZenodo(final CatalogueItem item) { public void publishOnZenodo(final CatalogueItem item) {
final Modal modal = new Modal(true); final Modal modal = new Modal(true);
@ -145,27 +139,4 @@ public class CkanToZendoPublisherWidget {
modal.show(); modal.show();
} }
/**
* Submit publish on zenodo.
*/
private void submitPublishOnZenodo() {
ZenodoItem zenodoItem = manager.getZenodoItemFromFieldsForm();
GWT.log("Publishing file: "+zenodoItem.getFiles());
ckanToZenodoService.publishOnZenodo(zenodoItem, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
Window.alert(caught.getMessage());
}
@Override
public void onSuccess(String result) {
Window.alert(result);
}
});
}
} }

View File

@ -1,29 +1,29 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.client; //package org.gcube.portlets.widgets.ckan2zenodopublisher.client;
//
import com.google.gwt.core.client.EntryPoint; //import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT; //import com.google.gwt.core.client.GWT;
//
/** ///**
* Entry point classes define <code>onModuleLoad()</code>. // * Entry point classes define <code>onModuleLoad()</code>.
*/ // */
public class CkanToZenodoPublisher implements EntryPoint { //public class CkanToZenodoPublisher implements EntryPoint {
/** // /**
* The message displayed to the user when the server cannot be reached or // * The message displayed to the user when the server cannot be reached or
* returns an error. // * returns an error.
*/ // */
private static final String SERVER_ERROR = "An error occurred while " // private static final String SERVER_ERROR = "An error occurred while "
+ "attempting to contact the server. Please check your network " // + "attempting to contact the server. Please check your network "
+ "connection and try again."; // + "connection and try again.";
//
/** // /**
* Create a remote service proxy to talk to the server-side Greeting service. // * Create a remote service proxy to talk to the server-side Greeting service.
*/ // */
private final CkanToZenodoPublisherServiceAsync greetingService = GWT.create(CkanToZenodoPublisherService.class); // private final CkanToZenodoPublisherServiceAsync greetingService = GWT.create(CkanToZenodoPublisherService.class);
//
/** // /**
* This is the entry point method. // * This is the entry point method.
*/ // */
public void onModuleLoad() { // public void onModuleLoad() {
//
} // }
} //}

View File

@ -1,9 +1,17 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.authors; package org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.authors;
import java.util.Arrays;
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.ui.utils.InfoTextAndLabels;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.FieldUtil;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoAuthor;
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.ControlGroup;
import com.github.gwtbootstrap.client.ui.ControlLabel;
import com.github.gwtbootstrap.client.ui.Controls;
import com.github.gwtbootstrap.client.ui.ListBox;
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;
@ -12,13 +20,30 @@ import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.Widget;
/**
* The Class CreatorView.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Jan 15, 2020
*/
public class CreatorView extends Composite { public class CreatorView extends Composite {
private static CreatorViewUiBinder uiBinder = GWT.create(CreatorViewUiBinder.class); private static CreatorViewUiBinder uiBinder = GWT.create(CreatorViewUiBinder.class);
/**
* The Interface CreatorViewUiBinder.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Jan 15, 2020
*/
interface CreatorViewUiBinder extends UiBinder<Widget, CreatorView> { interface CreatorViewUiBinder extends UiBinder<Widget, CreatorView> {
} }
@ -36,17 +61,66 @@ public class CreatorView extends Composite {
@UiField @UiField
ControlGroup cg_authors; ControlGroup cg_authors;
@UiField
ListBox field_author_type;
@UiField
HorizontalPanel controls_author_type;
@UiField
ControlLabel field_cl_author;
private HandlerManager eventBus; private HandlerManager eventBus;
public CreatorView() {
initWidget(uiBinder.createAndBindUi(this));
}
public CreatorView(final HandlerManager eventBus) { private String userRole; //Can be: Creator, Contributor etc..
this();
private ZenodoAuthor author;
/**
* Instantiates a new creator view.
*
* @param author the author
* @param userRole the user role
*/
public CreatorView(ZenodoAuthor author, String userRole) {
initWidget(uiBinder.createAndBindUi(this));
this.userRole = userRole;
this.author = author;
if(this.userRole!=null) {
field_cl_author.add(new HTML("<font color='red'>*</font>&nbsp;"+userRole));
}else { //default role is Author
field_cl_author.add(new HTML("<font color='red'>*</font>&nbsp;Author"));
}
if(this.author!=null) {
setField_name(InfoTextAndLabels.validValue(author.getName()));
setField_affiliation(InfoTextAndLabels.validValue(author.getAffiliation()));
setField_orcid(InfoTextAndLabels.validValue(author.getOrcid()));
if(this.author.getType()!=null) {
controls_author_type.setVisible(true);
FieldUtil.addValuesToListBox(field_author_type, this.author.getType().getSelectableValues());
FieldUtil.selectValueToListBox(field_author_type, Arrays.asList(this.author.getType().getSelectedValues().get(0)));
}
}
}
/**
* Instantiates a new creator view.
*
* @param author the author
* @param userRole the user role
* @param eventBus the event bus
*/
public CreatorView(ZenodoAuthor author, String userRole, HandlerManager eventBus) {
this(author, userRole);
this.eventBus = eventBus; this.eventBus = eventBus;
remove_author.addClickHandler(new ClickHandler() { remove_author.addClickHandler(new ClickHandler() {
@Override @Override
@ -66,32 +140,85 @@ public class CreatorView extends Composite {
remove_author.setVisible(visible); remove_author.setVisible(visible);
} }
/**
* Gets the field name.
*
* @return the field name
*/
public TextBox getField_name() { public TextBox getField_name() {
return field_name; return field_name;
} }
/**
* Sets the field name.
*
* @param field_name the new field name
*/
public void setField_name(String field_name) { public void setField_name(String field_name) {
this.field_name.setValue(field_name); this.field_name.setValue(field_name);
} }
/**
* Gets the field affiliation.
*
* @return the field affiliation
*/
public TextBox getField_affiliation() { public TextBox getField_affiliation() {
return field_affiliation; return field_affiliation;
} }
/**
* Sets the field affiliation.
*
* @param field_affiliation the new field affiliation
*/
public void setField_affiliation(String field_affiliation) { public void setField_affiliation(String field_affiliation) {
this.field_affiliation.setValue(field_affiliation); this.field_affiliation.setValue(field_affiliation);
} }
/**
* Gets the field orcid.
*
* @return the field orcid
*/
public TextBox getField_orcid() { public TextBox getField_orcid() {
return field_orcid; return field_orcid;
} }
/**
* Sets the field orcid.
*
* @param field_orcid the new field orcid
*/
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);
} }
/**
* Gets the control group author.
*
* @return the control group author
*/
public ControlGroup getControlGroup_Author() { public ControlGroup getControlGroup_Author() {
return cg_authors; return cg_authors;
} }
/**
* Gets the user role.
*
* @return the user role
*/
public String getUserRole() {
return userRole;
}
/**
* Gets the author.
*
* @return the author
*/
public ZenodoAuthor getAuthor() {
return author;
}
} }

View File

@ -6,22 +6,32 @@
.important { .important {
font-weight: bold; font-weight: bold;
} }
.custom-width{
width: 625px !important;
}
</ui:style> </ui:style>
<b:ControlGroup ui:field="cg_authors"> <b:ControlGroup ui:field="cg_authors">
<b:ControlLabel for="cl_authors"> <b:ControlLabel ui:field="field_cl_author">
<font color="red">*</font>
Author
</b:ControlLabel> </b:ControlLabel>
<b:Controls> <b:Controls>
<!-- --> <!-- -->
<g:VerticalPanel addStyleNames="authors-table-spacing"> <g:VerticalPanel
addStyleNames="authors-table-spacing">
<b:TextBox alternateSize="SMALL" placeholder="Name" <b:TextBox alternateSize="SMALL" placeholder="Name"
ui:field="field_name" /> ui:field="field_name" />
<b:TextBox alternateSize="SMALL" placeholder="Affiliation" <b:TextBox alternateSize="SMALL" placeholder="Affiliation"
ui:field="field_affiliation" /> ui:field="field_affiliation" />
<b:TextBox alternateSize="SMALL" placeholder="ORCID" <b:TextBox alternateSize="SMALL" placeholder="ORCID"
ui:field="field_orcid" /> ui:field="field_orcid" />
<b:Button icon="REMOVE" text="Remove Author" visible="false" ui:field="remove_author" type="LINK"></b:Button> <g:HorizontalPanel ui:field="controls_author_type" visible="false">
<b:InputAddOn prependText="Type">
<b:ListBox name="Author type"
ui:field="field_author_type" addStyleNames="{style.custom-width}">
</b:ListBox>
</b:InputAddOn>
</g:HorizontalPanel>
<b:Button icon="REMOVE" text="Remove Author"
visible="false" ui:field="remove_author" type="LINK"></b:Button>
</g:VerticalPanel> </g:VerticalPanel>
<!-- --> <!-- -->
</b:Controls> </b:Controls>

View File

@ -8,6 +8,9 @@ import org.gcube.portlets.widgets.ckan2zenodopublisher.client.events.RemoveCreat
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.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.SerializableEnum;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoAuthor;
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;
import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.Button;
@ -55,13 +58,21 @@ public class CreatorsFormView extends Composite implements FormValidator{
private List<CreatorView> listCreatorView; private List<CreatorView> listCreatorView;
private String userRole;
private List<? extends ZenodoAuthor> listAuthors;
private SerializableEnum<String> contributorTypeValues;
/** /**
* Instantiates a new creators form view. * Instantiates a new creators form view.
* *
* @param listCreators the list creators * @param listAuthors the list authors
*/ */
public CreatorsFormView(List<ZenodoCreator> listCreators) { public CreatorsFormView(List<? extends ZenodoAuthor> listAuthors) {
initWidget(uiBinder.createAndBindUi(this)); initWidget(uiBinder.createAndBindUi(this));
this.listAuthors = listAuthors;
button_add_author.addClickHandler(new ClickHandler() { button_add_author.addClickHandler(new ClickHandler() {
@ -85,27 +96,37 @@ public class CreatorsFormView extends Composite implements FormValidator{
} }
}); });
addCreatorsToView(listCreators); addAuthorsToView();
} }
/** /**
* Adds the creators to view. * Adds the authors to view.
* @param listCreators
*/ */
private void addCreatorsToView(List<ZenodoCreator> listCreators) { private void addAuthorsToView() {
if(listCreatorView==null) if(listCreatorView==null)
listCreatorView = new ArrayList<CreatorView>(); listCreatorView = new ArrayList<CreatorView>();
if(listCreators!=null && listCreators.size()>0) { if(listAuthors!=null && listAuthors.size()>0) {
for (ZenodoCreator creator : listCreators) { userRole = "Author";
CreatorView view = new CreatorView(eventBus);
view.setField_name(InfoTextAndLabels.validValue(creator.getName())); for (ZenodoAuthor creator : listAuthors) {
view.setField_affiliation(InfoTextAndLabels.validValue(creator.getAffiliation())); GWT.log("author is "+creator.getClass());
view.setField_orcid(InfoTextAndLabels.validValue(creator.getOrcid())); if (creator instanceof ZenodoContributor) {
GWT.log("author is a ZenodoContributor");
userRole = "Contributor";
contributorTypeValues = creator.getType();
}else if(creator instanceof ZenodoCreator) {
userRole = "Creator";
}
CreatorView view = new CreatorView(creator, userRole, eventBus);
listCreatorView.add(view); listCreatorView.add(view);
fieldset_authors.add(view); fieldset_authors.add(view);
} }
button_add_author.setText("Add another "+userRole);
setRemovableCreators(); setRemovableCreators();
}else { }else {
//ADDING EMPTY CREATOR //ADDING EMPTY CREATOR
@ -113,16 +134,31 @@ public class CreatorsFormView extends Composite implements FormValidator{
} }
} }
/**
* Gets the list creator view.
*
* @return the list creator view
*/
public List<CreatorView> getListCreatorView() { public List<CreatorView> getListCreatorView() {
return listCreatorView; return listCreatorView;
} }
/**
* Adds the empty creator.
*/
private void addEmptyCreator() { private void addEmptyCreator() {
if(listCreatorView==null) if(listCreatorView==null)
listCreatorView = new ArrayList<CreatorView>(); listCreatorView = new ArrayList<CreatorView>();
CreatorView view = new CreatorView(eventBus); ZenodoAuthor author = null;
if(userRole.compareToIgnoreCase("Contributor")==0) {
author = new ZenodoContributor();
((ZenodoContributor) author).setType(contributorTypeValues);
}
CreatorView view = new CreatorView(author, userRole, eventBus);
listCreatorView.add(view); listCreatorView.add(view);
fieldset_authors.add(view); fieldset_authors.add(view);
@ -130,6 +166,9 @@ public class CreatorsFormView extends Composite implements FormValidator{
} }
/**
* Sets the removable creators.
*/
private void setRemovableCreators() { private void setRemovableCreators() {
for (int i=0; i<listCreatorView.size(); i++) { for (int i=0; i<listCreatorView.size(); i++) {
@ -143,24 +182,36 @@ public class CreatorsFormView extends Composite implements FormValidator{
/** /**
* Read list of creators from view. * Read list of creators from view.
* *
* @return the list * @return the list<? extends zenodo author>
*/ */
public List<ZenodoCreator> readListOfCreatorsFromView(){ public List<? extends ZenodoAuthor> readListOfCreatorsFromView(){
List<ZenodoCreator> listCreators = new ArrayList<ZenodoCreator>(listCreatorView.size());
List<ZenodoAuthor> listAuthors = new ArrayList<>(listCreatorView.size());
for (CreatorView creatorView : listCreatorView) { for (CreatorView creatorView : listCreatorView) {
listCreators.add(new ZenodoCreator(creatorView.getField_name().getValue(), creatorView.getField_affiliation().getValue(), creatorView.getField_affiliation().getValue(), null)); ZenodoAuthor author = creatorView.getAuthor();
author.setName(creatorView.getField_name().getValue());
author.setAffiliation(creatorView.getField_affiliation().getValue());
author.setOrcid(creatorView.getField_orcid().getValue());
listAuthors.add(author);
} }
return listCreators; return listAuthors;
} }
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.FormValidator#isValidForm()
*/
@Override @Override
public boolean isValidForm() { public boolean isValidForm() {
return validateFormFields()==null; return validateFormFields()==null;
} }
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.client.view.FormValidator#validateFormFields()
*/
@Override @Override
public String validateFormFields() { public String validateFormFields() {
@ -171,7 +222,7 @@ public class CreatorsFormView extends Composite implements FormValidator{
boolean isValid = FieldUtil.isValidValue(value); boolean isValid = FieldUtil.isValidValue(value);
if(!isValid) { if(!isValid) {
FieldUtil.setControlGroup(cgAuthor, ControlGroupType.ERROR); FieldUtil.setControlGroup(cgAuthor, ControlGroupType.ERROR);
return "The Author Name is required"; return "The Name is required";
} }
/* /*

View File

@ -2,12 +2,15 @@ package org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.basicinformati
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
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.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.ZenodoAuthor;
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;
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;
@ -36,7 +39,8 @@ public class BasicInformationView extends Composite implements FormValidator {
/** The ui binder. */ /** The ui binder. */
private static BasicInformationViewUiBinder uiBinder = GWT.create(BasicInformationViewUiBinder.class); private static BasicInformationViewUiBinder uiBinder = GWT.create(BasicInformationViewUiBinder.class);
private CreatorsFormView creatorsView; private List<CreatorsFormView> listOfCreatorsView;
private List<CreatorsFormView> listOfContributorsView;
/** /**
* The Interface CreateTaskConfigurationViewUiBinder. * The Interface CreateTaskConfigurationViewUiBinder.
@ -88,6 +92,8 @@ public class BasicInformationView extends Composite implements FormValidator {
private ZenodoItem zenodoItem; private ZenodoItem zenodoItem;
/** /**
* Because this class has a default constructor, it can be used as a binder * Because this class has a default constructor, it can be used as a binder
* template. In other words, it can be used in other *.ui.xml files as follows: * template. In other words, it can be used in other *.ui.xml files as follows:
@ -167,27 +173,27 @@ public class BasicInformationView extends Composite implements FormValidator {
//Upload type //Upload type
if(zMeta.getUpload_type()!=null) { if(zMeta.getUpload_type()!=null) {
addValuesToListBox(field_upload_type, zMeta.getUpload_type().getSelectableValues()); FieldUtil.addValuesToListBox(field_upload_type, zMeta.getUpload_type().getSelectableValues());
selectValueToListBox(field_upload_type, zMeta.getUpload_type().getSelectedValues()); FieldUtil.selectValueToListBox(field_upload_type, zMeta.getUpload_type().getSelectedValues());
}else }else
field_upload_type.setEnabled(false); field_upload_type.setEnabled(false);
//Publication Type //Publication Type
if(zMeta.getPublication_type()!=null) { if(zMeta.getPublication_type()!=null) {
addValuesToListBox(field_publication_type, zMeta.getPublication_type().getSelectableValues()); FieldUtil.addValuesToListBox(field_publication_type, zMeta.getPublication_type().getSelectableValues());
selectValueToListBox(field_publication_type, zMeta.getPublication_type().getSelectedValues()); FieldUtil.selectValueToListBox(field_publication_type, zMeta.getPublication_type().getSelectedValues());
}else }else
field_publication_type.setEnabled(false); field_publication_type.setEnabled(false);
if(zMeta.getAccess_right()!=null) { if(zMeta.getAccess_right()!=null) {
addValuesToListBox(field_access_right, zMeta.getAccess_right().getSelectableValues()); FieldUtil.addValuesToListBox(field_access_right, zMeta.getAccess_right().getSelectableValues());
selectValueToListBox(field_access_right, zMeta.getAccess_right().getSelectedValues()); FieldUtil.selectValueToListBox(field_access_right, zMeta.getAccess_right().getSelectedValues());
}else }else
field_access_right.setEnabled(false); field_access_right.setEnabled(false);
if(zMeta.getLicense()!=null) { if(zMeta.getLicense()!=null) {
addValuesToListBox(field_license, Arrays.asList(zMeta.getLicense().getId())); FieldUtil.addValuesToListBox(field_license, Arrays.asList(zMeta.getLicense().getId()));
selectValueToListBox(field_license, Arrays.asList(zMeta.getLicense().getId())); FieldUtil.selectValueToListBox(field_license, Arrays.asList(zMeta.getLicense().getId()));
} }
field_license.setEnabled(false); //because is not changeable field_license.setEnabled(false); //because is not changeable
@ -196,10 +202,28 @@ public class BasicInformationView extends Composite implements FormValidator {
the_tags_panel.addTagElement(keyword); the_tags_panel.addTagElement(keyword);
} }
} }
if(listOfCreatorsView==null)
listOfCreatorsView = new ArrayList<CreatorsFormView>();
if(listOfContributorsView==null)
listOfContributorsView = new ArrayList<CreatorsFormView>();
// ADDING AUTHORS // ADDING AUTHORS
creatorsView = new CreatorsFormView(zenodoItem.getMetadata().getCreators()); CreatorsFormView authorView = new CreatorsFormView(zenodoItem.getMetadata().getCreators());
fieldset_basic_informations.add(creatorsView); listOfCreatorsView.add(authorView);
CreatorsFormView contributorView = new CreatorsFormView(zenodoItem.getMetadata().getContributors());
listOfContributorsView.add(contributorView);
for (CreatorsFormView cfv : listOfCreatorsView) {
fieldset_basic_informations.add(cfv);
}
for (CreatorsFormView cfv : listOfContributorsView) {
fieldset_basic_informations.add(cfv);
}
} }
// if(zenodoItem.getFiles()!=null) { // if(zenodoItem.getFiles()!=null) {
@ -210,43 +234,43 @@ public class BasicInformationView extends Composite implements FormValidator {
// } // }
} }
/** // /**
* Adds the values to list box. // * Adds the values to list box.
* // *
* @param list the list // * @param list the list
* @param listValues the list values // * @param listValues the list values
*/ // */
private void addValuesToListBox(ListBox list, List<String> listValues) { // private void addValuesToListBox(ListBox list, List<String> listValues) {
if (listValues == null) // if (listValues == null)
return; // return;
//
for (int i = 0; i < listValues.size(); i++) { // for (int i = 0; i < listValues.size(); i++) {
list.addItem(listValues.get(i), listValues.get(i)); // list.addItem(listValues.get(i), listValues.get(i));
} // }
} // }
//
/** // /**
* Select value to list box. // * Select value to list box.
* // *
* @param list the list // * @param list the list
* @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); // 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;
} else { // } else {
selectValue = values.get(0); // selectValue = values.get(0);
} // }
//
try { // try {
if (list.getItemCount() > 0) // if (list.getItemCount() > 0)
list.setSelectedValue(selectValue); // list.setSelectedValue(selectValue);
} catch (Exception e) { // } catch (Exception e) {
GWT.log("error: " + e); // GWT.log("error: " + e);
} // }
} // }
// private void addFileForPublishing(ZenodoFile file) { // private void addFileForPublishing(ZenodoFile file) {
// PublishFileView pv = new PublishFileView(); // PublishFileView pv = new PublishFileView();
@ -367,16 +391,26 @@ public class BasicInformationView extends Composite implements FormValidator {
} }
} }
//Validating Authors //Validating Creators
if(creatorsView!=null) { for (CreatorsFormView cfv : listOfCreatorsView) {
String error = creatorsView.validateFormFields(); String error = cfv.validateFormFields();
if(error!=null) { if(error!=null) {
error_alert.setVisible(true); error_alert.setVisible(true);
error_alert.setText(error); error_alert.setText(error);
return error; return error;
} }
} }
//Validating Contributors
for (CreatorsFormView cfv : listOfContributorsView) {
String error = cfv.validateFormFields();
if(error!=null) {
error_alert.setVisible(true);
error_alert.setText(error);
return error;
}
}
return null; return null;
} }
@ -401,60 +435,152 @@ public class BasicInformationView extends Composite implements FormValidator {
return box.getText(); return box.getText();
} }
public CreatorsFormView getCreatorsView() { /**
return creatorsView; * Gets the list of contributors view.
*
* @return the list of contributors view
*/
public List<CreatorsFormView> getListOfContributorsView() {
return listOfContributorsView;
}
/**
* Gets the list of creators view.
*
* @return the list of creators view
*/
public List<CreatorsFormView> getListOfCreatorsView() {
return listOfCreatorsView;
}
/**
* Gets the list of authors.
*
* @return the list of authors
*/
public List<ZenodoCreator> getListOfCreators() {
List<ZenodoCreator> listOfCreators = new ArrayList<>();
for (CreatorsFormView cfv : listOfCreatorsView) {
List<? extends ZenodoAuthor> listOfUsers = cfv.readListOfCreatorsFromView();
for (ZenodoAuthor zenodoAuthor : listOfUsers) {
listOfCreators.add((ZenodoCreator) zenodoAuthor);
}
}
return listOfCreators;
} }
/** /**
* Gets the list of creators. * Gets the list of contributors.
* *
* @return the list of creators * @return the list of contributors
*/ */
public List<ZenodoCreator> getListOfCreators() { public List<ZenodoContributor> getListOfContributors() {
return creatorsView.readListOfCreatorsFromView(); List<ZenodoContributor> listOfContributors = new ArrayList<>();
for (CreatorsFormView cfv : listOfContributorsView) {
List<? extends ZenodoAuthor> listOfUsers = cfv.readListOfCreatorsFromView();
for (ZenodoAuthor zenodoAuthor : listOfUsers) {
listOfContributors.add((ZenodoContributor) zenodoAuthor);
}
}
return listOfContributors;
} }
/**
* Gets the field title.
*
* @return the field title
*/
public TextBox getField_title() { public TextBox getField_title() {
return field_title; return field_title;
} }
/**
* Gets the field doi.
*
* @return the field doi
*/
public TextBox getField_doi() { public TextBox getField_doi() {
return field_doi; return field_doi;
} }
/**
* Gets the fieldset basic informations.
*
* @return the fieldset basic informations
*/
public Fieldset getFieldset_basic_informations() { public Fieldset getFieldset_basic_informations() {
return fieldset_basic_informations; return fieldset_basic_informations;
} }
/**
* Gets the field description.
*
* @return the field description
*/
public TextArea getField_description() { public TextArea getField_description() {
return field_description; return field_description;
} }
/**
* Gets the field upload type.
*
* @return the field upload type
*/
public ListBox getField_upload_type() { public ListBox getField_upload_type() {
return field_upload_type; return field_upload_type;
} }
/**
* Gets the field access right.
*
* @return the field access right
*/
public ListBox getField_access_right() { public ListBox getField_access_right() {
return field_access_right; return field_access_right;
} }
/**
* Gets the field license.
*
* @return the field license
*/
public ListBox getField_license() { public ListBox getField_license() {
return field_license; return field_license;
} }
/**
* Gets the field publication type.
*
* @return the field publication type
*/
public ListBox getField_publication_type() { public ListBox getField_publication_type() {
return field_publication_type; return field_publication_type;
} }
/**
* Gets the field publication date.
*
* @return the field publication date
*/
public DateBox getField_publication_date() { public DateBox getField_publication_date() {
return field_publication_date; return field_publication_date;
} }
/**
* Gets the error alert.
*
* @return the error alert
*/
public Alert getError_alert() { public Alert getError_alert() {
return error_alert; return error_alert;
} }
/**
* Gets the tags.
*
* @return the tags
*/
public List<String> getTags() { public List<String> getTags() {
return the_tags_panel.getTags(); return the_tags_panel.getTags();
} }

View File

@ -3,6 +3,7 @@ package org.gcube.portlets.widgets.ckan2zenodopublisher.client.ui.publishfile;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile; import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile;
import org.gcube.portlets.widgets.switchbutton.client.SwitchButton; import org.gcube.portlets.widgets.switchbutton.client.SwitchButton;
import com.github.gwtbootstrap.client.ui.Label;
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.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeEvent;
@ -28,6 +29,9 @@ public class PublishFileView extends Composite {
@UiField @UiField
TextBox field_file_name; TextBox field_file_name;
@UiField
Label field_label_info;
private ZenodoFile file; private ZenodoFile file;
@ -77,6 +81,23 @@ public class PublishFileView extends Composite {
return switchButton; return switchButton;
} }
/**
* Hide switch button.
*
* @param bool the bool
* @param msg the msg
*/
public void hideSwitchButton(boolean bool, String msg) {
if(bool) {
switchButton.setVisible(false);
}else {
switchButton.setVisible(true);
}
field_label_info.setText(msg);
}
/** /**
* Gets the field file name. * Gets the field file name.
* *

View File

@ -25,7 +25,7 @@
</b:TextBox> </b:TextBox>
<g:HorizontalPanel <g:HorizontalPanel
addStyleNames="{style.to-publish-hr}"> addStyleNames="{style.to-publish-hr}">
<b:Label type="INFO" addStyleNames="{style.to-padding}">Publish</b:Label> <b:Label type="INFO" addStyleNames="{style.to-padding}" ui:field="field_label_info">Publish</b:Label>
<citem:SwitchButton ui:field="switchButton" <citem:SwitchButton ui:field="switchButton"
addStyleNames="{style.padding-left-10}"></citem:SwitchButton> addStyleNames="{style.padding-left-10}"></citem:SwitchButton>
</g:HorizontalPanel> </g:HorizontalPanel>

View File

@ -5,9 +5,10 @@ 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.SerializableEnum;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoAuthor;
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;
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;
@ -121,8 +122,12 @@ public class Ckan2ZenodoViewManager {
ZenodoMetadata meta = zenodoItem.getMetadata(); ZenodoMetadata meta = zenodoItem.getMetadata();
meta.setDescription(basicForm.getField_description().getValue()); meta.setDescription(basicForm.getField_description().getValue());
meta.setKeywords(basicForm.getTags()); // these are the keywords meta.setKeywords(basicForm.getTags()); // these are the keywords
List<ZenodoCreator> creators = basicForm.getListOfCreators(); List<ZenodoCreator> creators = basicForm.getListOfCreators();
meta.setCreators(creators); meta.setCreators(creators);
List<ZenodoContributor> contributors = basicForm.getListOfContributors();
meta.setContributors(contributors);
// upload type // upload type
String uploadType = basicForm.getField_upload_type().getSelectedValue(); String uploadType = basicForm.getField_upload_type().getSelectedValue();
@ -143,7 +148,7 @@ public class Ckan2ZenodoViewManager {
// Updating list of file for publishing // Updating list of file for publishing
List<ZenodoFile> publishingFile = getListFileToPublish(); List<ZenodoFile> publishingFile = getListFileToPublish();
zenodoItem.setFiles(publishingFile); zenodoItem.addFiles(publishingFile);
return zenodoItem; return zenodoItem;

View File

@ -1,6 +1,9 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view; package org.gcube.portlets.widgets.ckan2zenodopublisher.client.view;
import java.util.List;
import com.github.gwtbootstrap.client.ui.ControlGroup; import com.github.gwtbootstrap.client.ui.ControlGroup;
import com.github.gwtbootstrap.client.ui.ListBox;
import com.github.gwtbootstrap.client.ui.TextBox; 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;
@ -72,4 +75,45 @@ public class FieldUtil {
return box.getText(); return box.getText();
} }
/**
* Adds the values to list box.
*
* @param list the list
* @param listValues the list values
*/
public static void addValuesToListBox(ListBox list, List<String> listValues) {
if (listValues == null)
return;
for (int i = 0; i < listValues.size(); i++) {
list.addItem(listValues.get(i), listValues.get(i));
}
}
/**
* Select value to list box.
*
* @param list the list
* @param values the values
*/
public static void selectValueToListBox(ListBox list, List<String> values) {
GWT.log("Selecting value: "+values);
String selectValue = null;
if (values == null || values.isEmpty()) {
selectValue = null;
} else {
selectValue = values.get(0);
}
try {
if (list.getItemCount() > 0)
list.setSelectedValue(selectValue);
} catch (Exception e) {
GWT.log("error: " + e);
}
}
} }

View File

@ -35,6 +35,10 @@ public class PublishFileViewManager {
PublishFileView pv = new PublishFileView(file); PublishFileView pv = new PublishFileView(file);
pv.getField_file_name().setValue(file.getFilename()); pv.getField_file_name().setValue(file.getFilename());
pv.getSwitchButton().setValue(true); pv.getSwitchButton().setValue(true);
if(file.getIsAlreadyPublished()) {
pv.hideSwitchButton(true, "File already published on Zenodo");
}
return pv; return pv;
} }

View File

@ -1,9 +1,13 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.server; package org.gcube.portlets.widgets.ckan2zenodopublisher.server;
import java.util.ArrayList; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.gcube.data.publishing.ckan2zenodo.Ckan2Zenodo; import org.gcube.data.publishing.ckan2zenodo.Ckan2Zenodo;
import org.gcube.data.publishing.ckan2zenodo.Ckan2ZenodoImpl;
import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor; import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor;
import org.gcube.data.publishing.ckan2zenodo.model.CkanResource; import org.gcube.data.publishing.ckan2zenodo.model.CkanResource;
import org.gcube.data.publishing.ckan2zenodo.model.faults.ConfigurationException; import org.gcube.data.publishing.ckan2zenodo.model.faults.ConfigurationException;
@ -12,7 +16,6 @@ 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.DepositionMetadata;
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;
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZenodoPublisherService; import org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZenodoPublisherService;
@ -29,6 +32,10 @@ import com.liferay.portal.service.UserLocalServiceUtil;
/** /**
* The server side implementation of the RPC service. * The server side implementation of the RPC service.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Jan 15, 2020
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet implements CkanToZenodoPublisherService { public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet implements CkanToZenodoPublisherService {
@ -36,6 +43,9 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
private static Logger LOG = LoggerFactory.getLogger(CkanToZenodoPublisherServiceImpl.class); private static Logger LOG = LoggerFactory.getLogger(CkanToZenodoPublisherServiceImpl.class);
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZenodoPublisherService#publishOnZenodo(org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem)
*/
@Override @Override
public String publishOnZenodo(ZenodoItem zenodoItem) throws Exception { public String publishOnZenodo(ZenodoItem zenodoItem) throws Exception {
@ -46,48 +56,61 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
PortalUtils.getCurrentToken(this.getThreadLocalRequest(), true); PortalUtils.getCurrentToken(this.getThreadLocalRequest(), true);
} }
ZenodoDeposition zdPreview=loadItemPreviewFromService(zenodoItem.getName()); ZenodoDeposition zenodoDepositionPreview=loadItemPreviewFromService(zenodoItem.getName());
//(EVENTUALLY) UPDATING BASIC INFO CHANGED BY FORM ON CLIENT-SIDE
//(EVENTUALLY) UPDATING INFO CHANGED BY FORM ON CLIENT-SIDE
//Basic info //Basic info
zdPreview.setTitle(zenodoItem.getTitle()); zenodoDepositionPreview.setTitle(zenodoItem.getTitle());
//Files
if(zenodoItem.getFiles()!=null) {
ArrayList<FileDeposition> listOfFiles = new ArrayList<FileDeposition>(zenodoItem.getFiles().size());
for (ZenodoFile zf : zenodoItem.getFiles()) {
FileDeposition fileDepos = ItemToZenodoConverter.toServiceFileDeposition(zf);
listOfFiles.add(fileDepos);
}
zdPreview.setFiles(listOfFiles);
}
//Updating Deposition Metadata potentially changed on client-side //Updating Deposition Metadata potentially changed on client-side
ZenodoMetadata metadata = zenodoItem.getMetadata(); ZenodoMetadata metadata = zenodoItem.getMetadata();
DepositionMetadata depositionMetadata = zdPreview.getMetadata(); DepositionMetadata depositionMetadata = zenodoDepositionPreview.getMetadata();
depositionMetadata = ItemToZenodoConverter.updateMetadataInfoOfDepositionMetadata(metadata, depositionMetadata); depositionMetadata = ItemToZenodoConverter.updateMetadataInfoOfDepositionMetadata(metadata, depositionMetadata);
zdPreview.setMetadata(depositionMetadata); zenodoDepositionPreview.setMetadata(depositionMetadata);
//Ckan2ZenodoImpl.publish(item.getItemName()); //Loading Filtered resources according to VRE policies
//Eventually update values List<CkanResource> filteredResources = loadFilterResources(zenodoItem.getName());
//zdPreview.getMetadata().setAccess_conditions("Ask me");
HashSet<CkanResource> toUpload = new HashSet<CkanResource>();
//Adding for publishing only the resources selected on clien-side
if(zenodoItem.getFiles()!=null) {
for (ZenodoFile zf : zenodoItem.getFiles()) {
for (CkanResource ckanResource : filteredResources) {
if(zf.getId().compareTo(ckanResource.getId())==0 && zf.getIsAlreadyPublished()==false) {
toUpload.add(ckanResource);
}
}
}
}
//Actually publish to zenodo : //Actually publish to zenodo :
// Step 1 : metadata // Step 1 : metadata
// Ckan2Zenodo client= Ckan2Zenodo.get(); Ckan2Zenodo client= new Ckan2ZenodoImpl();
// CkanItemDescriptor item=client.read(zenodoItem.getName()); zenodoDepositionPreview = client.updatedMetadata(zenodoDepositionPreview);
// zdPreview = client.updatedMetadata(zdPreview);
//Step 2 : publish Resources //Step 2 : publish Resources
// Future<ZenodoDeposition> future_Dep=client.uploadFiles(Collections.singleton(toFilter.get(0)), zdPreview); if(toUpload.size()>0) {
// ZenodoDeposition preview = future_Dep.get(); LOG.debug("Trying to publish the set of CKAN resources: "+toUpload.toString());
Future<ZenodoDeposition> future_Dep=client.uploadFiles(toUpload, zenodoDepositionPreview);
//Finalize while(!future_Dep.isDone()) {
LOG.debug("Waiting for completed future computation (publishing of resources on Zenodo)...");
Thread.sleep(2000);
}
zenodoDepositionPreview = future_Dep.get(180,TimeUnit.SECONDS);
}
// Get the item representation // Get the item representation
CkanItemDescriptor item=client.read(zenodoItem.getName());
//Finalize
client.publish(zenodoDepositionPreview, item);
return zenodoDepositionPreview.toString();
}catch (TimeoutException e) {
String error = "I'm waiting too time for publishing on Zenodo the catalogue item: "+zenodoItem.getName()+". Check by yourself the result later";
LOG.error(error, e);
String clientError = String.format("%s", error);
throw new Exception(clientError);
//client.publish(zdPreview, item);
return zdPreview.toString();
} catch (Exception e) { } catch (Exception e) {
String error = "Error when publishing on Zenodo the catalogue item: "+zenodoItem.getName(); String error = "Error when publishing on Zenodo the catalogue item: "+zenodoItem.getName();
LOG.error(error, e); LOG.error(error, e);
@ -97,6 +120,9 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
} }
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZenodoPublisherService#convertToZenodoItem(org.gcube.portlets.widgets.ckan2zenodopublisher.shared.CatalogueItem)
*/
@Override @Override
public ZenodoItem convertToZenodoItem(CatalogueItem item) throws Exception { public ZenodoItem convertToZenodoItem(CatalogueItem item) throws Exception {
@ -109,12 +135,18 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
//Get a preview of the deposition to be published //Get a preview of the deposition to be published
ZenodoDeposition zdPreview=loadItemPreviewFromService(item.getItemName()); ZenodoDeposition zdPreview=loadItemPreviewFromService(item.getItemName());
//Filter resources according to VRE policies
//List<CkanResource> toFilterFiles=client.filterResources(itemDescr);
//zdPreview.setFiles(toFilterFiles); //Loading Filtered resources according to VRE policies
List<CkanResource> filteredResources = loadFilterResources(item.getItemName());
LOG.debug("Loaded filtered resources: "+filteredResources);
//Converting ZenodoDeposition to ZenodoItem
ZenodoItem zenodoItem = ItemToZenodoConverter.toZenodoItem(zdPreview); ZenodoItem zenodoItem = ItemToZenodoConverter.toZenodoItem(zdPreview);
//Adding the filtered resources
List<ZenodoFile> resources = ItemToZenodoConverter.toZenodoFiles(filteredResources, false);
zenodoItem.addFiles(resources);
zenodoItem.setName(item.getItemName()); zenodoItem.setName(item.getItemName());
LOG.debug("Returning item: "+zenodoItem); LOG.debug("Returning item: "+zenodoItem);
return zenodoItem; return zenodoItem;
@ -152,31 +184,45 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
* Load item preview from service. * Load item preview from service.
* *
* @param itemName the item name * @param itemName the item name
* @return * @return the zenodo deposition
* @throws GcatException * @throws GcatException the gcat exception
* @throws TransformationException * @throws InvalidItemException the invalid item exception
* @throws ConfigurationException * @throws ZenodoException the zenodo exception
* @throws ZenodoException * @throws ConfigurationException the configuration exception
* @throws InvalidItemException * @throws TransformationException the transformation exception
*/ */
private ZenodoDeposition loadItemPreviewFromService(String itemName) throws GcatException, InvalidItemException, ZenodoException, ConfigurationException, TransformationException { private ZenodoDeposition loadItemPreviewFromService(String itemName) throws GcatException, InvalidItemException, ZenodoException, ConfigurationException, TransformationException {
Ckan2Zenodo client= Ckan2Zenodo.get(); Ckan2Zenodo client= new Ckan2ZenodoImpl();
// Get the item representation // Get the item representation
CkanItemDescriptor itemDescr=client.read(itemName); CkanItemDescriptor itemDescr=client.read(itemName);
//Get a preview of the deposition to be published //Get a preview of the deposition to be published
ZenodoDeposition zenodoDeposition = client.translate(itemDescr); return client.translate(itemDescr);
}
/**
* Load filter resources.
*
* @param itemName the item name
* @return the list
* @throws GcatException the gcat exception
* @throws ConfigurationException the configuration exception
* @throws TransformationException the transformation exception
*/
private List<CkanResource> loadFilterResources(String itemName) throws GcatException, ConfigurationException, TransformationException {
Ckan2Zenodo client= new Ckan2ZenodoImpl();
// Get the item representation
CkanItemDescriptor itemDescr=client.read(itemName);
//Filter resources according to VRE policies //Filter resources according to VRE policies
List<CkanResource> toFilter=client.filterResources(itemDescr); return client.filterResources(itemDescr);
return zenodoDeposition;
} }
/** /**
* Online or in development mode? * Online or in development mode?.
*
* @return true if you're running into the portal, false if in development * @return true if you're running into the portal, false if in development
*/ */
private boolean isOutFromPortal() { private boolean isOutFromPortal() {

View File

@ -3,6 +3,7 @@ package org.gcube.portlets.widgets.ckan2zenodopublisher.server.converter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.gcube.data.publishing.ckan2zenodo.model.CkanResource;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Community; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Community;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Contributor; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Contributor;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Creator; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Creator;
@ -72,13 +73,9 @@ public class ItemToZenodoConverter {
zi.setDoi(zenodoDeposition.getDoi()); zi.setDoi(zenodoDeposition.getDoi());
zi.setCreated(zenodoDeposition.getCreated()); zi.setCreated(zenodoDeposition.getCreated());
if(zenodoDeposition.getFiles()!=null) { //Add files already published in the deposition
List<ZenodoFile> listOfFiles = new ArrayList<ZenodoFile>(zenodoDeposition.getFiles().size()); List<ZenodoFile> files = toZenodoFiles(zenodoDeposition.getFiles(),true);
for (FileDeposition fileDeposition : zenodoDeposition.getFiles()) { zi.addFiles(files);
listOfFiles.add(toZenodoFile(fileDeposition));
}
zi.setFiles(listOfFiles);
}
zi.setModified(zenodoDeposition.getModified()); zi.setModified(zenodoDeposition.getModified());
zi.setOwner(zenodoDeposition.getOwner()); zi.setOwner(zenodoDeposition.getOwner());
@ -95,13 +92,56 @@ public class ItemToZenodoConverter {
return zi; return zi;
} }
/**
* Adds the files.
*
* @param files the files
* @param filesAlreadyPublished the files already published
* @return the list
*/
private static List<ZenodoFile> toZenodoFiles(ArrayList<FileDeposition> files, boolean filesAlreadyPublished) {
if(files==null)
return null;
List<ZenodoFile> listOfFiles = new ArrayList<ZenodoFile>(files.size());
for (FileDeposition fileDeposition : files) {
listOfFiles.add(toZenodoFile(fileDeposition, filesAlreadyPublished));
}
return listOfFiles;
}
/**
* To zenodo files.
*
* @param filteredResources the filtered resources
* @param filesAlreadyPublished the files already published
* @return the list
*/
public static List<ZenodoFile> toZenodoFiles(List<CkanResource> filteredResources, boolean filesAlreadyPublished) {
if(filteredResources==null)
return null;
List<ZenodoFile> listOfFiles = new ArrayList<ZenodoFile>(filteredResources.size());
for (CkanResource ckanResource : filteredResources) {
listOfFiles.add(toZenodoFile(ckanResource,filesAlreadyPublished));
}
return listOfFiles;
}
/** /**
* To zenodo file. * To zenodo file.
* *
* @param fileDeposition the file deposition * @param fileDeposition the file deposition
* @param fileAlreadyPublished the file already published
* @return the zenodo file * @return the zenodo file
*/ */
public static ZenodoFile toZenodoFile(FileDeposition fileDeposition) { public static ZenodoFile toZenodoFile(FileDeposition fileDeposition, boolean fileAlreadyPublished) {
if(fileDeposition==null) if(fileDeposition==null)
return null; return null;
@ -109,11 +149,38 @@ public class ItemToZenodoConverter {
ZenodoFile zf = new ZenodoFile(); ZenodoFile zf = new ZenodoFile();
zf.setId(fileDeposition.getId()); zf.setId(fileDeposition.getId());
zf.setFilename(fileDeposition.getFilename()); zf.setFilename(fileDeposition.getFilename());
zf.setFilesize(fileDeposition.getFilesize()); zf.setFilesize(fileDeposition.getFilesize()+"");
zf.setChecksum(fileDeposition.getChecksum()); zf.setChecksum(fileDeposition.getChecksum());
zf.setIsAlreadyPublished(fileAlreadyPublished);
return zf; return zf;
} }
/**
* To zenodo file.
*
* @param ckanResource the ckan resource
* @param fileAlreadyPublished the file already published
* @return the zenodo file
*/
public static ZenodoFile toZenodoFile(CkanResource ckanResource, boolean fileAlreadyPublished) {
if(ckanResource==null)
return null;
ZenodoFile zf = new ZenodoFile();
zf.setId(ckanResource.getId());
zf.setFilename(ckanResource.getName());
zf.setFilesize(ckanResource.getSize());
zf.setChecksum(null);
zf.setMimeType(ckanResource.getMimetype());
zf.setFormat(ckanResource.getFormat());
zf.setDescription(ckanResource.getDescription());
zf.setIsAlreadyPublished(fileAlreadyPublished);
return zf;
}
/** /**
* To zenodo metadata. * To zenodo metadata.
* *
@ -303,7 +370,7 @@ public class ItemToZenodoConverter {
List<ZenodoCreator> list = new ArrayList<ZenodoCreator>(creators.size()); List<ZenodoCreator> list = new ArrayList<ZenodoCreator>(creators.size());
for (Creator contr : creators) { for (Creator contr : creators) {
ZenodoContributor zc = new ZenodoContributor(); ZenodoCreator zc = new ZenodoCreator();
zc.setAffiliation(contr.getAffiliation()); zc.setAffiliation(contr.getAffiliation());
zc.setGnd(contr.getGnd()); zc.setGnd(contr.getGnd());
zc.setName(contr.getName()); zc.setName(contr.getName());
@ -315,102 +382,6 @@ public class ItemToZenodoConverter {
} }
// /**
// * **
// *
// *
// * TO SERVICE.
// *
// * @param zenodoItem the zenodo item
// * @param zenodoDeposition the zenodo deposition
// * @return the zenodo deposition
// */
//
// /**
// * To service zenodo deposition.
// *
// * @param zenodoItem the zenodo item
// */
// public static ZenodoDeposition toServiceZenodoDeposition(ZenodoItem zenodoItem, ZenodoDeposition zenodoDeposition) {
//
// if(zenodoItem==null)
// return zenodoDeposition;
//
// //zenodoDeposition.setId(zenodoItem.getId());
// //zenodoDeposition.setDoi(zenodoItem.getDoi());
// //zenodoDeposition.setCreated(zenodoItem.getCreated());
//
// zenodoDeposition.setTitle(zenodoItem.getTitle());
//
// if(zenodoItem.getFiles()!=null) {
// ArrayList<FileDeposition> listOfFiles = new ArrayList<FileDeposition>(zenodoItem.getFiles().size());
// for (ZenodoFile zf : zenodoItem.getFiles()) {
// listOfFiles.add(toServiceZenodoDeposition(zf));
// }
// zenodoDeposition.setFiles(listOfFiles);
// }
//
// //zenodoDeposition.setModified(zenodoItem.getModified());
// //zenodoDeposition.setOwner(zenodoItem.getOwner());
// //zenodoDeposition.setRecord_id(zenodoItem.getRecord_id());
//// try {
//// zenodoDeposition.setRecord_url(zenodoItem.getRecord_url()!=null?new URL(zenodoItem.getRecord_url()):null);
//// } catch (MalformedURLException e) {
//// LOG.warn(e.getMessage());
//// }
//
//// zenodoDeposition.setState(zenodoItem.getState());
//// zenodoDeposition.setSubmitted(zenodoItem.getSubmitted());
// //zenodoDeposition.setMetadata(toServiceZenodoMetadata(zenodoItem.getMetadata(),zenodoDeposition.getMetadata()));
//
// return zenodoDeposition;
//
// }
//
// /**
// * To service zenodo metadata.
// *
// * @param zenodoMetadata the zenodo metadata
// * @param depositionMetadata the deposition metadata
// * @return the deposition metadata
// */
// public static DepositionMetadata toServiceZenodoMetadata(ZenodoMetadata zenodoMetadata, DepositionMetadata depositionMetadata){
//
// if(zenodoMetadata==null)
// return null;
//
// depositionMetadata.setAccess_conditions(depositionMetadata.getAccess_conditions());
// depositionMetadata.setDescription(depositionMetadata.getDescription());
//
// if(depositionMetadata.getAccess_right()!=null) {
// AccessRights[] ar = { depositionMetadata.getAccess_right() };
// SerializableEnum<String> sEnum = CkanToZenodoUtil.toSerializableEnum(ar, AccessRights.values());
// depositionMetadata.setAccess_right(sEnum);
// }
//
// depositionMetadata.setCommunities(toZenodoCommunities(depositionMetadata.getCommunities()));
// depositionMetadata.setConference_acronym(depositionMetadata.getConference_acronym());
// depositionMetadata.setConference_dates(depositionMetadata.getConference_dates());
// depositionMetadata.setConference_place(depositionMetadata.getConference_place());
// depositionMetadata.setConference_session(depositionMetadata.getConference_session());
// depositionMetadata.setConference_session_part(depositionMetadata.getConference_session_part());
// depositionMetadata.setConference_title(depositionMetadata.getConference_title());
// depositionMetadata.setConference_url(depositionMetadata.getConference_url());
// depositionMetadata.setContributors(toZenodoContributors(depositionMetadata.getContributors()));
// depositionMetadata.setCreators(toZenodoCreators(depositionMetadata.getCreators()));
// depositionMetadata.setDates(toZenodDateIntervals(depositionMetadata.getDates()));
// depositionMetadata.setRelated_identifiers(toRelatedIdentifiers(depositionMetadata.getRelated_identifiers()));
// depositionMetadata.setSubjects(toZenodoSubjects(depositionMetadata.getSubjects()));
// depositionMetadata.setThesis_supervisors(toZenodoCreators(depositionMetadata.getThesis_supervisors()));
// depositionMetadata.setThesis_university(depositionMetadata.getThesis_university());
// depositionMetadata.setTitle(depositionMetadata.getTitle());
// depositionMetadata.setVersion(depositionMetadata.getVersion());
// return zm;
// }
/** /**
* To service file deposition. * To service file deposition.
* *
@ -425,7 +396,11 @@ public class ItemToZenodoConverter {
FileDeposition fileDep = new FileDeposition(); FileDeposition fileDep = new FileDeposition();
fileDep.setId(zenodoFile.getId()); fileDep.setId(zenodoFile.getId());
fileDep.setFilename(zenodoFile.getFilename()); fileDep.setFilename(zenodoFile.getFilename());
fileDep.setFilesize(zenodoFile.getFilesize()); try {
fileDep.setFilesize(Integer.parseInt(zenodoFile.getFilesize()));
}catch (Exception e) {
// TODO: handle exception
}
fileDep.setChecksum(zenodoFile.getChecksum()); fileDep.setChecksum(zenodoFile.getChecksum());
return fileDep; return fileDep;
} }
@ -472,4 +447,6 @@ public class ItemToZenodoConverter {
return depositionMetadata; return depositionMetadata;
} }
} }

View File

@ -0,0 +1,70 @@
package org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.SerializableEnum;
/**
* The Interface ZenodoAuthor.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Jan 15, 2020
*/
public interface ZenodoAuthor {
/**
* Gets the name.
*
* @return the name
*/
public String getName();
/**
* Gets the affiliation.
*
* @return the affiliation
*/
public String getAffiliation();
/**
* Gets the orcid.
*
* @return the orcid
*/
public String getOrcid();
/**
* Gets the gnd.
*
* @return the gnd
*/
public String getGnd();
/**
* Gets the type.
*
* @return the type
*/
public SerializableEnum<String> getType();
/**
* Sets the name.
*
* @param name the new name
*/
public void setName(String name);
/**
* Sets the affiliation.
*
* @param affiliation the new affiliation
*/
public void setAffiliation(String affiliation);
/**
* Sets the orcid.
*
* @param orcid the new orcid
*/
public void setOrcid(String orcid);
}

View File

@ -8,7 +8,7 @@ import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.SerializableEnum;
* *
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
* *
* Dec 10, 2019 * Jan 15, 2020
*/ */
public class ZenodoContributor extends ZenodoCreator{ public class ZenodoContributor extends ZenodoCreator{
@ -39,11 +39,19 @@ public class ZenodoContributor extends ZenodoCreator{
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCreator#getType()
*/
public SerializableEnum<String> getType() { public SerializableEnum<String> getType() {
return type; return type;
} }
/**
* Sets the type.
*
* @param type the new type
*/
public void setType(SerializableEnum<String> type) { public void setType(SerializableEnum<String> type) {
this.type = type; this.type = type;
} }

View File

@ -2,14 +2,17 @@ package org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped;
import java.io.Serializable; import java.io.Serializable;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.SerializableEnum;
/** /**
* The Class ZenodoCreator. * The Class ZenodoCreator.
* *
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
* *
* Dec 10, 2019 * Jan 15, 2020
*/ */
public class ZenodoCreator implements Serializable{ public class ZenodoCreator implements ZenodoAuthor, Serializable{
/** /**
@ -21,9 +24,20 @@ public class ZenodoCreator implements Serializable{
private String orcid; private String orcid;
private String gnd; private String gnd;
/**
* Instantiates a new zenodo creator.
*/
public ZenodoCreator(){} public ZenodoCreator(){}
/**
* Instantiates a new zenodo creator.
*
* @param name the name
* @param affiliation the affiliation
* @param orcid the orcid
* @param gnd the gnd
*/
public ZenodoCreator(String name, String affiliation, String orcid, String gnd) { public ZenodoCreator(String name, String affiliation, String orcid, String gnd) {
super(); super();
this.name = name; this.name = name;
@ -34,38 +48,81 @@ public class ZenodoCreator implements Serializable{
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoAuthor#getName()
*/
public String getName() { public String getName() {
return name; return name;
} }
/**
* Sets the name.
*
* @param name the new name
*/
public void setName(String name) { public void setName(String name) {
this.name = name; this.name = name;
} }
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoAuthor#getAffiliation()
*/
public String getAffiliation() { public String getAffiliation() {
return affiliation; return affiliation;
} }
/**
* Sets the affiliation.
*
* @param affiliation the new affiliation
*/
public void setAffiliation(String affiliation) { public void setAffiliation(String affiliation) {
this.affiliation = affiliation; this.affiliation = affiliation;
} }
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoAuthor#getOrcid()
*/
public String getOrcid() { public String getOrcid() {
return orcid; return orcid;
} }
/**
* Sets the orcid.
*
* @param orcid the new orcid
*/
public void setOrcid(String orcid) { public void setOrcid(String orcid) {
this.orcid = orcid; this.orcid = orcid;
} }
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoAuthor#getGnd()
*/
public String getGnd() { public String getGnd() {
return gnd; return gnd;
} }
/**
* Sets the gnd.
*
* @param gnd the new gnd
*/
public void setGnd(String gnd) { public void setGnd(String gnd) {
this.gnd = gnd; this.gnd = gnd;
} }
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoAuthor#getType()
*/
@Override
public SerializableEnum<String> getType() {
return null;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override @Override
public String toString() { public String toString() {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();

View File

@ -15,19 +15,31 @@ public class ZenodoFile implements Serializable{
/** /**
* *
*/ */
private static final long serialVersionUID = -844797695117716597L; private static final long serialVersionUID = 761497963654566281L;
private String id; private String id;
private String filename; private String filename;
private Integer filesize; private String description;
private String filesize;
private String checksum; private String checksum;
private String mimeType;
private String format;
private Boolean isAlreadyPublished = false; //Used by Portlet to check if the file is already published on Zenodo
public ZenodoFile(){} public ZenodoFile(){}
public ZenodoFile(String id, String filename, Integer filesize, String checksum) { public ZenodoFile(String id, String filename, String description, String filesize, String checksum, String mimeType,
String format, Boolean isAlreadyPublished) {
super();
this.id = id; this.id = id;
this.filename = filename; this.filename = filename;
this.description = description;
this.filesize = filesize; this.filesize = filesize;
this.checksum = checksum; this.checksum = checksum;
this.mimeType = mimeType;
this.format = format;
this.isAlreadyPublished = isAlreadyPublished;
} }
public String getId() { public String getId() {
@ -46,11 +58,19 @@ public class ZenodoFile implements Serializable{
this.filename = filename; this.filename = filename;
} }
public Integer getFilesize() { public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getFilesize() {
return filesize; return filesize;
} }
public void setFilesize(Integer filesize) { public void setFilesize(String filesize) {
this.filesize = filesize; this.filesize = filesize;
} }
@ -62,6 +82,30 @@ public class ZenodoFile implements Serializable{
this.checksum = checksum; this.checksum = checksum;
} }
public String getMimeType() {
return mimeType;
}
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
public Boolean getIsAlreadyPublished() {
return isAlreadyPublished;
}
public void setIsAlreadyPublished(Boolean isAlreadyPublished) {
this.isAlreadyPublished = isAlreadyPublished;
}
@Override @Override
public String toString() { public String toString() {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
@ -69,10 +113,18 @@ public class ZenodoFile implements Serializable{
builder.append(id); builder.append(id);
builder.append(", filename="); builder.append(", filename=");
builder.append(filename); builder.append(filename);
builder.append(", description=");
builder.append(description);
builder.append(", filesize="); builder.append(", filesize=");
builder.append(filesize); builder.append(filesize);
builder.append(", checksum="); builder.append(", checksum=");
builder.append(checksum); builder.append(checksum);
builder.append(", mimeType=");
builder.append(mimeType);
builder.append(", format=");
builder.append(format);
builder.append(", isAlreadyPublished=");
builder.append(isAlreadyPublished);
builder.append("]"); builder.append("]");
return builder.toString(); return builder.toString();
} }

View File

@ -57,12 +57,17 @@ public class ZenodoItem implements Serializable {
} }
/** /**
* Sets the files. * Adds the files.
* *
* @param files the new files * @param files the files
*/ */
public void setFiles(List<ZenodoFile> files) { public void addFiles(List<ZenodoFile> files) {
this.files = files;
if(this.files==null) {
this.files = files;
}else {
this.files.addAll(files);
}
} }
/** /**
@ -272,6 +277,9 @@ public class ZenodoItem implements Serializable {
this.name = name; this.name = name;
} }
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override @Override
public String toString() { public String toString() {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();

View File

@ -21,7 +21,11 @@ public class ZenodoMetadata implements Serializable{
private Date publication_date; private Date publication_date;
private String title; private String title;
private List<ZenodoCreator> creators; private List<ZenodoCreator> creators;
private List<ZenodoContributor> contributors;
private List<ZenodoCreator> thesis_supervisors;
private String description; // TODO HTML private String description; // TODO HTML
private SerializableEnum<String> access_right; private SerializableEnum<String> access_right;
@ -35,7 +39,6 @@ public class ZenodoMetadata implements Serializable{
private List<ZenodoRelatedIdentifier> related_identifiers; private List<ZenodoRelatedIdentifier> related_identifiers;
private List<ZenodoContributor> contributors;
private List<String> references; private List<String> references;
private List<ZenodoCommunity> communities; private List<ZenodoCommunity> communities;
private List<ZenodoGrant> grants; private List<ZenodoGrant> grants;
@ -55,7 +58,7 @@ public class ZenodoMetadata implements Serializable{
private String imprint_place; private String imprint_place;
private String partof_title; private String partof_title;
private String partof_pages; private String partof_pages;
private List<ZenodoCreator> thesis_supervisors;
private String thesis_university; private String thesis_university;
private List<ZenodoSubject> subjects; private List<ZenodoSubject> subjects;
private String version; private String version;
@ -63,6 +66,7 @@ public class ZenodoMetadata implements Serializable{
private List<ZenodoLocation> locations; private List<ZenodoLocation> locations;
private List<ZenodoDateInterval> dates; private List<ZenodoDateInterval> dates;
private String method; //TODO html private String method; //TODO html
private LicenseBean license; //TODO html private LicenseBean license; //TODO html
@ -71,8 +75,6 @@ public class ZenodoMetadata implements Serializable{
public SerializableEnum<String> getUpload_type() { public SerializableEnum<String> getUpload_type() {
if(upload_type==null)
return new SerializableEnum<>();
return upload_type; return upload_type;
} }
@ -122,7 +124,7 @@ public class ZenodoMetadata implements Serializable{
} }
public List<ZenodoCreator> getCreators() { public List<? extends ZenodoAuthor> getCreators() {
return creators; return creators;
} }
@ -222,7 +224,7 @@ public class ZenodoMetadata implements Serializable{
} }
public List<ZenodoContributor> getContributors() { public List<? extends ZenodoAuthor> getContributors() {
return contributors; return contributors;
} }

View File

@ -8,11 +8,9 @@
<!-- any one of the following lines. --> <!-- any one of the following lines. -->
<!--<inherits name='com.google.gwt.user.theme.standard.Standard' />--> <!--<inherits name='com.google.gwt.user.theme.standard.Standard' />-->
<inherits name="com.github.gwtbootstrap.Bootstrap" />
<inherits name='org.gcube.portlets.widgets.switchbutton.SwitchButton' /> <inherits name='org.gcube.portlets.widgets.switchbutton.SwitchButton' />
<inherits name='com.github.gwtbootstrap.datepicker.Datepicker' /> <inherits name='com.github.gwtbootstrap.datepicker.Datepicker' />
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<!-- Other module inherits --> <!-- Other module inherits -->
<!-- Specify the app entry point class. --> <!-- Specify the app entry point class. -->