Search in sources :

Example 6 with Criteria

use of org.folio.rest.persist.Criteria.Criteria in project mod-inventory-storage by folio-org.

the class PlatformAPI method getPlatformsByPlatformId.

@Validate
@Override
public void getPlatformsByPlatformId(String instanceTypeId, String lang, Map<String, String> okapiHeaders, Handler<AsyncResult<Response>> asyncResultHandler, Context vertxContext) throws Exception {
    vertxContext.runOnContext(v -> {
        try {
            String tenantId = TenantTool.tenantId(okapiHeaders);
            Criterion c = new Criterion(new Criteria().addField(idFieldName).setJSONB(false).setOperation("=").setValue("'" + instanceTypeId + "'"));
            PostgresClient.getInstance(vertxContext.owner(), tenantId).get(PLATFORM_TABLE, Platform.class, c, true, reply -> {
                try {
                    if (reply.failed()) {
                        String msg = PgExceptionUtil.badRequestMessage(reply.cause());
                        if (msg == null) {
                            internalServerErrorDuringGetById(reply.cause(), lang, asyncResultHandler);
                            return;
                        }
                        log.info(msg);
                        asyncResultHandler.handle(Future.succeededFuture(PlatformsResource.GetPlatformsByPlatformIdResponse.withPlainNotFound(msg)));
                        return;
                    }
                    @SuppressWarnings("unchecked") List<Platform> instanceType = (List<Platform>) reply.result().getResults();
                    if (instanceType.isEmpty()) {
                        asyncResultHandler.handle(io.vertx.core.Future.succeededFuture(PlatformsResource.GetPlatformsByPlatformIdResponse.withPlainNotFound(instanceTypeId)));
                    } else {
                        asyncResultHandler.handle(io.vertx.core.Future.succeededFuture(PlatformsResource.GetPlatformsByPlatformIdResponse.withJsonOK(instanceType.get(0))));
                    }
                } catch (Exception e) {
                    internalServerErrorDuringGetById(e, lang, asyncResultHandler);
                }
            });
        } catch (Exception e) {
            internalServerErrorDuringGetById(e, lang, asyncResultHandler);
        }
    });
}
Also used : Platform(org.folio.rest.jaxrs.model.Platform) Criterion(org.folio.rest.persist.Criteria.Criterion) List(java.util.List) Criteria(org.folio.rest.persist.Criteria.Criteria) CQLParseException(org.z3950.zing.cql.CQLParseException) FieldException(org.z3950.zing.cql.cql2pgjson.FieldException) Validate(org.folio.rest.annotations.Validate)

Example 7 with Criteria

use of org.folio.rest.persist.Criteria.Criteria in project mod-inventory-storage by folio-org.

the class ItemStorageAPI method deleteItemStorageItemsByItemId.

@Validate
@Override
public void deleteItemStorageItemsByItemId(@PathParam("itemId") @NotNull String itemId, @QueryParam("lang") @DefaultValue("en") @Pattern(regexp = "[a-zA-Z]{2}") String lang, java.util.Map<String, String> okapiHeaders, io.vertx.core.Handler<io.vertx.core.AsyncResult<Response>> asyncResultHandler, Context vertxContext) throws Exception {
    String tenantId = okapiHeaders.get(TENANT_HEADER);
    try {
        PostgresClient postgresClient = PostgresClient.getInstance(vertxContext.owner(), TenantTool.calculateTenantId(tenantId));
        Criteria a = new Criteria();
        a.addField("'id'");
        a.setOperation("=");
        a.setValue(itemId);
        Criterion criterion = new Criterion(a);
        vertxContext.runOnContext(v -> {
            try {
                postgresClient.delete("item", criterion, reply -> {
                    if (reply.succeeded()) {
                        asyncResultHandler.handle(Future.succeededFuture(DeleteItemStorageItemsByItemIdResponse.withNoContent()));
                    } else {
                        asyncResultHandler.handle(Future.succeededFuture(ItemStorageResource.DeleteItemStorageItemsByItemIdResponse.withPlainInternalServerError("Error")));
                    }
                });
            } catch (Exception e) {
                asyncResultHandler.handle(Future.succeededFuture(ItemStorageResource.DeleteItemStorageItemsByItemIdResponse.withPlainInternalServerError("Error")));
            }
        });
    } catch (Exception e) {
        asyncResultHandler.handle(Future.succeededFuture(ItemStorageResource.DeleteItemStorageItemsByItemIdResponse.withPlainInternalServerError("Error")));
    }
}
Also used : Criterion(org.folio.rest.persist.Criteria.Criterion) PostgresClient(org.folio.rest.persist.PostgresClient) Criteria(org.folio.rest.persist.Criteria.Criteria) FieldException(org.z3950.zing.cql.cql2pgjson.FieldException) Validate(org.folio.rest.annotations.Validate)

