Search in sources :

Example 1 with DatabaseException

use of com.bluenimble.platform.db.DatabaseException in project serverless by bluenimble.

the class GetRecordSpi method execute.

@Override
public ApiOutput execute(Api api, final ApiConsumer consumer, ApiRequest request, ApiResponse response) throws ApiServiceExecutionException {
    String provider = (String) request.get(CommonSpec.Provider);
    String sEntity = (String) request.get(CommonSpec.Entity);
    String record = (String) request.get(Spec.Record);
    ApiSpace space;
    try {
        space = MgmUtils.space(consumer, api);
    } catch (ApiAccessDeniedException e) {
        throw new ApiServiceExecutionException(e.getMessage(), e).status(ApiResponse.FORBIDDEN);
    }
    DatabaseObject dbo = null;
    try {
        Database db = space.feature(Database.class, provider, request);
        dbo = db.get(sEntity, record);
    } catch (DatabaseException e) {
        throw new ApiServiceExecutionException(e.getMessage(), e);
    }
    if (dbo == null) {
        return null;
    }
    return new JsonApiOutput(dbo.toJson(null));
}
Also used : ApiAccessDeniedException(com.bluenimble.platform.api.ApiAccessDeniedException) ApiSpace(com.bluenimble.platform.api.ApiSpace) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException) Database(com.bluenimble.platform.db.Database) DatabaseObject(com.bluenimble.platform.db.DatabaseObject) DatabaseException(com.bluenimble.platform.db.DatabaseException) JsonApiOutput(com.bluenimble.platform.api.impls.JsonApiOutput)

Example 2 with DatabaseException

use of com.bluenimble.platform.db.DatabaseException in project serverless by bluenimble.

the class AddRecordSpi method execute.

@Override
public ApiOutput execute(Api api, final ApiConsumer consumer, ApiRequest request, ApiResponse response) throws ApiServiceExecutionException {
    String provider = (String) request.get(CommonSpec.Provider);
    String sEntity = (String) request.get(CommonSpec.Entity);
    final JsonObject payload = (JsonObject) request.get(ApiRequest.Payload);
    ApiSpace space;
    try {
        space = MgmUtils.space(consumer, api);
    } catch (ApiAccessDeniedException e) {
        throw new ApiServiceExecutionException(e.getMessage(), e).status(ApiResponse.FORBIDDEN);
    }
    DatabaseObject dbo;
    try {
        Database db = space.feature(Database.class, provider, request);
        dbo = db.create(sEntity);
        dbo.load(payload);
        dbo.save();
    } catch (DatabaseException e) {
        throw new ApiServiceExecutionException(e.getMessage(), e);
    }
    return new JsonApiOutput((JsonObject) new JsonObject().set(ApiOutput.Defaults.Id, dbo.getId()).set(ApiOutput.Defaults.Timestamp, Lang.toUTC(dbo.getTimestamp())));
}
Also used : ApiAccessDeniedException(com.bluenimble.platform.api.ApiAccessDeniedException) ApiSpace(com.bluenimble.platform.api.ApiSpace) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException) Database(com.bluenimble.platform.db.Database) JsonObject(com.bluenimble.platform.json.JsonObject) DatabaseObject(com.bluenimble.platform.db.DatabaseObject) DatabaseException(com.bluenimble.platform.db.DatabaseException) JsonApiOutput(com.bluenimble.platform.api.impls.JsonApiOutput)

Example 3 with DatabaseException

use of com.bluenimble.platform.db.DatabaseException in project serverless by bluenimble.

the class CreateEntitySpi method execute.

@Override
public ApiOutput execute(Api api, final ApiConsumer consumer, ApiRequest request, ApiResponse response) throws ApiServiceExecutionException {
    String provider = (String) request.get(CommonSpec.Provider);
    String sEntity = (String) request.get(CommonSpec.Entity);
    ApiSpace space;
    try {
        space = MgmUtils.space(consumer, api);
    } catch (ApiAccessDeniedException e) {
        throw new ApiServiceExecutionException(e.getMessage(), e).status(ApiResponse.FORBIDDEN);
    }
    JsonObject payload = (JsonObject) request.get(ApiRequest.Payload);
    JsonArray aFields = Json.getArray(payload, CommonSpec.Fields);
    if (aFields == null || aFields.isEmpty()) {
        throw new ApiServiceExecutionException("missing fields definition").status(ApiResponse.BAD_REQUEST);
    }
    Field[] fields = new Field[aFields.count()];
    for (int i = 0; i < aFields.count(); i++) {
        Object o = aFields.get(i);
        if (o == null || !(o instanceof JsonObject)) {
            continue;
        }
        final JsonObject oField = (JsonObject) o;
        fields[i] = new Field() {

            @Override
            public String name() {
                return Json.getString(oField, Spec.Field.Name);
            }

            @Override
            public boolean required() {
                return Json.getBoolean(oField, Spec.Field.Required, false);
            }

            @Override
            public Type type() {
                try {
                    return Type.valueOf(Json.getString(oField, Spec.Field.Type, Type.String.name()));
                } catch (Exception ex) {
                    return Type.String;
                }
            }

            @Override
            public boolean unique() {
                return Json.getBoolean(oField, Spec.Field.Unique, false);
            }
        };
    }
    try {
        Database db = space.feature(Database.class, provider, request);
        db.createEntity(sEntity, fields);
    } catch (DatabaseException e) {
        throw new ApiServiceExecutionException(e.getMessage(), e);
    } catch (Exception e) {
        throw new ApiServiceExecutionException(e.getMessage(), e).status(ApiResponse.NOT_FOUND);
    }
    return new JsonApiOutput((JsonObject) new JsonObject().set(CommonOutput.Dropped, true));
}
Also used : JsonObject(com.bluenimble.platform.json.JsonObject) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException) ApiAccessDeniedException(com.bluenimble.platform.api.ApiAccessDeniedException) DatabaseException(com.bluenimble.platform.db.DatabaseException) JsonArray(com.bluenimble.platform.json.JsonArray) Field(com.bluenimble.platform.db.Database.Field) ApiAccessDeniedException(com.bluenimble.platform.api.ApiAccessDeniedException) ApiSpace(com.bluenimble.platform.api.ApiSpace) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException) Database(com.bluenimble.platform.db.Database) JsonObject(com.bluenimble.platform.json.JsonObject) DatabaseException(com.bluenimble.platform.db.DatabaseException) JsonApiOutput(com.bluenimble.platform.api.impls.JsonApiOutput)

