use of org.folio.service.holdings.message.HoldingsMessage in project mod-kb-ebsco-java by folio-org.
the class TransactionLoadHoldingsImplTest method shouldSendSaveHoldingsEventForEachLoadedPage.
@Test
public void shouldSendSaveHoldingsEventForEachLoadedPage(TestContext context) throws IOException, URISyntaxException {
mockEmptyTransactionList();
mockGet(new EqualToPattern(getStatusEndpoint()), RMAPI_RESPONSE_TRANSACTION_STATUS_COMPLETED);
mockGet(new RegexPattern(getHoldingsEndpoint()), RMAPI_RESPONSE_HOLDINGS);
List<HoldingsMessage> messages = new ArrayList<>();
Async async = context.async(EXPECTED_LOADED_PAGES);
interceptor = interceptAndStop(HOLDINGS_SERVICE_ADDRESS, SAVE_HOLDINGS_ACTION, message -> {
messages.add(((JsonObject) message.body()).getJsonObject("holdings").mapTo(HoldingsMessage.class));
async.countDown();
});
vertx.eventBus().addOutboundInterceptor(interceptor);
LoadServiceFacade proxy = LoadServiceFacade.createProxy(vertx, LOAD_FACADE_ADDRESS);
LoadHoldingsMessage message = new LoadHoldingsMessage(this.configuration, STUB_CREDENTIALS_ID, STUB_TENANT, 5001, 2, TRANSACTION_ID, null);
proxy.loadHoldings(message);
async.await(TIMEOUT);
assertEquals(2, messages.size());
assertEquals(STUB_HOLDINGS_TITLE, messages.get(0).getHoldingList().get(0).getPublicationTitle());
}
use of org.folio.service.holdings.message.HoldingsMessage in project mod-kb-ebsco-java by folio-org.
the class DefaultLoadHoldingsImplTest method shouldSendSaveHoldingsEventForEachLoadedPage.
@Test
public void shouldSendSaveHoldingsEventForEachLoadedPage(TestContext context) throws IOException, URISyntaxException {
mockGet(new EqualToPattern(RMAPI_HOLDINGS_STATUS_URL), RMAPI_RESPONSE_HOLDINGS_STATUS_COMPLETED);
mockGet(new RegexPattern(RMAPI_POST_HOLDINGS_URL), RMAPI_RESPONSE_HOLDINGS);
List<HoldingsMessage> messages = new ArrayList<>();
Async async = context.async(EXPECTED_LOADED_PAGES);
interceptor = interceptAndStop(HOLDINGS_SERVICE_ADDRESS, SAVE_HOLDINGS_ACTION, message -> {
messages.add(((JsonObject) message.body()).getJsonObject("holdings").mapTo(HoldingsMessage.class));
async.countDown();
});
vertx.eventBus().addOutboundInterceptor(interceptor);
LoadServiceFacade proxy = LoadServiceFacade.createProxy(vertx, LOAD_FACADE_ADDRESS);
proxy.loadHoldings(new LoadHoldingsMessage(stubConfiguration, STUB_CREDENTIALS_ID, STUB_TENANT, 5001, 2, null, null));
async.await(TIMEOUT);
assertEquals(2, messages.size());
assertEquals(STUB_HOLDINGS_TITLE, messages.get(0).getHoldingList().get(0).getPublicationTitle());
}
use of org.folio.service.holdings.message.HoldingsMessage in project mod-kb-ebsco-java by folio-org.
the class HoldingsServiceImpl method saveHolding.
@Override
public void saveHolding(HoldingsMessage holdings) {
final String tenantId = holdings.getTenantId();
final UUID credentialsId = toUUID(holdings.getCredentialsId());
saveHoldings(holdings.getHoldingList(), OffsetDateTime.now(), credentialsId, tenantId).thenCompose(o -> holdingsStatusRepository.increaseImportedCount(holdings.getHoldingList().size(), 1, credentialsId, tenantId)).thenCompose(status -> {
LoadStatusAttributes attributes = status.getData().getAttributes();
if (hasLoadedLastPage(status)) {
return holdingsRepository.deleteBeforeTimestamp(getZonedDateTime(attributes.getStarted()), credentialsId, tenantId).thenCompose(o -> holdingsStatusRepository.update(getStatusCompleted(attributes.getTotalCount()), credentialsId, tenantId)).thenCompose(o -> transactionIdRepository.save(credentialsId, holdings.getTransactionId(), tenantId));
}
return CompletableFuture.completedFuture(null);
}).exceptionally(e -> {
logger.error(FAILED_SAVE_HOLDINGS_MESSAGE, e);
return null;
});
}
Aggregations