diff --git a/ramls/loan.json b/ramls/loan.json index 5a8d7bc1d5..125f2d1798 100644 --- a/ramls/loan.json +++ b/ramls/loan.json @@ -239,6 +239,10 @@ "type": "string", "readonly": true }, + "displaySummary": { + "description": "Display summary about the item", + "type": "string" + }, "callNumberComponents": { "description": "Elements of a full call number", "$ref": "schema/call-number-components.json", diff --git a/src/main/java/org/folio/circulation/domain/ActualCostRecord.java b/src/main/java/org/folio/circulation/domain/ActualCostRecord.java index a219a8e29a..552669f629 100644 --- a/src/main/java/org/folio/circulation/domain/ActualCostRecord.java +++ b/src/main/java/org/folio/circulation/domain/ActualCostRecord.java @@ -72,6 +72,7 @@ public static class ActualCostRecordItem { private final String volume; private final String enumeration; private final String chronology; + private final String displaySummary; private final String copyNumber; } diff --git a/src/main/java/org/folio/circulation/domain/Item.java b/src/main/java/org/folio/circulation/domain/Item.java index fef9d339d8..c27a296ef1 100644 --- a/src/main/java/org/folio/circulation/domain/Item.java +++ b/src/main/java/org/folio/circulation/domain/Item.java @@ -243,6 +243,10 @@ public String getChronology() { return description.getChronology(); } + public String getDisplaySummary() { + return description.getDisplaySummary(); + } + public String getNumberOfPieces() { return description.getNumberOfPieces(); } diff --git a/src/main/java/org/folio/circulation/domain/ItemDescription.java b/src/main/java/org/folio/circulation/domain/ItemDescription.java index 55d60c745a..a5d98e6f6d 100644 --- a/src/main/java/org/folio/circulation/domain/ItemDescription.java +++ b/src/main/java/org/folio/circulation/domain/ItemDescription.java @@ -9,7 +9,7 @@ @Value public class ItemDescription { public static ItemDescription unknown() { - return new ItemDescription(null, null, null, null, null, null, null, List.of()); + return new ItemDescription(null, null, null, null, null, null, null, null, List.of()); } String barcode; @@ -19,5 +19,6 @@ public static ItemDescription unknown() { String chronology; String numberOfPieces; String descriptionOfPieces; + String displaySummary; @NonNull Collection yearCaption; } diff --git a/src/main/java/org/folio/circulation/domain/RequestRepresentation.java b/src/main/java/org/folio/circulation/domain/RequestRepresentation.java index 005c2654f8..f7bb0af944 100644 --- a/src/main/java/org/folio/circulation/domain/RequestRepresentation.java +++ b/src/main/java/org/folio/circulation/domain/RequestRepresentation.java @@ -80,6 +80,7 @@ private static void addItemProperties(JsonObject request, Item item) { } write(itemSummary, "volume", item.getVolume()); write(itemSummary, "chronology", item.getChronology()); + write(itemSummary, "displaySummary", item.getDisplaySummary()); ItemStatus status = item.getStatus(); if (status != null) { diff --git a/src/main/java/org/folio/circulation/domain/notice/TemplateContextUtil.java b/src/main/java/org/folio/circulation/domain/notice/TemplateContextUtil.java index 46c6ab3e3d..948a695327 100644 --- a/src/main/java/org/folio/circulation/domain/notice/TemplateContextUtil.java +++ b/src/main/java/org/folio/circulation/domain/notice/TemplateContextUtil.java @@ -208,6 +208,7 @@ private static JsonObject createItemContext(Item item) { .put("loanType", item.getLoanTypeName()) .put("copy", copyNumber) .put("numberOfPieces", item.getNumberOfPieces()) + .put("displaySummary", item.getDisplaySummary()) .put("descriptionOfPieces", item.getDescriptionOfPieces()); Location location = item.getLocation(); diff --git a/src/main/java/org/folio/circulation/domain/representations/ItemSummaryRepresentation.java b/src/main/java/org/folio/circulation/domain/representations/ItemSummaryRepresentation.java index c689058e42..efb1db2699 100644 --- a/src/main/java/org/folio/circulation/domain/representations/ItemSummaryRepresentation.java +++ b/src/main/java/org/folio/circulation/domain/representations/ItemSummaryRepresentation.java @@ -39,6 +39,7 @@ public JsonObject createItemSummary(Item item) { write(itemSummary, "callNumber", item.getCallNumber()); write(itemSummary, "enumeration", item.getEnumeration()); write(itemSummary, "chronology", item.getChronology()); + write(itemSummary, "displaySummary", item.getDisplaySummary()); write(itemSummary, "volume", item.getVolume()); write(itemSummary, "copyNumber", item.getCopyNumber()); write(itemSummary, CALL_NUMBER_COMPONENTS, diff --git a/src/main/java/org/folio/circulation/domain/representations/ItemsInTransitReport.java b/src/main/java/org/folio/circulation/domain/representations/ItemsInTransitReport.java index 0b684ab4ce..d8a48e6fe1 100644 --- a/src/main/java/org/folio/circulation/domain/representations/ItemsInTransitReport.java +++ b/src/main/java/org/folio/circulation/domain/representations/ItemsInTransitReport.java @@ -112,6 +112,7 @@ private JsonObject buildEntry(Item item) { write(entry, "contributors", mapContributorNamesToJson(item)); write(entry, "callNumber", item.getCallNumber()); write(entry, "enumeration", item.getEnumeration()); + write(entry, "displaySummary", item.getDisplaySummary()); write(entry, "volume", item.getVolume()); write(entry, "yearCaption", item.getYearCaption()); writeNamedObject(entry, "status", ofNullable(item.getStatus()) diff --git a/src/main/java/org/folio/circulation/services/actualcostrecord/ActualCostRecordService.java b/src/main/java/org/folio/circulation/services/actualcostrecord/ActualCostRecordService.java index 5f07823b09..bf035041aa 100644 --- a/src/main/java/org/folio/circulation/services/actualcostrecord/ActualCostRecordService.java +++ b/src/main/java/org/folio/circulation/services/actualcostrecord/ActualCostRecordService.java @@ -207,6 +207,7 @@ private ActualCostRecord buildActualCostRecord(ActualCostRecordContext context) .withVolume(item.getVolume()) .withChronology(item.getChronology()) .withEnumeration(item.getEnumeration()) + .withDisplaySummary(item.getDisplaySummary()) .withCopyNumber(item.getCopyNumber())) .withInstance(new ActualCostRecordInstance() .withId(instance.getId()) diff --git a/src/main/java/org/folio/circulation/storage/mappers/ActualCostRecordMapper.java b/src/main/java/org/folio/circulation/storage/mappers/ActualCostRecordMapper.java index ecc59157c3..4216ca13c6 100644 --- a/src/main/java/org/folio/circulation/storage/mappers/ActualCostRecordMapper.java +++ b/src/main/java/org/folio/circulation/storage/mappers/ActualCostRecordMapper.java @@ -75,6 +75,7 @@ public static JsonObject toJson(ActualCostRecord actualCostRecord) { write(itemJson, "volume", item.getVolume()); write(itemJson, "enumeration", item.getEnumeration()); write(itemJson, "chronology", item.getChronology()); + write(itemJson, "displaySummary", item.getDisplaySummary()); write(itemJson, "copyNumber", item.getCopyNumber()); write(itemJson, "effectiveCallNumberComponents", createCallNumberComponents(item.getEffectiveCallNumberComponents())); @@ -152,6 +153,7 @@ public static ActualCostRecord toDomain(JsonObject representation) { .withVolume(getProperty(item, "volume")) .withEnumeration(getProperty(item, "enumeration")) .withChronology(getProperty(item, "chronology")) + .withDisplaySummary(getProperty(item, "displaySummary")) .withCopyNumber(getProperty(item, "copyNumber")) .withEffectiveCallNumberComponents(CallNumberComponents.fromItemJson(item)), new ActualCostRecordInstance() diff --git a/src/main/java/org/folio/circulation/storage/mappers/ItemMapper.java b/src/main/java/org/folio/circulation/storage/mappers/ItemMapper.java index 0005469185..afacbaf7b8 100644 --- a/src/main/java/org/folio/circulation/storage/mappers/ItemMapper.java +++ b/src/main/java/org/folio/circulation/storage/mappers/ItemMapper.java @@ -41,6 +41,7 @@ private ItemDescription getDescription(JsonObject representation) { getProperty(representation, "copyNumber"), getProperty(representation, "volume"), getProperty(representation, "chronology"), + getProperty(representation, "displaySummary"), getProperty(representation, "numberOfPieces"), getProperty(representation, "descriptionOfPieces"), toStream(representation, "yearCaption") diff --git a/src/test/java/api/requests/StaffSlipsTests.java b/src/test/java/api/requests/StaffSlipsTests.java index 22fb0cb198..083101558f 100644 --- a/src/test/java/api/requests/StaffSlipsTests.java +++ b/src/test/java/api/requests/StaffSlipsTests.java @@ -268,6 +268,7 @@ void responseContainsSlipWithAllAvailableTokens(String countryCode, String prima assertEquals(item.getEnumeration(), itemContext.getString("enumeration")); assertEquals(item.getVolume(), itemContext.getString("volume")); assertEquals(item.getChronology(), itemContext.getString("chronology")); + assertEquals(item.getDisplaySummary(), itemContext.getString("displaySummary")); assertEquals(yearCaptionsToken, itemContext.getString("yearCaption")); assertEquals(materialTypeName, itemContext.getString("materialType")); assertEquals(loanTypeName, itemContext.getString("loanType")); diff --git a/src/test/java/api/support/builders/ItemBuilder.java b/src/test/java/api/support/builders/ItemBuilder.java index aa3b0946ed..f6443f117c 100644 --- a/src/test/java/api/support/builders/ItemBuilder.java +++ b/src/test/java/api/support/builders/ItemBuilder.java @@ -40,13 +40,14 @@ public class ItemBuilder extends JsonBuilder implements Builder { private List yearCaption; private String volume; private final String chronology; + private String displaySummary; private String numberOfPieces; private String descriptionOfPieces; public ItemBuilder() { this(UUID.randomUUID(), null, "565578437802", AVAILABLE, null, null, null, null, null, null, null, null, null, null, null, Collections.emptyList(), - null, null, null); + null, null, null, null); } private ItemBuilder( @@ -67,6 +68,7 @@ private ItemBuilder( String volume, List yearCaption, String chronology, + String displaySummary, String numberOfPieces, String descriptionOfPieces) { @@ -87,6 +89,7 @@ private ItemBuilder( this.volume = volume; this.yearCaption = yearCaption; this.chronology = chronology; + this.displaySummary = displaySummary; this.numberOfPieces = numberOfPieces; this.descriptionOfPieces = descriptionOfPieces; } @@ -112,6 +115,7 @@ public JsonObject create() { put(itemRequest, "volume", volume); put(itemRequest, "yearCaption", yearCaption); put(itemRequest, "chronology", chronology); + put(itemRequest, "displaySummary", displaySummary); put(itemRequest, "numberOfPieces", numberOfPieces); put(itemRequest, "descriptionOfPieces", descriptionOfPieces); @@ -181,6 +185,7 @@ public ItemBuilder withStatus(String status) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -204,6 +209,7 @@ public ItemBuilder withBarcode(String barcode) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -235,6 +241,7 @@ public ItemBuilder withPermanentLocation(UUID locationId) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -266,6 +273,7 @@ public ItemBuilder withTemporaryLocation(UUID locationId) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -293,6 +301,7 @@ public ItemBuilder forHolding(UUID holdingId) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -316,6 +325,7 @@ public ItemBuilder withMaterialType(UUID materialTypeId) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -339,6 +349,7 @@ public ItemBuilder withPermanentLoanType(UUID loanTypeId) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -362,6 +373,7 @@ public ItemBuilder withTemporaryLoanType(UUID loanTypeId) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -385,6 +397,7 @@ public ItemBuilder withId(UUID id) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -408,6 +421,7 @@ public ItemBuilder withEnumeration(String enumeration) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -431,6 +445,7 @@ public ItemBuilder withCopyNumber(String copyNumber) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -458,6 +473,7 @@ public ItemBuilder withCallNumber( this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -481,6 +497,7 @@ public ItemBuilder withVolume(String volume) { volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -504,6 +521,7 @@ public ItemBuilder withYearCaption(List yearCaption) { this.volume, yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -527,6 +545,31 @@ public ItemBuilder withChronology(String chronology) { this.volume, this.yearCaption, chronology, + this.displaySummary, + this.numberOfPieces, + this.descriptionOfPieces); + } + + public ItemBuilder withDisplaySummary(String displaySummary) { + return new ItemBuilder( + this.id, + this.holdingId, + this.barcode, + this.status, + this.permanentLocationId, + this.temporaryLocationId, + this.materialTypeId, + this.permanentLoanTypeId, + this.temporaryLoanTypeId, + this.enumeration, + this.copyNumber, + this.itemLevelCallNumber, + this.itemLevelCallNumberPrefix, + this.itemLevelCallNumberSuffix, + this.volume, + this.yearCaption, + this.chronology, + displaySummary, this.numberOfPieces, this.descriptionOfPieces); } @@ -550,6 +593,7 @@ public ItemBuilder withNumberOfPieces(String numberOfPieces) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, numberOfPieces, this.descriptionOfPieces); } @@ -573,6 +617,7 @@ public ItemBuilder withDescriptionOfPieces(String descriptionOfPieces) { this.volume, this.yearCaption, this.chronology, + this.displaySummary, this.numberOfPieces, descriptionOfPieces); }