Example 8 with Criteria

use of org.folio.rest.persist.Criteria.Criteria in project mod-inventory-storage by folio-org.

the class ItemStorageAPI method getShelfLocation.

private Future<Location> getShelfLocation(Vertx vertx, String tenantId, String locationId) {
    Future<Location> future = Future.future();
    try {
        Criteria crit = new Criteria(LocationAPI.LOCATION_SCHEMA_PATH);
        crit.addField(LocationAPI.ID_FIELD_NAME);
        crit.setOperation("=");
        crit.setValue(locationId);
        PostgresClient.getInstance(vertx, tenantId).get(LocationAPI.LOCATION_TABLE, Location.class, new Criterion(crit), true, false, getReply -> {
            if (getReply.failed()) {
                future.fail(getReply.cause());
            } else {
                List<Location> locationList = (List<Location>) getReply.result().getResults();
                if (locationList.size() < 1) {
                    future.fail("No location found");
                } else {
                    future.complete(locationList.get(0));
                }
            }
        });
    } catch (Exception e) {
        future.fail(e);
    }
    return future;
}
Also used : Criterion(org.folio.rest.persist.Criteria.Criterion) List(java.util.List) Criteria(org.folio.rest.persist.Criteria.Criteria) FieldException(org.z3950.zing.cql.cql2pgjson.FieldException)

Example 9 with Criteria

use of org.folio.rest.persist.Criteria.Criteria in project mod-inventory-storage by folio-org.

the class LocationAPI method getLocationsById.

@Override
public void getLocationsById(String id, String lang, Map<String, String> okapiHeaders, Handler<AsyncResult<Response>> asyncResultHandler, Context vertxContext) {
    String tenantId = getTenant(okapiHeaders);
    Criterion criterion;
    try {
        Criteria criteria = new Criteria(LOCATION_SCHEMA_PATH);
        criteria.addField(ID_FIELD_NAME);
        criteria.setOperation("=");
        criteria.setValue(id);
        criterion = new Criterion(criteria);
    } catch (Exception e) {
        String message = logAndSaveError(e);
        asyncResultHandler.handle(Future.succeededFuture(GetLocationsByIdResponse.withPlainInternalServerError(message)));
        return;
    }
    PostgresClient.getInstance(vertxContext.owner(), tenantId).get(LOCATION_TABLE, Location.class, criterion, true, false, getReply -> {
        if (getReply.failed()) {
            String message = logAndSaveError(getReply.cause());
            asyncResultHandler.handle(Future.succeededFuture(GetLocationsByIdResponse.withPlainInternalServerError(message)));
        } else {
            List<Location> locationList = (List<Location>) getReply.result().getResults();
            if (locationList.isEmpty()) {
                asyncResultHandler.handle(Future.succeededFuture(GetLocationsByIdResponse.withPlainNotFound(messages.getMessage(lang, MessageConsts.ObjectDoesNotExist))));
            } else if (locationList.size() > 1) {
                String message = "Multiple locations found with the same id";
                logger.error(message);
                asyncResultHandler.handle(Future.succeededFuture(GetLocationsByIdResponse.withPlainInternalServerError(message)));
            } else {
                asyncResultHandler.handle(Future.succeededFuture(GetLocationsByIdResponse.withJsonOK(locationList.get(0))));
            }
        }
    });
}
Also used : Criterion(org.folio.rest.persist.Criteria.Criterion) List(java.util.List) Criteria(org.folio.rest.persist.Criteria.Criteria) FieldException(org.z3950.zing.cql.cql2pgjson.FieldException) Location(org.folio.rest.jaxrs.model.Location)

