Skip to content

Commit 4e3ec9b

Browse files
SIP2-313: Refactoring
1 parent 409d6e6 commit 4e3ec9b

2 files changed

Lines changed: 58 additions & 51 deletions

File tree

src/main/java/org/folio/edge/sip2/repositories/FeeFinesRepository.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.folio.edge.sip2.domain.messages.responses.FeePaidResponse;
2727
import org.folio.edge.sip2.repositories.domain.User;
2828
import org.folio.edge.sip2.session.SessionData;
29+
import org.folio.edge.sip2.utils.CqlQuery;
2930
import org.folio.edge.sip2.utils.Sip2LogAdapter;
3031
import org.folio.edge.sip2.utils.Utils;
3132
import org.folio.util.PercentCodec;
@@ -197,14 +198,17 @@ public Future<JsonObject> getAutomatedBlocksByUserId(String userId, SessionData
197198
new GetAutomatedBlocksByUserIdRequestData(userId, headers, sessionData);
198199

199200
return resourceProvider.retrieveResource(requestData)
200-
.otherwise(t -> {
201-
log.warn(sessionData,
202-
"Failed to retrieve automated patron blocks for user {}: {}", userId, t.getMessage());
203-
return () -> null;
204-
})
201+
.onFailure(t -> logAutomatedPatronBlocksFetchError(userId, sessionData, t))
202+
.otherwise(() -> null)
205203
.map(IResource::getResource);
206204
}
207205

