Skip to content

Commit

Permalink
Change structure of item notes MODINV-97 (#87)
Browse files Browse the repository at this point in the history
  • Loading branch information
nielserik authored Nov 29, 2018
1 parent eecaabf commit db90ad4
Show file tree
Hide file tree
Showing 16 changed files with 100 additions and 28 deletions.
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* Requires `item-storage` interface 7.0 (MODINV-94)
* Changes structure of `alternativeTitles` (MODINV-90)
* Renames `item.pieceIdentifiers` to `copyNumbers` (MODINV-94)
* Changes structure of item notes (MODINV-97)

## 10.0.0 2018-10-12

Expand Down
17 changes: 14 additions & 3 deletions ramls/item.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,20 @@
"notes": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
"type": "object",
"properties": {
"itemNoteTypeId": {
"type": "string"
},
"note": {
"type": "string"
},
"staffOnly": {
"type": "boolean",
"default": false
}
}
}
},
"status": {
"type": "object",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.folio.inventory.domain;

import org.folio.inventory.domain.items.ItemCollection;
import org.folio.inventory.domain.instances.InstanceCollection;
import org.folio.inventory.domain.ingest.IngestJobCollection;

Expand Down
4 changes: 0 additions & 4 deletions src/main/java/org/folio/inventory/domain/ItemCollection.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.folio.inventory.domain.ingest;

import org.folio.inventory.domain.items.Item;
import org.folio.inventory.domain.items.ItemCollection;

import java.lang.invoke.MethodHandles;
import java.util.*;
import java.util.stream.Collectors;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
package org.folio.inventory.domain;

import io.vertx.core.json.JsonObject;
package org.folio.inventory.domain.items;

import java.util.ArrayList;
import java.util.List;

import io.vertx.core.json.JsonObject;

public class Item {

public static final String NOTES_KEY = "notes";

public final String id;
public final String barcode;
public final String enumeration;
public final String chronology;
public final List<String> copyNumbers;
public final String numberOfPieces;
public final String holdingId;
public final List<String> notes;
public final List<Note> notes;
public final String status;
public final String materialTypeId;
public final String permanentLoanTypeId;
Expand All @@ -29,7 +32,7 @@ public Item(String id,
List<String> copyNumbers,
String numberOfPieces,
String holdingId,
List<String> notes,
List<Note> notes,
String status,
String materialTypeId,
String permanentLocationId,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.folio.inventory.domain.items;

import org.folio.inventory.domain.AsynchronousCollection;
import org.folio.inventory.domain.SearchableCollection;

public interface ItemCollection extends AsynchronousCollection<Item>, SearchableCollection<Item> {
}
34 changes: 34 additions & 0 deletions src/main/java/org/folio/inventory/domain/items/Note.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.folio.inventory.domain.items;

import io.vertx.core.json.JsonObject;

/**
*
* @author ne
*/
public class Note {
public static final String ITEM_NOTE_TYPE_ID_KEY = "itemNoteTypeId";
public static final String NOTE_KEY = "note";
public static final String STAFF_ONLY_KEY = "staffOnly";

public final String itemNoteTypeId;
public final String note;
public final Boolean staffOnly;

public Note (String itemNoteTypeId, String note, Boolean staffOnly) {
this.itemNoteTypeId = itemNoteTypeId;
this.note = note;
this.staffOnly = staffOnly;
}

public Note (JsonObject json) {
this(json.getString(ITEM_NOTE_TYPE_ID_KEY),
json.getString(NOTE_KEY),
json.getBoolean(STAFF_ONLY_KEY));
}

}




Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import org.folio.inventory.common.WebContext;
import org.folio.inventory.common.domain.MultipleRecords;
import org.folio.inventory.domain.Item;
import org.folio.inventory.domain.items.Item;

import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
Expand Down
11 changes: 8 additions & 3 deletions src/main/java/org/folio/inventory/resources/Items.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@
import org.folio.inventory.common.api.request.PagingParameters;
import org.folio.inventory.common.domain.MultipleRecords;
import org.folio.inventory.common.domain.Success;
import org.folio.inventory.domain.Item;
import org.folio.inventory.domain.ItemCollection;
import org.folio.inventory.domain.items.Item;
import org.folio.inventory.domain.items.ItemCollection;
import org.folio.inventory.domain.items.Note;
import org.folio.inventory.storage.Storage;
import org.folio.inventory.storage.external.CollectionResourceClient;
import org.folio.inventory.support.CqlHelper;
Expand Down Expand Up @@ -289,7 +290,11 @@ private Item requestToItem(JsonObject itemRequest) {

String status = getNestedProperty(itemRequest, "status", "name");

List<String> notes = toListOfStrings(itemRequest.getJsonArray("notes"));
List<Note> notes = itemRequest.containsKey(Item.NOTES_KEY)
? JsonArrayHelper.toList(itemRequest.getJsonArray(Item.NOTES_KEY)).stream()
.map(json -> new Note(json))
.collect(Collectors.toList())
: new ArrayList<>();

String materialTypeId = getNestedProperty(itemRequest, "materialType", "id");
String permanentLocationId = getNestedProperty(itemRequest, "permanentLocation", "id");
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/org/folio/inventory/storage/Storage.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

import io.vertx.core.Vertx;
import io.vertx.core.json.JsonObject;

import org.folio.inventory.common.Context;
import org.folio.inventory.domain.CollectionProvider;
import org.folio.inventory.domain.HoldingCollection;
import org.folio.inventory.domain.instances.InstanceCollection;
import org.folio.inventory.domain.ItemCollection;
import org.folio.inventory.domain.items.ItemCollection;
import org.folio.inventory.domain.ingest.IngestJobCollection;
import org.folio.inventory.storage.external.ExternalStorageCollections;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package org.folio.inventory.storage.external;

import io.vertx.core.Vertx;

import org.folio.inventory.domain.CollectionProvider;
import org.folio.inventory.domain.HoldingCollection;
import org.folio.inventory.domain.instances.InstanceCollection;
import org.folio.inventory.domain.ItemCollection;
import org.folio.inventory.domain.items.ItemCollection;
import org.folio.inventory.domain.ingest.IngestJobCollection;
import org.folio.inventory.storage.memory.InMemoryIngestJobCollection;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
package org.folio.inventory.storage.external;

import static org.folio.inventory.support.JsonArrayHelper.toList;
import static org.folio.inventory.support.JsonHelper.getNestedProperty;

import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;

import org.folio.inventory.domain.Item;
import org.folio.inventory.domain.ItemCollection;
import org.folio.inventory.domain.items.Item;
import org.folio.inventory.domain.items.ItemCollection;
import org.folio.inventory.domain.items.Note;
import org.folio.inventory.support.JsonArrayHelper;

import io.vertx.core.Vertx;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;

class ExternalStorageModuleItemCollection
Expand All @@ -31,8 +35,12 @@ protected Item mapFromJson(JsonObject itemFromServer) {
List<String> pieceIdentifierList;
pieceIdentifierList = JsonArrayHelper.toListOfStrings(itemFromServer.getJsonArray("copyNumbers"));

List<String> notesList;
notesList = JsonArrayHelper.toListOfStrings(itemFromServer.getJsonArray("notes"));
List<JsonObject> notes = toList(
itemFromServer.getJsonArray(Item.NOTES_KEY, new JsonArray()));

List<Note> mappedNotes = notes.stream()
.map(it -> new Note(it))
.collect(Collectors.toList());

return new Item(
itemFromServer.getString("id"),
Expand All @@ -42,7 +50,7 @@ protected Item mapFromJson(JsonObject itemFromServer) {
pieceIdentifierList,
itemFromServer.getString("numberOfPieces"),
itemFromServer.getString("holdingsRecordId"),
notesList,
mappedNotes,
getNestedProperty(itemFromServer, "status", "name"),
itemFromServer.getString("materialTypeId"),
itemFromServer.getString("permanentLocationId"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package org.folio.inventory.support;

import io.vertx.core.json.JsonObject;
import org.folio.inventory.domain.Item;

import org.folio.inventory.domain.items.Item;

import java.util.Collection;
import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import org.folio.inventory.common.WaitForAllFutures;
import org.folio.inventory.common.api.request.PagingParameters;
import org.folio.inventory.common.domain.MultipleRecords;
import org.folio.inventory.domain.Item;
import org.folio.inventory.domain.ItemCollection;
import org.folio.inventory.domain.items.Item;
import org.folio.inventory.domain.items.ItemCollection;
import org.junit.Before;
import org.junit.Test;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import org.folio.inventory.common.api.request.PagingParameters;
import org.folio.inventory.common.domain.Failure;
import org.folio.inventory.domain.CollectionProvider;
import org.folio.inventory.domain.Item;
import org.folio.inventory.domain.ItemCollection;
import org.folio.inventory.domain.items.Item;
import org.folio.inventory.domain.items.ItemCollection;
import org.junit.Test;

import java.io.UnsupportedEncodingException;
Expand Down

0 comments on commit db90ad4

Please sign in to comment.