Skip to content

Commit

Permalink
[CST-13042] Fix issue with missing metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
atarix83 committed Jan 29, 2024
1 parent be2ddcb commit 800cd79
Showing 1 changed file with 8 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.Logger;
import org.dspace.content.Item;
import org.dspace.content.MetadataFieldName;
Expand Down Expand Up @@ -61,7 +62,9 @@ public void initialize() throws Exception {
@Override
public void consume(Context context, Event event) throws Exception {
Item item = (Item) event.getSubject(context);
if (item == null || !item.isArchived() || itemsAlreadyProcessed.contains(item) || !isPerson(item)) {
if (item == null || !item.isArchived() || itemsAlreadyProcessed.contains(item) || !isPerson(item) ||
metadataNames == null || metadataNames.size() == 0 ||
metadataFormat == null || metadataFormat.size() == 0) {
return;
}

Expand Down Expand Up @@ -98,8 +101,8 @@ private void addCustomMetadata(Context context, Item person, String metadataName
String metadataValue = generateMetadataValue(person, metadataFormat);
MetadataFieldName field = new MetadataFieldName(metadataName);

itemService.clearMetadata(context, person, field.schema, field.element, field.qualifier, Item.ANY);
if (isNotBlank(metadataValue)) {
itemService.clearMetadata(context, person, field.schema, field.element, field.qualifier, Item.ANY);
itemService.addMetadata(
context, person, field.schema, field.element, field.qualifier, null, metadataValue);
}
Expand All @@ -109,7 +112,9 @@ private String generateMetadataValue(Item person, String metadataFormat) {
for (String placeholderMetadata : getPlaceholderMetadataNames(metadataFormat)) {
MetadataFieldName field = new MetadataFieldName(placeholderMetadata);
String placeholderValue = itemService.getMetadataFirstValue(person, field, Item.ANY);
metadataFormat = metadataFormat.replace("{" + placeholderMetadata + "}", placeholderValue);
if (StringUtils.isNotBlank(placeholderValue)) {
metadataFormat = metadataFormat.replace("{" + placeholderMetadata + "}", placeholderValue);
}
}
return metadataFormat;
}
Expand Down

0 comments on commit 800cd79

Please sign in to comment.