Example 10 with Criteria

use of org.folio.rest.persist.Criteria.Criteria in project mod-inventory-storage by folio-org.

the class ShelfLocationAPI method getShelfLocationsById.

/**
 * Get a new-kind of Location object, and convert it to old-style
 * shelf-location.
 */
@Override
public void getShelfLocationsById(String id, String lang, Map<String, String> okapiHeaders, Handler<AsyncResult<Response>> asyncResultHandler, Context vertxContext) throws Exception {
    try {
        String tenantId = getTenant(okapiHeaders);
        Criteria criteria = new Criteria(LOCATION_SCHEMA_PATH);
        criteria.addField(ID_FIELD_NAME);
        criteria.setOperation("=");
        criteria.setValue(id);
        Criterion criterion = new Criterion(criteria);
        PostgresClient.getInstance(vertxContext.owner(), tenantId).get(LOCATION_TABLE, Location.class, criterion, true, false, getReply -> {
            if (getReply.failed()) {
                String message = logAndSaveError(getReply.cause());
                asyncResultHandler.handle(Future.succeededFuture(GetShelfLocationsByIdResponse.withPlainInternalServerError(message)));
            } else {
                List<Location> locationList = (List<Location>) getReply.result().getResults();
                if (locationList.size() < 1) {
                    asyncResultHandler.handle(Future.succeededFuture(GetShelfLocationsByIdResponse.withPlainNotFound(messages.getMessage(lang, MessageConsts.ObjectDoesNotExist))));
                } else if (locationList.size() > 1) {
                    String message = "Multiple locations found with the same id";
                    logger.error(message);
                    asyncResultHandler.handle(Future.succeededFuture(GetShelfLocationsByIdResponse.withPlainInternalServerError(message)));
                } else {
                    Location loc = locationList.get(0);
                    Shelflocation sl = new Shelflocation();
                    sl.setId(loc.getId());
                    sl.setName(loc.getName());
                    asyncResultHandler.handle(Future.succeededFuture(GetShelfLocationsByIdResponse.withJsonOK(sl)));
                }
            }
        });
    } catch (Exception e) {
        String message = logAndSaveError(e);
        asyncResultHandler.handle(Future.succeededFuture(GetShelfLocationsByIdResponse.withPlainInternalServerError(message)));
    }
}
Also used : Criterion(org.folio.rest.persist.Criteria.Criterion) ArrayList(java.util.ArrayList) List(java.util.List) Criteria(org.folio.rest.persist.Criteria.Criteria) NotImplementedException(org.apache.commons.lang.NotImplementedException) FieldException(org.z3950.zing.cql.cql2pgjson.FieldException) Location(org.folio.rest.jaxrs.model.Location) Shelflocation(org.folio.rest.jaxrs.model.Shelflocation)

Aggregations

Criteria (org.folio.rest.persist.Criteria.Criteria)30 Criterion (org.folio.rest.persist.Criteria.Criterion)29 FieldException (org.z3950.zing.cql.cql2pgjson.FieldException)26 List (java.util.List)16 Validate (org.folio.rest.annotations.Validate)12 CQLParseException (org.z3950.zing.cql.CQLParseException)8 PostgresClient (org.folio.rest.persist.PostgresClient)3 Location (org.folio.rest.jaxrs.model.Location)2 Async (io.vertx.ext.unit.Async)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 NotImplementedException (org.apache.commons.lang.NotImplementedException)1 ClassificationType (org.folio.rest.jaxrs.model.ClassificationType)1 ContributorNameType (org.folio.rest.jaxrs.model.ContributorNameType)1 ContributorType (org.folio.rest.jaxrs.model.ContributorType)1 IdentifierType (org.folio.rest.jaxrs.model.IdentifierType)1 InstanceFormat (org.folio.rest.jaxrs.model.InstanceFormat)1 InstanceType (org.folio.rest.jaxrs.model.InstanceType)1 JobConf (org.folio.rest.jaxrs.model.JobConf)1 Loantype (org.folio.rest.jaxrs.model.Loantype)1