Skip to content

Commit

Permalink
update rights, description and language in Datacite metadata and in D…
Browse files Browse the repository at this point in the history
…atacite Register
  • Loading branch information
juancorr committed Mar 5, 2024
1 parent 17baed1 commit 92affc5
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -299,8 +299,8 @@ public String generateXML(DvObject dvObject) {
String relIdentifiers = generateRelatedIdentifiers(dvObject);

// MADROÑO BEGIN: Send rights to DataCite
StringBuilder rightsElement= new StringBuilder();
Dataset dataset;
DatasetVersion dvVersion;

if (dvObject instanceof Dataset) {
dataset = (Dataset) dvObject;
Expand All @@ -309,7 +309,23 @@ public String generateXML(DvObject dvObject) {
}

TermsOfUseAndAccess termsOfUse;
StringBuilder subjectsElements= new StringBuilder();
StringBuilder languageElements= new StringBuilder();
StringBuilder rightsElement= new StringBuilder();
if (dataset!= null) {
dvVersion= dataset.getLatestVersion();

List <String> subjectElementList= dvVersion.getDatasetSubjects();
for (String subject: subjectElementList) {
subjectsElements.append("<subject>").append(subject).append("</subject>");
}

List <String> languageElementList= dvVersion.getLanguages();
if (languageElementList!= null && !languageElementList.isEmpty())
languageElements.append(languageElementList.get(0));
else
languageElements.append("Not applicable");

termsOfUse= dataset.getLatestVersion().getTermsOfUseAndAccess();
if (termsOfUse!= null) {
License license= termsOfUse.getLicense();
Expand All @@ -334,7 +350,9 @@ public String generateXML(DvObject dvObject) {
}
}
}
xmlMetadata = xmlMetadata.replace("${MADROÑO_rightsList}", rightsElement);
xmlMetadata = xmlMetadata.replace("${MADROÑO_subjectsList}", subjectsElements.toString());
xmlMetadata = xmlMetadata.replace("${MADROÑO_language}", languageElements.toString());
xmlMetadata = xmlMetadata.replace("${MADROÑO_rightsList}", rightsElement.toString());
// MADROÑO END: Send rights to DataCite


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,11 @@ public static String getMetadataFromDvObject(String identifier, Map<String, Stri
metadataTemplate.setIdentifier(identifier.substring(identifier.indexOf(':') + 1));
metadataTemplate.setCreators(Util.getListFromStr(metadata.get("datacite.creator")));
metadataTemplate.setAuthors(dataset.getLatestVersion().getDatasetAuthors());
metadataTemplate.setTermsOfUse(dataset.getLatestVersion().getTermsOfUseAndAccess()); // Madroño. Send rights to DataCite
// MADROÑO BEGIN. Send rights, subjects and languages to DataCite
metadataTemplate.setSubjects(dataset.getLatestVersion().getDatasetSubjects());
metadataTemplate.setTermsOfUse(dataset.getLatestVersion().getTermsOfUseAndAccess());
metadataTemplate.setLanguages(dataset.getLatestVersion().getLanguages());
// MADROÑO END. Send rights, subjects and languages to DataCite
if (dvObject.isInstanceofDataset()) {
//While getDescriptionPlainText strips < and > from HTML, it leaves '&' (at least so we need to xml escape as well
String description = StringEscapeUtils.escapeXml10(dataset.getLatestVersion().getDescriptionPlainText());
Expand Down Expand Up @@ -392,7 +396,12 @@ class DataCiteMetadataTemplate {
private String publisherYear;
private List<DatasetAuthor> authors;
private String description;
private TermsOfUseAndAccess termsOfUse; // Madroño. Send rights to DataCite
// MADROÑO BEGIN. Send rights, subjects and languages to DataCite
private List <String> languages;
private List <String> subjects;
private TermsOfUseAndAccess termsOfUse;
// MADROÑO END. Send rights, subjects and languages to DataCite

private List<String[]> contacts;
private List<String[]> producers;

Expand Down Expand Up @@ -535,8 +544,21 @@ public String generateXML(DvObject dvObject) {

String relIdentifiers = generateRelatedIdentifiers(dvObject);

// MADROÑO BEGIN: Send rights to DataCite
StringBuilder rightsElement= new StringBuilder();
// MADROÑO BEGIN. Send rights, subject and language to DataCite
StringBuilder subjectsElements= new StringBuilder();
List <String> subjectElementList= getSubjects();
for (String subject: subjectElementList) {
subjectsElements.append("<subject>").append(subject).append("</subject>");
}

StringBuilder languageElements= new StringBuilder();
List <String> languageElementList= getLanguages();
if (languageElementList!= null && !languageElementList.isEmpty())
languageElements.append(languageElementList.get(0));
else
languageElements.append("Not applicable");

StringBuilder rightsElement= new StringBuilder();
if (getTermsOfUse()!= null) {
License license= getTermsOfUse().getLicense();
if (license != null) {
Expand All @@ -559,6 +581,8 @@ public String generateXML(DvObject dvObject) {
rightsElement.append("<rights>").append(StringEscapeUtils.escapeXml10(MarkupChecker.stripAllTags(getTermsOfUse().getRestrictions()))).append("</rights>");
}
}
xmlMetadata = xmlMetadata.replace("${MADROÑO_subjectsList}", subjectsElements.toString());
xmlMetadata = xmlMetadata.replace("${MADROÑO_language}", languageElements.toString());
xmlMetadata = xmlMetadata.replace("${MADROÑO_rightsList}", rightsElement.toString());
// MADROÑO END: Send rights to DataCite

Expand Down Expand Up @@ -662,10 +686,32 @@ public String getPublisher() {
return publisher;
}

public TermsOfUseAndAccess getTermsOfUse() { // Madroño. Send rights to DataCite
// MADROÑO BEGIN. Send rights, subject and language to DataCite
public TermsOfUseAndAccess getTermsOfUse() {
return termsOfUse;
}

public List <String> getLanguages() {
return languages;
}

public List <String> getSubjects() {
return subjects;
}

void setTermsOfUse(TermsOfUseAndAccess termsOfUse) {
this.termsOfUse= termsOfUse;
}

void setSubjects (List <String> subjects) {
this.subjects= subjects;
}

void setLanguages (List <String> languages) {
this.languages= languages;
}
// MADROÑO END. Send rights, subject and language to DataCite

public void setPublisher(String publisher) {
this.publisher = publisher;
}
Expand All @@ -677,10 +723,6 @@ public String getPublisherYear() {
public void setPublisherYear(String publisherYear) {
this.publisherYear = publisherYear;
}

void setTermsOfUse(TermsOfUseAndAccess termsOfUse) { // Madroño. Send rights to DataCite
this.termsOfUse= termsOfUse;
}
}

class Util {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ private static void createOAIDC(XMLStreamWriter xmlw, DatasetDTO datasetDto, Str
}
}
// MADROÑO BEGIN
if (restrict && closed) {
if (restrict) {
writeFullElement(xmlw, dcFlavor+":"+"rights", "info:eu-repo/semantics/restrictedAccess");
} else if (!restrict && closed) {
writeFullElement(xmlw, dcFlavor+":"+"rights", "info:eu-repo/semantics/closedAccess");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@
</descriptions>
<contributors>{$contributors}</contributors>
<rightsList>${MADROÑO_rightsList}</rightsList>
<subjectsList>${MADROÑO_subjectsList}</subjectsList>
<language>${MADROÑO_language}</language>
</resource>

0 comments on commit 92affc5

Please sign in to comment.