206+
private void logAutomatedPatronBlocksFetchError(String userId, SessionData sessionData,
207+
Throwable t) {
208+
log.warn(sessionData,
209+
"Failed to retrieve automated patron blocks for user {}: {}", userId, t.getMessage());
210+
}
211+
208212
protected static class GetAutomatedBlocksByUserIdRequestData implements IRequestData {
209213
private final String userId;
210214
private final Map<String, String> headers;
@@ -219,7 +223,7 @@ protected GetAutomatedBlocksByUserIdRequestData(String userId, Map<String, Strin
219223

220224
@Override
221225
public String getPath() {
222-
return "/automated-patron-blocks?query=" + PercentCodec.encode(cqlUserId(userId));
226+
return "/automated-patron-blocks?query=" + CqlQuery.exactMatch("userId", userId).toText();
223227
}
224228

225229
@Override

src/main/java/org/folio/edge/sip2/repositories/PatronRepository.java

Lines changed: 48 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -354,13 +354,12 @@ private Future<PatronStatusResponse> validPatron(ExtendedUser extendedUser,
354354
feeFinesRepository.getManualBlocksByUserId(userId, sessionData),
355355
feeFinesRepository.getAutomatedBlocksByUserId(userId, sessionData))
356356
.map(cf -> {
357-
final JsonObject manualBlocks = cf.resultAt(0);
358-
final JsonObject automatedBlocks = cf.resultAt(1);
359-
final EnumSet<PatronStatus> patronStatusFlags =
360-
extractPatronStatusFromBlocks(manualBlocks);
357+
var manualBlocks = (JsonObject) cf.resultAt(0);
358+
var automatedBlocks = (JsonObject) cf.resultAt(1);
359+
var patronStatusFlags = extractPatronStatusFromBlocks(manualBlocks);
361360
patronStatusFlags.addAll(extractPatronStatusFromAutomatedBlocks(automatedBlocks));
362361
builder.patronStatus(patronStatusFlags);
363-
final List<String> messages = new ArrayList<>(extractBlockMessages(manualBlocks));
362+
var messages = new ArrayList<>(extractBlockMessages(manualBlocks));
364363
messages.addAll(extractAutomatedBlockMessages(automatedBlocks));
365364
if (!messages.isEmpty()) {
366365
builder.screenMessage(messages);
@@ -498,24 +497,16 @@ private PatronInformationResponseBuilder buildPatronStatus(JsonObject manualBloc
498497
}
499498

500499
private static EnumSet<PatronStatus> extractPatronStatusFromAutomatedBlocks(JsonObject blocks) {
501-
final EnumSet<PatronStatus> patronStatus = EnumSet.noneOf(PatronStatus.class);
500+
final var patronStatus = EnumSet.noneOf(PatronStatus.class);
502501

503502
if (blocks != null && blocks.getInteger(FIELD_TOTAL_RECORDS, 0) > 0) {
504503
blocks.getJsonArray("automatedPatronBlocks", new JsonArray()).stream()
505504
.map(o -> (JsonObject) o)
506-
.forEach(jo -> {
507-
if (TRUE.equals(jo.getBoolean("blockBorrowing", FALSE))) {
508-
patronStatus.addAll(EnumSet.allOf(PatronStatus.class));
509-
} else {
510-
if (TRUE.equals(jo.getBoolean("blockRenewals", FALSE))) {
511-
patronStatus.add(RENEWAL_PRIVILEGES_DENIED);
512-
}
513-
if (TRUE.equals(jo.getBoolean("blockRequests", FALSE))) {
514-
patronStatus.add(HOLD_PRIVILEGES_DENIED);
515-
patronStatus.add(RECALL_PRIVILEGES_DENIED);
516-
}
517-
}
518-
});
505+
.map(jo -> toBlockStatusFlags(
506+
jo.getBoolean("blockBorrowing", FALSE),
507+
jo.getBoolean("blockRenewals", FALSE),
508+
jo.getBoolean("blockRequests", FALSE)))
509+
.forEach(patronStatus::addAll);
519510
}
520511

521512
return patronStatus;
@@ -528,43 +519,55 @@ protected static List<String> extractAutomatedBlockMessages(JsonObject blocks) {
528519

529520
return blocks.getJsonArray("automatedPatronBlocks", new JsonArray()).stream()
530521
.map(o -> (JsonObject) o)
531-
.filter(jo -> jo.getBoolean("blockBorrowing", FALSE)
532-
|| jo.getBoolean("blockRenewals", FALSE)
533-
|| jo.getBoolean("blockRequests", FALSE))
534-
.map(jo -> {
535-
final String message = jo.getString("message");
536-
if (StringUtils.isNotBlank(message)) {
537-
return message;
538-
}
539-
return MESSAGE_BLOCKED_PATRON;
540-
})
522+
.filter(PatronRepository::hasAnyAutomatedBlock)
523+
.map(PatronRepository::resolveAutomatedBlockMessage)
541524
.toList();
542525
}
543526

527+
private static boolean hasAnyAutomatedBlock(JsonObject jo) {
528+
return jo.getBoolean("blockBorrowing", FALSE)
529+
|| jo.getBoolean("blockRenewals", FALSE)
530+
|| jo.getBoolean("blockRequests", FALSE);
531+
}
532+
533+
private static String resolveAutomatedBlockMessage(JsonObject jo) {
534+
var message = jo.getString("message");
535+
return StringUtils.isNotBlank(message) ? message : MESSAGE_BLOCKED_PATRON;
536+
}
537+
544538
private static EnumSet<PatronStatus> extractPatronStatusFromBlocks(JsonObject blocks) {
545-
final EnumSet<PatronStatus> patronStatus = EnumSet.noneOf(PatronStatus.class);
539+
final var patronStatus = EnumSet.noneOf(PatronStatus.class);
546540

547541
if (blocks != null && blocks.getInteger(FIELD_TOTAL_RECORDS, 0) > 0) {
548542
blocks.getJsonArray("manualblocks", new JsonArray()).stream()
549543
.map(o -> (JsonObject) o)
550-
.forEach(jo -> {
551-
if (jo.getBoolean("borrowing", FALSE)) {
552-
patronStatus.addAll(EnumSet.allOf(PatronStatus.class));
553-
} else {
554-
if (jo.getBoolean("renewals", FALSE)) {
555-
patronStatus.add(RENEWAL_PRIVILEGES_DENIED);
556-
}
557-
if (jo.getBoolean(FIELD_REQUESTS, FALSE)) {
558-
patronStatus.add(HOLD_PRIVILEGES_DENIED);
559-
patronStatus.add(RECALL_PRIVILEGES_DENIED);
560-
}
561-
}
562-
});
544+
.map(jo -> toBlockStatusFlags(
545+
jo.getBoolean("borrowing", FALSE),
546+
jo.getBoolean("renewals", FALSE),
547+
jo.getBoolean(FIELD_REQUESTS, FALSE)))
548+
.forEach(patronStatus::addAll);
563549
}
564550

565551
return patronStatus;
566552
}
567553

554+
private static EnumSet<PatronStatus> toBlockStatusFlags(
555+
boolean borrowing, boolean renewals, boolean requests) {
556+
var flags = EnumSet.noneOf(PatronStatus.class);
557+
if (borrowing) {
558+
flags.addAll(EnumSet.allOf(PatronStatus.class));
559+
} else {
560+
if (renewals) {
561+
flags.add(RENEWAL_PRIVILEGES_DENIED);
562+
}
563+
if (requests) {
564+
flags.add(HOLD_PRIVILEGES_DENIED);
565+
flags.add(RECALL_PRIVILEGES_DENIED);
566+
}
567+
}
568+
return flags;
569+
}
570+
568571
protected static List<String> extractBlockMessages(JsonObject blocks) {
569572
if (blocks == null || blocks.getInteger(FIELD_TOTAL_RECORDS, 0) == 0) {
570573
return Collections.emptyList();
@@ -576,11 +579,11 @@ protected static List<String> extractBlockMessages(JsonObject blocks) {
576579
|| jo.getBoolean("renewals", FALSE)
577580
|| jo.getBoolean(FIELD_REQUESTS, FALSE))
578581
.map(jo -> {
579-
final String patronMessage = jo.getString("patronMessage");
582+
var patronMessage = jo.getString("patronMessage");
580583
if (StringUtils.isNotBlank(patronMessage)) {
581584
return patronMessage;
582585
}
583-
final String desc = jo.getString("desc");
586+
var desc = jo.getString("desc");
584587
if (StringUtils.isNotBlank(desc)) {
585588
return desc;
586589
}

0 commit comments

Comments
 (0)