use of org.folio.holdingsiq.model.Titles in project mod-kb-ebsco-java by folio-org.
the class EholdingsPackagesImpl method getEholdingsPackagesResourcesByPackageId.
@Override
@Validate
@HandleValidationErrors
public void getEholdingsPackagesResourcesByPackageId(String packageId, List<String> filterTags, List<String> filterAccessType, String filterSelected, String filterType, String filterName, String filterIsxn, String filterSubject, String filterPublisher, String sort, int page, int count, Map<String, String> okapiHeaders, Handler<AsyncResult<Response>> asyncResultHandler, Context vertxContext) {
Filter filter = Filter.builder().recordType(RecordType.RESOURCE).filterTags(filterTags).packageId(packageId).filterAccessType(filterAccessType).filterSelected(filterSelected).filterType(filterType).filterName(filterName).filterIsxn(filterIsxn).filterSubject(filterSubject).filterPublisher(filterPublisher).sort(sort).page(page).count(count).build();
RMAPITemplate template = templateFactory.createTemplate(okapiHeaders, asyncResultHandler);
if (filter.isTagsFilter()) {
template.requestAction(context -> filteredEntitiesLoader.fetchResourcesByTagFilter(filter.createTagFilter(), context));
} else if (filter.isAccessTypeFilter()) {
template.requestAction(context -> filteredEntitiesLoader.fetchResourcesByAccessTypeFilter(filter.createAccessTypeFilter(), context));
} else {
template.requestAction(context -> {
PackageId pkgId = filter.getPackageId();
long providerIdPart = pkgId.getProviderIdPart();
long packageIdPart = pkgId.getPackageIdPart();
return context.getTitlesService().retrieveTitles(providerIdPart, packageIdPart, filter.createFilterQuery(), searchProperties.getTitlesSearchType(), filter.getSort(), page, count).thenApply(titles -> titleCollectionConverter.convert(titles)).thenCompose(loadResourceTags(context));
});
}
template.addErrorMapper(ResourceNotFoundException.class, exception -> GetEholdingsPackagesResourcesByPackageIdResponse.respond404WithApplicationVndApiJson(ErrorUtil.createError(PACKAGE_NOT_FOUND_MESSAGE))).executeWithResult(ResourceCollection.class);
}
use of org.folio.holdingsiq.model.Titles in project mod-kb-ebsco-java by folio-org.
the class EholdingsTitlesImpl method getEholdingsTitles.
@Override
@Validate
@HandleValidationErrors
public void getEholdingsTitles(List<String> filterTags, List<String> filterAccessType, String filterSelected, String filterType, String filterName, String filterIsxn, String filterSubject, String filterPublisher, String include, String sort, int page, int count, Map<String, String> okapiHeaders, Handler<AsyncResult<Response>> asyncResultHandler, Context vertxContext) {
Filter filter = Filter.builder().recordType(RecordType.TITLE).filterTags(filterTags).filterAccessType(filterAccessType).filterSelected(filterSelected).filterType(filterType).filterName(filterName).filterIsxn(filterIsxn).filterSubject(filterSubject).filterPublisher(filterPublisher).sort(sort).page(page).count(count).build();
templateFactory.createTemplate(okapiHeaders, asyncResultHandler).requestAction(context -> fetchTitlesByFilter(filter, context).thenApply(titles -> toTitleCollectionResult(titles, shouldIncludeResources(include)))).executeWithResult(TitleCollection.class);
}
use of org.folio.holdingsiq.model.Titles in project mod-kb-ebsco-java by folio-org.
the class PackageConverter method convert.
@Override
public Package convert(@NonNull PackageResult result) {
PackageByIdData packageByIdData = result.getPackageData();
Titles titles = result.getTitles();
VendorById vendor = result.getVendor();
AccessType accessType = result.getAccessType();
Package packageData = new Package().withData(packageCollectionItemConverter.convert(packageByIdData)).withJsonapi(RestConstants.JSONAPI);
packageData.getData().withRelationships(createEmptyPackageRelationship()).withType(PACKAGES_TYPE).getAttributes().withProxy(convertToProxy(packageByIdData.getProxy())).withPackageToken(tokenInfoConverter.convert(packageByIdData.getPackageToken())).withTags(result.getTags());
if (titles != null) {
packageData.getData().withRelationships(new PackageRelationship().withResources(new HasManyRelationship().withMeta(new MetaDataIncluded().withIncluded(true)).withData(convertResourcesRelationship(packageByIdData, titles))));
packageData.getIncluded().addAll(resourcesConverter.convert(titles).getData());
}
if (vendor != null) {
packageData.getIncluded().add(vendorConverter.convert(vendor).getData());
packageData.getData().getRelationships().withProvider(new HasOneRelationship().withData(new RelationshipData().withId(String.valueOf(vendor.getVendorId())).withType(PROVIDERS_TYPE)));
}
if (accessType != null) {
packageData.getIncluded().add(accessType);
packageData.getData().getRelationships().withAccessType(new HasOneRelationship().withData(new RelationshipData().withId(accessType.getId()).withType(AccessType.Type.ACCESS_TYPES.value())).withMeta(new MetaDataIncluded().withIncluded(true)));
}
return packageData;
}
use of org.folio.holdingsiq.model.Titles in project mod-kb-ebsco-java by folio-org.
the class ResourcePostValidatorTest method shouldThrowExceptionWhenTitleIsAlreadyAddedToPackage.
@Test(expected = InputValidationException.class)
public void shouldThrowExceptionWhenTitleIsAlreadyAddedToPackage() {
Title title = createTitle().build();
Titles titles = createTitles().titleList(Collections.singletonList(title)).build();
PackageByIdData packageData = createPackage().build();
validator.validateRelatedObjects(packageData, title, titles);
}
use of org.folio.holdingsiq.model.Titles in project mod-kb-ebsco-java by folio-org.
the class ResourceCollectionResultConverter method convert.
@Override
public ResourceCollection convert(@NonNull ResourceCollectionResult resourceCollectionResult) {
final Titles titles = resourceCollectionResult.getTitles();
final List<DbResource> resources = resourceCollectionResult.getTitlesList();
final List<DbHoldingInfo> holdings = resourceCollectionResult.getHoldings();
final List<ResourceCollectionItem> resourceCollectionItems = mapItems(titles.getTitleList(), title -> mapResourceCollectionItem(resources, resourceCollectionItemConverter.convert(title), createResourceId(title)));
final List<ResourceCollectionItem> holdingCollectionItems = mapItems(holdings, dbHolding -> mapResourceCollectionItem(resources, holdingCollectionItemConverter.convert(dbHolding), createResourceId(dbHolding)));
resourceCollectionItems.addAll(holdingCollectionItems);
resourceCollectionItems.sort(Comparator.comparing(o -> o.getAttributes().getName()));
return new ResourceCollection().withJsonapi(RestConstants.JSONAPI).withMeta(new MetaTotalResults().withTotalResults(titles.getTotalResults())).withData(resourceCollectionItems);
}
Aggregations