Example 4 with DatabaseException

use of com.bluenimble.platform.db.DatabaseException in project serverless by bluenimble.

the class DescribeDatabaseSpi method execute.

@Override
public ApiOutput execute(Api api, final ApiConsumer consumer, ApiRequest request, ApiResponse response) throws ApiServiceExecutionException {
    String provider = (String) request.get(CommonSpec.Provider);
    ApiSpace space;
    try {
        space = MgmUtils.space(consumer, api);
    } catch (ApiAccessDeniedException e) {
        throw new ApiServiceExecutionException(e.getMessage(), e).status(ApiResponse.FORBIDDEN);
    }
    JsonObject describe;
    try {
        describe = space.feature(Database.class, provider, request).describe();
    } catch (DatabaseException e) {
        throw new ApiServiceExecutionException(e.getMessage(), e);
    }
    return new JsonApiOutput(describe);
}
Also used : ApiAccessDeniedException(com.bluenimble.platform.api.ApiAccessDeniedException) ApiSpace(com.bluenimble.platform.api.ApiSpace) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException) JsonObject(com.bluenimble.platform.json.JsonObject) DatabaseException(com.bluenimble.platform.db.DatabaseException) JsonApiOutput(com.bluenimble.platform.api.impls.JsonApiOutput)

Example 5 with DatabaseException

use of com.bluenimble.platform.db.DatabaseException in project serverless by bluenimble.

the class OrientDatabase method schedule.

@Override
public void schedule(String event, Query query, String cron) throws DatabaseException {
    if (query == null || Lang.isNullOrEmpty(query.entity()) || query.construct() == null) {
        throw new DatabaseException("query to schedule should provide the entity name and the construct [insert, update or delete]");
    }
    try {
        OScheduler sch = db.getMetadata().getScheduler();
        OScheduledEvent oEvent = sch.getEvent(event);
        if (oEvent != null) {
            sch.removeEvent(event);
        }
        sch.scheduleEvent(new OScheduledEventBuilder().setName(event).setRule(cron).setFunction(newFunction(event, query)).build());
    } catch (Exception ex) {
        throw new DatabaseException(ex.getMessage(), ex);
    }
}
Also used : OScheduledEventBuilder(com.orientechnologies.orient.core.schedule.OScheduledEventBuilder) OScheduler(com.orientechnologies.orient.core.schedule.OScheduler) DatabaseException(com.bluenimble.platform.db.DatabaseException) OScheduledEvent(com.orientechnologies.orient.core.schedule.OScheduledEvent) IOException(java.io.IOException) DatabaseException(com.bluenimble.platform.db.DatabaseException)

Aggregations

DatabaseException (com.bluenimble.platform.db.DatabaseException)19 JsonObject (com.bluenimble.platform.json.JsonObject)11 ApiAccessDeniedException (com.bluenimble.platform.api.ApiAccessDeniedException)8 ApiServiceExecutionException (com.bluenimble.platform.api.ApiServiceExecutionException)8 ApiSpace (com.bluenimble.platform.api.ApiSpace)8 JsonApiOutput (com.bluenimble.platform.api.impls.JsonApiOutput)8 Database (com.bluenimble.platform.db.Database)8 DatabaseObject (com.bluenimble.platform.db.DatabaseObject)8 JsonArray (com.bluenimble.platform.json.JsonArray)3 IOException (java.io.IOException)3 JsonQuery (com.bluenimble.platform.db.query.impls.JsonQuery)2 OCommandOutputListener (com.orientechnologies.orient.core.command.OCommandOutputListener)2 OClass (com.orientechnologies.orient.core.metadata.schema.OClass)2 OCommandSQL (com.orientechnologies.orient.core.sql.OCommandSQL)2 Document (org.bson.Document)2 Field (com.bluenimble.platform.db.Database.Field)1 DefaultDatabaseObjectSerializer (com.bluenimble.platform.db.impls.DefaultDatabaseObjectSerializer)1 DeleteResult (com.mongodb.client.result.DeleteResult)1 ODatabaseExport (com.orientechnologies.orient.core.db.tool.ODatabaseExport)1 ODatabaseImport (com.orientechnologies.orient.core.db.tool.ODatabaseImport)1