Search in sources :

Example 6 with QueryValidationException

use of org.folio.cql2pgjson.exception.QueryValidationException in project raml-module-builder by folio-org.

the class ValidationHelperTest method cql1Test.

@Test
public void cql1Test(TestContext context) {
    Async async = context.async();
    Exception e = new Exception();
    e.initCause(new QueryValidationException(QueryValidationException1));
    ValidationHelper.handleError(e, r -> {
        context.assertEquals(422, r.result().getStatus());
        async.complete();
    });
}
Also used : QueryValidationException(org.folio.cql2pgjson.exception.QueryValidationException) Async(io.vertx.ext.unit.Async) PgException(io.vertx.pgclient.PgException) QueryValidationException(org.folio.cql2pgjson.exception.QueryValidationException) Test(org.junit.Test)

Example 7 with QueryValidationException

use of org.folio.cql2pgjson.exception.QueryValidationException in project raml-module-builder by folio-org.

the class ValidationHelperTest method cql2Test.

@Test
public void cql2Test(TestContext context) {
    Async async = context.async();
    Exception e = new Exception();
    e.initCause(new QueryValidationException(QueryValidationException2));
    ValidationHelper.handleError(e, r -> {
        context.assertEquals(422, r.result().getStatus());
        async.complete();
    });
}
Also used : QueryValidationException(org.folio.cql2pgjson.exception.QueryValidationException) Async(io.vertx.ext.unit.Async) PgException(io.vertx.pgclient.PgException) QueryValidationException(org.folio.cql2pgjson.exception.QueryValidationException) Test(org.junit.Test)

Example 8 with QueryValidationException

use of org.folio.cql2pgjson.exception.QueryValidationException in project raml-module-builder by folio-org.

the class ValidationHelperTest method cql3Test.

@Test
public void cql3Test(TestContext context) {
    Async async = context.async();
    Exception e = new Exception();
    e.initCause(new QueryValidationException(QueryValidationException3));
    ValidationHelper.handleError(e, r -> {
        context.assertEquals(422, r.result().getStatus());
        async.complete();
    });
}
Also used : QueryValidationException(org.folio.cql2pgjson.exception.QueryValidationException) Async(io.vertx.ext.unit.Async) PgException(io.vertx.pgclient.PgException) QueryValidationException(org.folio.cql2pgjson.exception.QueryValidationException) Test(org.junit.Test)

Example 9 with QueryValidationException

use of org.folio.cql2pgjson.exception.QueryValidationException in project raml-module-builder by folio-org.

the class CQL2PgJSON method indexNode.

