Skip to content

Commit

Permalink
MODLD-629: Include subtitle in the label of Title, Work & Instance re…
Browse files Browse the repository at this point in the history
…source (#86)
  • Loading branch information
pkjacob authored Jan 6, 2025
1 parent 11df62d commit ffed1d4
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package org.folio.linked.data.mapper.dto.monograph;

import static java.lang.String.join;
import static java.util.Objects.isNull;
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -31,7 +33,7 @@ protected List<String> getPrimaryMainTitles(List<TitleFieldRequestTitleInner> ti
.filter(PrimaryTitleField.class::isInstance)
.map(PrimaryTitleField.class::cast)
.map(PrimaryTitleField::getPrimaryTitle)
.flatMap(pt -> pt.getMainTitle().stream())
.map(pt -> join(" ", getFirstValue(pt::getMainTitle), getFirstValue(pt::getSubTitle)))
.toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public <P> P toDto(Resource source, P parentDto, Resource parentResource) {
public Resource toEntity(Object dto, Resource parentEntity) {
var parallelTitle = ((ParallelTitleField) dto).getParallelTitle();
var resource = new Resource();
resource.setLabel(getFirstValue(parallelTitle::getMainTitle));
resource.setLabel(getLabel(getFirstValue(parallelTitle::getMainTitle), getFirstValue(parallelTitle::getSubTitle)));
resource.addTypes(PARALLEL_TITLE);
resource.setDoc(getDoc(parallelTitle));
resource.setId(hashService.hash(resource));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public <P> P toDto(Resource source, P parentDto, Resource parentResource) {
public Resource toEntity(Object dto, Resource parentEntity) {
var primaryTitle = ((PrimaryTitleField) dto).getPrimaryTitle();
var resource = new Resource();
resource.setLabel(getFirstValue(primaryTitle::getMainTitle));
resource.setLabel(getLabel(getFirstValue(primaryTitle::getMainTitle), getFirstValue(primaryTitle::getSubTitle)));
resource.addTypes(TITLE);
resource.setDoc(getDoc(primaryTitle));
resource.setId(hashService.hash(resource));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,8 @@ public abstract class TitleMapperUnit implements SingleResourceMapperUnit {
public Set<Class<?>> supportedParents() {
return SUPPORTED_PARENTS;
}

protected String getLabel(String mainTitle, String subTitle) {
return String.join(" ", mainTitle, subTitle);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public <P> P toDto(Resource source, P parentDto, Resource parentResource) {
public Resource toEntity(Object dto, Resource parentEntity) {
var variantTitle = ((VariantTitleField) dto).getVariantTitle();
var resource = new Resource();
resource.setLabel(getFirstValue(variantTitle::getMainTitle));
resource.setLabel(getLabel(getFirstValue(variantTitle::getMainTitle), getFirstValue(variantTitle::getSubTitle)));
resource.addTypes(VARIANT_TITLE);
resource.setDoc(getDoc(variantTitle));
resource.setId(hashService.hash(resource));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -887,7 +887,7 @@ private void validateAuthorities(ResultActions resultActions, String workBase) t

private void validateInstance(Resource instance, boolean validateFullWork) {
assertThat(instance.getId()).isEqualTo(hashService.hash(instance));
assertThat(instance.getLabel()).isEqualTo("Primary: mainTitle");
assertThat(instance.getLabel()).isEqualTo("Primary: mainTitle Primary: subTitle");
assertThat(instance.getTypes().iterator().next().getUri()).isEqualTo(INSTANCE.getUri());
assertThat(instance.getDoc().size()).isEqualTo(20);
validateLiteral(instance, DIMENSIONS.getValue(), "20 cm");
Expand Down Expand Up @@ -993,7 +993,7 @@ private void validateSampleTitleBase(ResourceEdge edge, Resource source, Resourc
assertThat(edge.getSource()).isEqualTo(source);
assertThat(edge.getPredicate().getUri()).isEqualTo(TITLE.getUri());
var title = edge.getTarget();
assertThat(title.getLabel()).isEqualTo(prefix + "mainTitle");
assertThat(title.getLabel()).isEqualTo(prefix + "mainTitle" + " " + prefix + "subTitle");
assertThat(title.getTypes().iterator().next().getUri()).isEqualTo(type.getUri());
assertThat(title.getId()).isEqualTo(hashService.hash(title));
assertThat(title.getDoc().get(PART_NAME.getValue()).size()).isEqualTo(1);
Expand Down Expand Up @@ -1251,7 +1251,7 @@ private void assertCategorySetIsDefinedBy(Resource category) {

private void validateWork(Resource work, boolean validateFullInstance) {
assertThat(work.getId()).isEqualTo(hashService.hash(work));
assertThat(work.getLabel()).isEqualTo("Primary: mainTitle");
assertThat(work.getLabel()).isEqualTo("Primary: mainTitle Primary: subTitle");
assertThat(work.getTypes().iterator().next().getUri()).isEqualTo(WORK.getUri());
assertThat(work.getDoc().size()).isEqualTo(7);
validateLiterals(work, DATE_START.getValue(), List.of("2024"));
Expand Down
21 changes: 13 additions & 8 deletions src/test/java/org/folio/linked/data/test/MonographTestUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -298,49 +298,54 @@ public static Resource getSampleInstanceResource(Long id, Resource linkedWork) {

public static Resource createPrimaryTitle(Long id) {
var primaryTitleValue = "Primary: mainTitle" + (nonNull(id) ? id : "");
var subTitleValue = "Primary: subTitle";

return createResource(
Map.of(
PART_NAME, List.of("Primary: partName"),
PART_NUMBER, List.of("Primary: partNumber"),
MAIN_TITLE, List.of(primaryTitleValue),
NON_SORT_NUM, List.of("Primary: nonSortNum"),
SUBTITLE, List.of("Primary: subTitle")
SUBTITLE, List.of(subTitleValue)
),
Set.of(ResourceTypeDictionary.TITLE),
emptyMap()
).setLabel(primaryTitleValue);
).setLabel(primaryTitleValue + " " + subTitleValue);
}

private static Resource createParallelTitle() {
var mainTitle = "Parallel: mainTitle";
var subTitle = "Parallel: subTitle";
return createResource(
Map.of(
PART_NAME, List.of("Parallel: partName"),
PART_NUMBER, List.of("Parallel: partNumber"),
MAIN_TITLE, List.of("Parallel: mainTitle"),
MAIN_TITLE, List.of(mainTitle),
DATE, List.of("Parallel: date"),
SUBTITLE, List.of("Parallel: subTitle"),
SUBTITLE, List.of(subTitle),
NOTE, List.of("Parallel: noteLabel")
),
Set.of(PARALLEL_TITLE),
emptyMap()
).setLabel("Parallel: mainTitle");
).setLabel(mainTitle + " " + subTitle);
}

private static Resource createVariantTitle() {
var mainTitle = "Variant: mainTitle";
var subTitle = "Variant: subTitle";
return createResource(
Map.of(
PART_NAME, List.of("Variant: partName"),
PART_NUMBER, List.of("Variant: partNumber"),
MAIN_TITLE, List.of("Variant: mainTitle"),
MAIN_TITLE, List.of(mainTitle),
DATE, List.of("Variant: date"),
SUBTITLE, List.of("Variant: subTitle"),
SUBTITLE, List.of(subTitle),
VARIANT_TYPE, List.of("Variant: variantType"),
NOTE, List.of("Variant: noteLabel")
),
Set.of(VARIANT_TITLE),
emptyMap()
).setLabel("Variant: mainTitle");
).setLabel(mainTitle + " " + subTitle);
}

public static Resource getSampleWork(Resource linkedInstance) {
Expand Down

0 comments on commit ffed1d4

Please sign in to comment.