121 lines
4.5 KiB
Java
121 lines
4.5 KiB
Java
package org.gcube.portlets.widgets.ckan2zenodopublisher.server;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
import org.gcube.data.publishing.ckan2zenodo.Ckan2Zenodo;
|
|
import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor;
|
|
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;
|
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZendoPublisherWidgetConstant;
|
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZenodoPublisherService;
|
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.server.converter.ItemToZenodoConverter;
|
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.CatalogueItem;
|
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
|
import com.liferay.portal.service.UserLocalServiceUtil;
|
|
|
|
/**
|
|
* The server side implementation of the RPC service.
|
|
*/
|
|
@SuppressWarnings("serial")
|
|
public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet implements CkanToZenodoPublisherService {
|
|
|
|
private static Logger LOG = LoggerFactory.getLogger(CkanToZenodoPublisherServiceImpl.class);
|
|
|
|
|
|
@Override
|
|
public String publishOnZenodo(CatalogueItem item) throws Exception {
|
|
|
|
try {
|
|
|
|
//Ckan2ZenodoImpl.publish(item.getItemName());
|
|
return null;
|
|
|
|
} catch (Exception e) {
|
|
String error = "Error on publishing on Zenodo the catalogue item: "+item.getItemName();
|
|
LOG.error(error, e);
|
|
String clientError = String.format("%s. %s", error, CkanToZendoPublisherWidgetConstant.MSG_OF_ERROR_REFRESH_AND_TRY_AGAIN_OR_CONTACT_THE_SUPPORT);
|
|
throw new Exception(clientError);
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public ZenodoItem convertToZenodoItem(CatalogueItem item) throws Exception {
|
|
|
|
try {
|
|
|
|
if(isOutFromPortal()) {
|
|
PortalUtils.getCurrentContext(this.getThreadLocalRequest(), true);
|
|
PortalUtils.getCurrentToken(this.getThreadLocalRequest(), true);
|
|
}
|
|
|
|
// Ckan2Zenodo client= Ckan2Zenodo.get();
|
|
//
|
|
// // Get the item representation
|
|
// CkanItemDescriptor itemDescr=client.read(item.getItemName());
|
|
//
|
|
// //Get a preview of the deposition to be published
|
|
// ZenodoDeposition zdPreview=client.translate(itemDescr);
|
|
//
|
|
// //Filter resources according to VRE policies
|
|
// //List<CkanResource> toFilterFiles=client.filterResources(itemDescr);
|
|
//
|
|
// //zdPreview.setFiles(toFilterFiles);
|
|
// return ItemToZenodoConverter.toZenodoItem(zdPreview);
|
|
|
|
// //TO TEST
|
|
ZenodoDeposition zd = new ZenodoDeposition();
|
|
zd.setTitle("My beautiful title");
|
|
ArrayList<FileDeposition> files = new ArrayList<FileDeposition>();
|
|
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<Creator>(), "My desr", AccessRights.open);
|
|
metadata.setDescription("My beautiful description");
|
|
List<RelatedIdentifier> related_identifiers = new ArrayList<RelatedIdentifier>(1);
|
|
related_identifiers.add(new RelatedIdentifier("12345", Relation.cites));
|
|
metadata.setRelated_identifiers(related_identifiers);
|
|
zd.setMetadata(metadata);
|
|
return ItemToZenodoConverter.toZenodoItem(zd);
|
|
|
|
} catch (Exception e) {
|
|
String error = "Error on converting the catalogue item: "+item.getItemName();
|
|
LOG.error(error, e);
|
|
String clientError = String.format("%s. %s", error, e.getMessage());
|
|
throw new Exception(clientError);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Online or in development mode?
|
|
* @return true if you're running into the portal, false if in development
|
|
*/
|
|
private boolean isOutFromPortal() {
|
|
try {
|
|
UserLocalServiceUtil.getService();
|
|
return false;
|
|
}
|
|
catch (com.liferay.portal.kernel.bean.BeanLocatorException ex) {
|
|
LOG.debug("Development Mode ON");
|
|
return true;
|
|
}
|
|
}
|
|
}
|