private String indexNode(String index, Table targetTable, CQLTermNode node, IndexTextAndJsonValues vals, CqlModifiers modifiers) throws QueryValidationException {
    // primary key
    if ("id".equals(index)) {
        return pgId(node, index);
    }
    DbIndex dbIndex;
    if (targetTable == null || dbTable.equals(targetTable)) {
        dbIndex = dbIndexMap.computeIfAbsent(index, i -> DbSchemaUtils.getDbIndex(dbTable, index));
    } else {
        // foreign table
        dbIndex = dbIndexMap.computeIfAbsent(vals.getIndexJson(), i -> DbSchemaUtils.getDbIndex(targetTable, index));
    }
    if (dbIndex.isForeignKey()) {
        return pgId(node, index);
    }
    String comparator = node.getRelation().getBase().toLowerCase();
    switch(comparator) {
        case "=":
            if (CqlTermFormat.NUMBER == modifiers.getCqlTermFormat()) {
                return queryBySql(dbIndex, vals, node, comparator, modifiers);
            } else {
                return queryByFt(index, dbIndex, vals, node, comparator, modifiers, targetTable);
            }
        case "adj":
        case "all":
        case "any":
            return queryByFt(index, dbIndex, vals, node, comparator, modifiers, targetTable);
        case "==":
        case "<>":
            if (CqlTermFormat.STRING == modifiers.getCqlTermFormat()) {
                return queryByLike(index, dbIndex, vals, node, comparator, modifiers, targetTable);
            } else {
                return queryBySql(dbIndex, vals, node, comparator, modifiers);
            }
        case "<":
        case ">":
        case "<=":
        case ">=":
            return queryBySql(dbIndex, vals, node, comparator, modifiers);
        default:
            throw new CQLFeatureUnsupportedException("Relation " + comparator + " not implemented yet: " + node.toString());
    }
}
Also used : ModifierSet(org.z3950.zing.cql.ModifierSet) SqlSelect(org.folio.cql2pgjson.model.SqlSelect) Cql2SqlUtil(org.folio.cql2pgjson.util.Cql2SqlUtil) CqlCase(org.folio.cql2pgjson.model.CqlCase) CQLTermNode(org.z3950.zing.cql.CQLTermNode) HashMap(java.util.HashMap) DbIndex(org.folio.cql2pgjson.model.DbIndex) CQLOrNode(org.z3950.zing.cql.CQLOrNode) StringUtils(org.apache.commons.lang3.StringUtils) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) CqlTermFormat(org.folio.cql2pgjson.model.CqlTermFormat) Index(org.folio.dbschema.Index) ObjectMapperTool(org.folio.dbschema.ObjectMapperTool) ObjectUtils(org.apache.commons.lang3.ObjectUtils) CqlSort(org.folio.cql2pgjson.model.CqlSort) DbFkInfo(org.folio.cql2pgjson.model.DbFkInfo) Map(java.util.Map) QueryValidationException(org.folio.cql2pgjson.exception.QueryValidationException) CQLParseException(org.z3950.zing.cql.CQLParseException) Schema(org.folio.dbschema.Schema) Table(org.folio.dbschema.Table) LinkedList(java.util.LinkedList) CQLFeatureUnsupportedException(org.folio.cql2pgjson.exception.CQLFeatureUnsupportedException) CQLSortNode(org.z3950.zing.cql.CQLSortNode) Modifier(org.z3950.zing.cql.Modifier) CQLBooleanNode(org.z3950.zing.cql.CQLBooleanNode) IndexTextAndJsonValues(org.folio.cql2pgjson.model.IndexTextAndJsonValues) SqlUtil(org.folio.dbschema.util.SqlUtil) IOException(java.io.IOException) CqlAccents(org.folio.cql2pgjson.model.CqlAccents) DbSchemaUtils(org.folio.cql2pgjson.util.DbSchemaUtils) Logger(java.util.logging.Logger) FieldException(org.folio.cql2pgjson.exception.FieldException) CqlModifiers(org.folio.cql2pgjson.model.CqlModifiers) List(java.util.List) CQLAndNode(org.z3950.zing.cql.CQLAndNode) CQLParser(org.z3950.zing.cql.CQLParser) ServerChoiceIndexesException(org.folio.cql2pgjson.exception.ServerChoiceIndexesException) ResourceUtil(org.folio.util.ResourceUtil) Pattern(java.util.regex.Pattern) CQLNode(org.z3950.zing.cql.CQLNode) Collections(java.util.Collections) CQLNotNode(org.z3950.zing.cql.CQLNotNode) DbIndex(org.folio.cql2pgjson.model.DbIndex) CQLFeatureUnsupportedException(org.folio.cql2pgjson.exception.CQLFeatureUnsupportedException)

Aggregations

QueryValidationException (org.folio.cql2pgjson.exception.QueryValidationException)9 IOException (java.io.IOException)4 Async (io.vertx.ext.unit.Async)3 PgException (io.vertx.pgclient.PgException)3 Test (org.junit.Test)3 CQLNode (org.z3950.zing.cql.CQLNode)3 CQLParseException (org.z3950.zing.cql.CQLParseException)3 CQLFeatureUnsupportedException (org.folio.cql2pgjson.exception.CQLFeatureUnsupportedException)2 FieldException (org.folio.cql2pgjson.exception.FieldException)2 IndexTextAndJsonValues (org.folio.cql2pgjson.model.IndexTextAndJsonValues)2 SqlSelect (org.folio.cql2pgjson.model.SqlSelect)2 CQLParser (org.z3950.zing.cql.CQLParser)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 HttpServerResponse (io.vertx.core.http.HttpServerResponse)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 Method (java.lang.reflect.Method)1 ResultSet (java.sql.ResultSet)1 SQLException (java.sql.SQLException)1 Statement (java.sql.Statement)1 ArrayList (java.util.ArrayList)1