ckan2zenodo-publisher-widget/src/main/java/org/gcube/portlets/widgets/ckan2zenodopublisher/server/converter/ItemToZenodoConverter.java

636 lines
21 KiB
Java
Raw Normal View History

2019-12-10 16:31:06 +01:00
package org.gcube.portlets.widgets.ckan2zenodopublisher.server.converter;
import java.util.ArrayList;
2020-01-21 17:07:05 +01:00
import java.util.Date;
2019-12-10 16:31:06 +01:00
import java.util.List;
2020-01-15 17:51:22 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.CkanResource;
2019-12-10 16:31:06 +01:00
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.Type;
2019-12-10 16:31:06 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Creator;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DateInterval;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.AccessRights;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.ImageType;
2020-01-13 17:48:41 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.PublicationType;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.UploadType;
2019-12-10 16:31:06 +01:00
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;
2019-12-10 17:39:12 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Subject;
2019-12-10 16:31:06 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
import org.gcube.portlets.widgets.ckan2zenodopublisher.server.CkanToZenodoUtil;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.SerializableEnum;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoAuthor;
2019-12-10 16:31:06 +01:00
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCommunity;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoContributor;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoCreator;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoDateInterval;
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.ZenodoMetadata;
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoRelatedIdentifier;
2019-12-10 17:39:12 +01:00
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoSubject;
2020-01-10 17:07:03 +01:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
2019-12-10 16:31:06 +01:00
/**
* The Class ItemToZenodoConverter.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Dec 10, 2019
2019-12-10 16:31:06 +01:00
*/
public class ItemToZenodoConverter {
2020-01-10 17:07:03 +01:00
private static Logger LOG = LoggerFactory.getLogger(ItemToZenodoConverter.class);
2020-01-10 17:07:03 +01:00
/**
* **
*
*
* TO CLIENT.
*
* @param zenodoDeposition the zenodo deposition
* @return the zenodo item
*/
2019-12-10 16:31:06 +01:00
/**
* To zenodo item.
*
* @param zenodoDeposition the zenodo deposition
* @return the zenodo item
*/
public static ZenodoItem toZenodoItem(ZenodoDeposition zenodoDeposition) {
if (zenodoDeposition == null)
2019-12-10 16:31:06 +01:00
return null;
LOG.debug("Converting item: " + zenodoDeposition);
2019-12-10 16:31:06 +01:00
ZenodoItem zi = new ZenodoItem();
zi.setId(zenodoDeposition.getId());
zi.setDoi(zenodoDeposition.getDoi());
zi.setCreated(zenodoDeposition.getCreated());
// Add files already published in the deposition
List<ZenodoFile> files = toZenodoFiles(zenodoDeposition.getFiles(), true);
2020-01-15 17:51:22 +01:00
zi.addFiles(files);
2019-12-10 16:31:06 +01:00
zi.setModified(zenodoDeposition.getModified());
zi.setOwner(zenodoDeposition.getOwner());
zi.setRecord_id(zenodoDeposition.getRecord_id());
zi.setRecord_url(zenodoDeposition.getRecord_url() != null ? zenodoDeposition.getRecord_url().toString() : null);
2019-12-10 16:31:06 +01:00
zi.setState(zenodoDeposition.getState());
zi.setSubmitted(zenodoDeposition.getSubmitted());
zi.setTitle(zenodoDeposition.getTitle());
2020-01-14 12:28:20 +01:00
2019-12-10 16:31:06 +01:00
zi.setMetadata(toZenodoMetadata(zenodoDeposition.getMetadata()));
LOG.debug("Converted item: " + zi);
2019-12-10 16:31:06 +01:00
return zi;
}
2020-01-15 17:51:22 +01:00
/**
* Adds the files.
*
* @param files the files
2020-01-15 17:51:22 +01:00
* @param filesAlreadyPublished the files already published
* @return the list
*/
private static List<ZenodoFile> toZenodoFiles(ArrayList<FileDeposition> files, boolean filesAlreadyPublished) {
if (files == null)
2020-01-15 17:51:22 +01:00
return null;
2020-01-15 17:51:22 +01:00
List<ZenodoFile> listOfFiles = new ArrayList<ZenodoFile>(files.size());
for (FileDeposition fileDeposition : files) {
listOfFiles.add(toZenodoFile(fileDeposition, filesAlreadyPublished));
}
2020-01-15 17:51:22 +01:00
return listOfFiles;
}
2020-01-15 17:51:22 +01:00
/**
* To zenodo files.
*
* @param filteredResources the filtered resources
2020-01-15 17:51:22 +01:00
* @param filesAlreadyPublished the files already published
* @return the list
*/
public static List<ZenodoFile> toZenodoFiles(List<CkanResource> filteredResources, boolean filesAlreadyPublished) {
if (filteredResources == null)
2020-01-15 17:51:22 +01:00
return null;
2020-01-15 17:51:22 +01:00
List<ZenodoFile> listOfFiles = new ArrayList<ZenodoFile>(filteredResources.size());
for (CkanResource ckanResource : filteredResources) {
listOfFiles.add(toZenodoFile(ckanResource, filesAlreadyPublished));
2020-01-15 17:51:22 +01:00
}
2020-01-15 17:51:22 +01:00
return listOfFiles;
}
2019-12-10 16:31:06 +01:00
/**
* To zenodo file.
*
* @param fileDeposition the file deposition
2020-01-15 17:51:22 +01:00
* @param fileAlreadyPublished the file already published
2019-12-10 16:31:06 +01:00
* @return the zenodo file
*/
2020-01-15 17:51:22 +01:00
public static ZenodoFile toZenodoFile(FileDeposition fileDeposition, boolean fileAlreadyPublished) {
if (fileDeposition == null)
2019-12-10 16:31:06 +01:00
return null;
2019-12-10 16:31:06 +01:00
ZenodoFile zf = new ZenodoFile();
zf.setId(fileDeposition.getId());
zf.setFilename(fileDeposition.getFilename());
zf.setFilesize(fileDeposition.getFilesize() + "");
2019-12-10 16:31:06 +01:00
zf.setChecksum(fileDeposition.getChecksum());
2020-01-15 17:51:22 +01:00
zf.setIsAlreadyPublished(fileAlreadyPublished);
return zf;
}
/**
* To zenodo file.
*
* @param ckanResource the ckan resource
2020-01-15 17:51:22 +01:00
* @param fileAlreadyPublished the file already published
* @return the zenodo file
*/
public static ZenodoFile toZenodoFile(CkanResource ckanResource, boolean fileAlreadyPublished) {
if (ckanResource == null)
2020-01-15 17:51:22 +01:00
return null;
2020-01-15 17:51:22 +01:00
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);
2019-12-10 16:31:06 +01:00
return zf;
}
2019-12-10 16:31:06 +01:00
/**
* To zenodo metadata.
*
* @param depositionMetadata the deposition metadata
* @return the zenodo metadata
*/
public static ZenodoMetadata toZenodoMetadata(DepositionMetadata depositionMetadata) {
if (depositionMetadata == null)
2019-12-10 16:31:06 +01:00
return null;
2019-12-10 16:31:06 +01:00
ZenodoMetadata zm = new ZenodoMetadata();
zm.setAccess_conditions(depositionMetadata.getAccess_conditions());
2019-12-12 18:32:30 +01:00
zm.setDescription(depositionMetadata.getDescription());
// fixing bug #26165 on publication_date = null
zm.setPublication_date(depositionMetadata.getPublication_date());
// Access Type
AccessRights[] accessRight = null;
if (depositionMetadata.getAccess_right() != null) {
AccessRights[] theAccessRight = { depositionMetadata.getAccess_right() };
accessRight = theAccessRight;
2019-12-10 16:31:06 +01:00
}
zm.setAccess_right(CkanToZenodoUtil.toSerializableEnum(accessRight, AccessRights.values()));
// Upload Type
UploadType[] uploadType = null;
if (depositionMetadata.getUpload_type() != null) {
UploadType[] theUploadType = { depositionMetadata.getUpload_type() };
uploadType = theUploadType;
2020-01-13 17:48:41 +01:00
}
zm.setUpload_type(CkanToZenodoUtil.toSerializableEnum(uploadType, UploadType.values()));
// Publication Type
PublicationType[] publicationType = null;
if (depositionMetadata.getPublication_type() != null) {
PublicationType[] thepublicationType = { depositionMetadata.getPublication_type() };
publicationType = thepublicationType;
}
zm.setPublication_type(CkanToZenodoUtil.toSerializableEnum(publicationType, PublicationType.values()));
// Image Type
ImageType[] imageType = null;
if (depositionMetadata.getImage_type() != null) {
ImageType[] theImageType = { depositionMetadata.getImage_type() };
imageType = theImageType;
2020-01-13 17:48:41 +01:00
}
zm.setImage_type(CkanToZenodoUtil.toSerializableEnum(imageType, ImageType.values()));
// Licenses
2023-07-28 11:16:23 +02:00
List<String> selectedLicenses = null;
if (depositionMetadata.getLicense() != null) {
2023-07-28 11:16:23 +02:00
selectedLicenses = new ArrayList<String>();
selectedLicenses.add(depositionMetadata.getLicense()); // NEED TO ADD ALL LICENSES
}
if (selectedLicenses != null) {
2023-07-28 11:16:23 +02:00
zm.setLicenseIDs(selectedLicenses);
2023-07-27 14:39:38 +02:00
}
if (depositionMetadata.getEmbargo_date() != null) {
}
2020-01-13 17:48:41 +01:00
zm.setKeywords(depositionMetadata.getKeywords());
2019-12-10 16:31:06 +01:00
zm.setCommunities(toZenodoCommunities(depositionMetadata.getCommunities()));
zm.setConference_acronym(depositionMetadata.getConference_acronym());
zm.setConference_dates(depositionMetadata.getConference_dates());
zm.setConference_place(depositionMetadata.getConference_place());
zm.setConference_session(depositionMetadata.getConference_session());
zm.setConference_session_part(depositionMetadata.getConference_session_part());
zm.setConference_title(depositionMetadata.getConference_title());
zm.setConference_url(depositionMetadata.getConference_url());
2019-12-10 16:31:06 +01:00
zm.setContributors(toZenodoContributors(depositionMetadata.getContributors()));
// to manage empty or null contributors from mapping
zm.setContributorsTypes(CkanToZenodoUtil.toSerializableEnum(null, Contributor.Type.values()));
2019-12-10 16:31:06 +01:00
zm.setCreators(toZenodoCreators(depositionMetadata.getCreators()));
2020-01-10 17:07:03 +01:00
zm.setDates(toZenodoDateIntervals(depositionMetadata.getDates()));
zm.setEmbargo_date(depositionMetadata.getEmbargo_date());
2019-12-10 16:31:06 +01:00
zm.setRelated_identifiers(toRelatedIdentifiers(depositionMetadata.getRelated_identifiers()));
2019-12-10 17:39:12 +01:00
zm.setSubjects(toZenodoSubjects(depositionMetadata.getSubjects()));
zm.setThesis_supervisors(toZenodoCreators(depositionMetadata.getThesis_supervisors()));
zm.setThesis_university(depositionMetadata.getThesis_university());
zm.setTitle(depositionMetadata.getTitle());
zm.setVersion(depositionMetadata.getVersion());
2020-01-14 12:28:20 +01:00
zm.setNotes(depositionMetadata.getNotes());
2019-12-10 16:31:06 +01:00
return zm;
}
2019-12-10 17:39:12 +01:00
/**
* To zenodo subjects.
*
* @param subjects the subjects
* @return the list
*/
private static List<ZenodoSubject> toZenodoSubjects(List<Subject> subjects) {
if (subjects == null)
2019-12-10 17:39:12 +01:00
return null;
2019-12-10 17:39:12 +01:00
List<ZenodoSubject> list = new ArrayList<ZenodoSubject>(subjects.size());
for (Subject sub : subjects) {
ZenodoSubject zs = new ZenodoSubject(sub.getTerm(), sub.getIdentifier(), sub.getScheme());
list.add(zs);
}
2019-12-10 17:39:12 +01:00
return list;
}
2019-12-10 16:31:06 +01:00
/**
* To related identifiers.
*
* @param related_identifiers the related identifiers
* @return the list
*/
private static List<ZenodoRelatedIdentifier> toRelatedIdentifiers(List<RelatedIdentifier> related_identifiers) {
if (related_identifiers == null)
2019-12-10 16:31:06 +01:00
return null;
2019-12-10 16:31:06 +01:00
List<ZenodoRelatedIdentifier> list = new ArrayList<ZenodoRelatedIdentifier>(related_identifiers.size());
for (RelatedIdentifier relatedIdentifier : related_identifiers) {
Relation[] rel = { relatedIdentifier.getRelation() };
SerializableEnum<String> sEnum = CkanToZenodoUtil.toSerializableEnum(rel, Relation.values());
2019-12-10 16:31:06 +01:00
ZenodoRelatedIdentifier zdi = new ZenodoRelatedIdentifier(relatedIdentifier.getIdentifier(), sEnum);
list.add(zdi);
}
2019-12-10 16:31:06 +01:00
return list;
}
/**
2020-01-10 17:07:03 +01:00
* To zenodo date intervals.
2019-12-10 16:31:06 +01:00
*
* @param dateIntervals the date intervals
* @return the list
*/
2020-01-10 17:07:03 +01:00
private static List<ZenodoDateInterval> toZenodoDateIntervals(List<DateInterval> dateIntervals) {
if (dateIntervals == null)
2019-12-10 16:31:06 +01:00
return null;
2019-12-10 16:31:06 +01:00
List<ZenodoDateInterval> list = new ArrayList<ZenodoDateInterval>(dateIntervals.size());
for (DateInterval dateInterval : dateIntervals) {
SerializableEnum<String> types = null;
if (dateInterval.getType() != null) {
2019-12-10 16:31:06 +01:00
DateInterval.Type[] rel = { dateInterval.getType() };
types = CkanToZenodoUtil.toSerializableEnum(rel, DateInterval.Type.values());
}
list.add(new ZenodoDateInterval(dateInterval.getStart(), dateInterval.getEnd(), types,
dateInterval.getDescription()));
2019-12-10 16:31:06 +01:00
}
2019-12-10 16:31:06 +01:00
return list;
}
/**
* To zenodo communities.
*
* @param communities the communities
* @return the list
*/
public static List<ZenodoCommunity> toZenodoCommunities(List<Community> communities) {
if (communities == null)
2019-12-10 16:31:06 +01:00
return null;
2019-12-10 16:31:06 +01:00
List<ZenodoCommunity> list = new ArrayList<ZenodoCommunity>(communities.size());
for (Community community : communities) {
list.add(new ZenodoCommunity(community.getIdentifier()));
}
2019-12-10 16:31:06 +01:00
return list;
}
2019-12-10 16:31:06 +01:00
/**
* To zenodo contributors.
*
* @param contributors the contributors
* @return the list
*/
public static List<ZenodoContributor> toZenodoContributors(List<Contributor> contributors) {
if (contributors == null)
2019-12-10 16:31:06 +01:00
return null;
2019-12-10 16:31:06 +01:00
List<ZenodoContributor> list = new ArrayList<ZenodoContributor>(contributors.size());
for (Contributor contr : contributors) {
ZenodoContributor zc = new ZenodoContributor();
zc.setAffiliation(contr.getAffiliation());
zc.setGnd(contr.getGnd());
zc.setName(contr.getName());
zc.setOrcid(contr.getOrcid());
SerializableEnum<String> types = null;
if (contr.getType() != null) {
2019-12-10 16:31:06 +01:00
Contributor.Type[] rel = { contr.getType() };
types = CkanToZenodoUtil.toSerializableEnum(rel, Contributor.Type.values());
}
zc.setType(types);
list.add(zc);
}
2019-12-10 16:31:06 +01:00
return list;
}
2019-12-10 16:31:06 +01:00
/**
* To zenodo creators.
*
* @param creators the creators
* @return the list
*/
public static List<ZenodoCreator> toZenodoCreators(List<Creator> creators) {
if (creators == null)
2019-12-10 16:31:06 +01:00
return null;
2019-12-10 16:31:06 +01:00
List<ZenodoCreator> list = new ArrayList<ZenodoCreator>(creators.size());
for (Creator contr : creators) {
2020-01-15 17:51:22 +01:00
ZenodoCreator zc = new ZenodoCreator();
2019-12-10 16:31:06 +01:00
zc.setAffiliation(contr.getAffiliation());
zc.setGnd(contr.getGnd());
zc.setName(contr.getName());
zc.setOrcid(contr.getOrcid());
list.add(zc);
}
2019-12-10 16:31:06 +01:00
return list;
}
2020-01-10 17:07:03 +01:00
/**
* To service file deposition.
*
* @param zenodoFile the zenodo file
* @return the file deposition
*/
public static FileDeposition toServiceFileDeposition(ZenodoFile zenodoFile) {
if (zenodoFile == null)
2020-01-10 17:07:03 +01:00
return null;
2020-01-10 17:07:03 +01:00
FileDeposition fileDep = new FileDeposition();
fileDep.setId(zenodoFile.getId());
fileDep.setFilename(zenodoFile.getFilename());
2020-01-15 17:51:22 +01:00
try {
fileDep.setFilesize(Integer.parseInt(zenodoFile.getFilesize()));
} catch (Exception e) {
2020-01-15 17:51:22 +01:00
// TODO: handle exception
}
2020-01-10 17:07:03 +01:00
fileDep.setChecksum(zenodoFile.getChecksum());
return fileDep;
}
2020-01-13 17:48:41 +01:00
/**
* Update metadata info of deposition metadata.
*
* @param metadata the metadata
2020-01-13 17:48:41 +01:00
* @param depositionMetadata the deposition metadata
* @return the deposition metadata
*/
public static DepositionMetadata updateMetadataInfoOfDepositionMetadata(ZenodoMetadata metadata,
DepositionMetadata depositionMetadata) {
// description
String description = metadata.getDescription();
LOG.debug("Read description: " + description);
if (description != null) {
depositionMetadata.setDescription(description);
}
// upload type
2020-01-13 17:48:41 +01:00
SerializableEnum<String> uploadType = metadata.getUpload_type();
LOG.debug("Read upload type: " + uploadType);
if (uploadType != null && uploadType.getSelectedValues() != null) {
2020-01-14 12:28:20 +01:00
String theUploadTypeValue = uploadType.getSelectedValues().get(0);
LOG.debug("Set upload type: " + theUploadTypeValue);
2020-01-14 12:28:20 +01:00
depositionMetadata.setUpload_type(UploadType.valueOf(theUploadTypeValue));
}
// access right
2020-01-13 17:48:41 +01:00
SerializableEnum<String> accessRight = metadata.getAccess_right();
LOG.debug("Read access type: " + accessRight);
if (accessRight != null && accessRight.getSelectedValues() != null) {
2020-01-27 17:56:16 +01:00
try {
String theAccessRightValue = accessRight.getSelectedValues().get(0);
LOG.debug("Set access right: " + theAccessRightValue);
2020-01-27 17:56:16 +01:00
depositionMetadata.setAccess_right(AccessRights.valueOf(theAccessRightValue));
} catch (Exception e) {
LOG.warn("Set access right error: ", e);
2020-01-27 17:56:16 +01:00
}
2020-01-14 12:28:20 +01:00
}
// publication type
2020-01-13 17:48:41 +01:00
SerializableEnum<String> publicationType = metadata.getPublication_type();
LOG.debug("Read publication type: " + publicationType);
if (publicationType != null && publicationType.getSelectedValues() != null) {
2020-01-27 17:56:16 +01:00
try {
String thePublicationTypeValue = publicationType.getSelectedValues().get(0);
LOG.debug("Set publication type: " + thePublicationTypeValue);
2020-01-27 17:56:16 +01:00
depositionMetadata.setPublication_type(PublicationType.valueOf(thePublicationTypeValue));
} catch (Exception e) {
LOG.warn("Set publication type error: ", e);
2020-01-27 17:56:16 +01:00
}
2020-01-14 12:28:20 +01:00
}
// image type
SerializableEnum<String> imageType = metadata.getImage_type();
LOG.debug("Read image type: " + imageType);
if (imageType != null && imageType.getSelectedValues() != null) {
2020-01-27 17:56:16 +01:00
try {
String imageTypeValue = imageType.getSelectedValues().get(0);
LOG.debug("Set image type: " + imageTypeValue);
2020-01-27 17:56:16 +01:00
depositionMetadata.setImage_type(ImageType.valueOf(imageTypeValue));
} catch (Exception e) {
LOG.warn("Set image type error: ", e);
2020-01-27 17:56:16 +01:00
}
}
// embargo_date
2020-01-21 17:07:05 +01:00
Date embargoDate = metadata.getEmbargo_date();
LOG.debug("Read embargo date: " + imageType);
if (embargoDate != null) {
2020-01-27 17:56:16 +01:00
try {
LOG.debug("Set embargo date: " + embargoDate);
2020-01-27 17:56:16 +01:00
depositionMetadata.setEmbargo_date(embargoDate);
} catch (Exception e) {
LOG.warn("Set embargo date error: ", e);
2020-01-27 17:56:16 +01:00
}
2020-01-21 17:07:05 +01:00
}
// access conditions
2020-01-21 17:07:05 +01:00
String accessConditions = metadata.getAccess_conditions();
LOG.debug("Read access conditions: " + accessConditions);
if (accessConditions != null) {
LOG.debug("Set access conditions: " + accessConditions);
2020-01-21 17:07:05 +01:00
depositionMetadata.setAccess_conditions(accessConditions);
}
// license
2023-07-28 11:16:23 +02:00
List<String> licenses = metadata.getLicenseIDs();
LOG.debug("Read licenses: " + licenses);
if (licenses != null && licenses.size() > 0) {
2020-01-27 17:56:16 +01:00
try {
2023-07-28 11:16:23 +02:00
String lB = licenses.get(0);
LOG.debug("Set license: " + lB);
depositionMetadata.setLicense(lB);
} catch (Exception e) {
LOG.warn("Set license error: ", e);
2020-01-27 17:56:16 +01:00
}
2020-01-21 17:07:05 +01:00
}
// creators
List<Creator> creators = null;
List<? extends ZenodoAuthor> zenodoCreators = metadata.getCreators();
LOG.debug("Read Creators: " + zenodoCreators);
if (zenodoCreators != null) {
creators = toCreators(zenodoCreators);
}
LOG.debug("Set Creators: " + creators);
depositionMetadata.setCreators(creators);
// contributors
List<Contributor> contributors = null;
List<? extends ZenodoAuthor> zenodoContributors = metadata.getContributors();
LOG.debug("Read Contributors: " + zenodoContributors);
if (zenodoContributors != null) {
contributors = toContributors(zenodoContributors);
}
if (LOG.isDebugEnabled()) {
for (Contributor contributor : contributors) {
LOG.debug("Set contributor: name " + contributor.getName() + " type " + contributor.getType());
}
}
depositionMetadata.setContributors(contributors);
// keywords
2020-01-14 12:28:20 +01:00
depositionMetadata.setKeywords(metadata.getKeywords());
2020-01-13 17:48:41 +01:00
return depositionMetadata;
}
/**
* To creators.
*
* @param zenodoCreators the zenodo creators
* @return the list
*/
public static List<Creator> toCreators(List<? extends ZenodoAuthor> zenodoCreators) {
if (zenodoCreators == null)
return null;
List<Creator> listOfCreators = new ArrayList<>(zenodoCreators.size());
for (ZenodoAuthor zenodoAuthor : zenodoCreators) {
Creator creator = new Creator();
creator.setName(zenodoAuthor.getName());
if (CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getAffiliation())) {
2020-01-31 12:27:14 +01:00
creator.setAffiliation(zenodoAuthor.getAffiliation());
}
if (CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getGnd())) {
2020-01-31 12:27:14 +01:00
creator.setGnd(zenodoAuthor.getGnd());
}
if (CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getOrcid())) {
2020-01-31 12:27:14 +01:00
creator.setOrcid(zenodoAuthor.getOrcid());
}
listOfCreators.add(creator);
}
return listOfCreators;
}
/**
* To contributors.
*
* @param zenodoContributors the zenodo contributors
* @return the list
*/
public static List<Contributor> toContributors(List<? extends ZenodoAuthor> zenodoContributors) {
if (zenodoContributors == null)
return null;
List<Contributor> listOfContributors = new ArrayList<Contributor>(zenodoContributors.size());
for (ZenodoAuthor zenodoAuthor : zenodoContributors) {
Contributor contributor = new Contributor();
contributor.setName(zenodoAuthor.getName());
if (CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getAffiliation())) {
2020-01-31 12:27:14 +01:00
contributor.setAffiliation(zenodoAuthor.getAffiliation());
}
if (CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getGnd())) {
2020-01-31 12:27:14 +01:00
contributor.setGnd(zenodoAuthor.getGnd());
}
if (CkanToZenodoUtil.isNotEmpty(zenodoAuthor.getOrcid())) {
2020-01-31 12:27:14 +01:00
contributor.setOrcid(zenodoAuthor.getOrcid());
}
Type type = null;
String theType = null;
try {
theType = zenodoAuthor.getType().getSelectedValues().get(0);
type = Type.valueOf(theType);
} catch (Exception e) {
LOG.error("I'm not able to convert " + theType + " as value of " + Type.class.getName());
}
contributor.setType(type);
listOfContributors.add(contributor);
}
return listOfContributors;
}
2019-12-10 16:31:06 +01:00
}