Search in sources :

Example 11 with EQUALS

use of org.molgenis.emx2.Operator.EQUALS in project molgenis-emx2 by molgenis.

the class GraphqlApi method handleSchemaRequests.

public static String handleSchemaRequests(Request request, Response response) throws IOException {
    MolgenisSession session = sessionManager.getSession(request);
    String schemaName = sanitize(request.params(SCHEMA));
    // apps and api is not a schema but a resource
    if ("apps".equals(schemaName) || "api".equals(schemaName)) {
        return handleDatabaseRequests(request, response);
    }
    // todo, really check permissions
    if (getSchema(request) == null) {
        throw new GraphqlException("Schema '" + schemaName + "' unknown. Might you need to sign in or ask permission?");
    }
    GraphQL graphqlForSchema = session.getGraphqlForSchema(schemaName);
    response.header(CONTENT_TYPE, ACCEPT_JSON);
    return executeQuery(graphqlForSchema, request);
}
Also used : GraphqlException(org.molgenis.emx2.graphql.GraphqlException) GraphQL(graphql.GraphQL)

Example 12 with EQUALS

use of org.molgenis.emx2.Operator.EQUALS in project molgenis-emx2 by molgenis.

the class CsvTableReader method read.

public static Iterable<Row> read(Reader in) {
    try {
        BufferedReader bufferedReader = new BufferedReader(in);
        bufferedReader.mark(2000000);
        String firstLine = bufferedReader.readLine();
        String secondLine = bufferedReader.readLine();
        // if file is empty we return empty iterator
        if (firstLine == null || firstLine.trim().equals("") || secondLine == null) {
            return Collections.emptyList();
        }
        char separator = ',';
        // if file is empty we return empty iterator
        if (firstLine.trim().equals("")) {
            return Collections.emptyList();
        }
        // guess the separator
        if (firstLine.contains("\t")) {
            separator = '\t';
        }
        if (firstLine.contains(";")) {
            separator = ';';
        }
        // push back in
        bufferedReader.reset();
        // don't use buffered, it is slower
        Iterator<Map> iterator = CsvParser.dsl().separator(separator).trimSpaces().mapTo(Map.class).iterator(bufferedReader);
        return () -> new Iterator<>() {

            final Iterator<Map> it = iterator;

            final AtomicInteger line = new AtomicInteger(1);

            public boolean hasNext() {
                try {
                    return it.hasNext();
                } catch (Exception e) {
                    throw new MolgenisException("Import failed: " + e.getClass().getName() + ": " + e.getMessage() + ". Error at line " + line.get() + ".", e);
                }
            }

            public Row next() {
                return new Row(it.next());
            }

            @Override
            public void remove() {
                throw new UnsupportedOperationException();
            }
        };
    } catch (IOException ioe) {
        throw new MolgenisException("Import failed", ioe);
    }
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Iterator(java.util.Iterator) MolgenisException(org.molgenis.emx2.MolgenisException) Row(org.molgenis.emx2.Row) Map(java.util.Map) MolgenisException(org.molgenis.emx2.MolgenisException)

Example 13 with EQUALS

use of org.molgenis.emx2.Operator.EQUALS in project molgenis-emx2 by molgenis.

the class TestCompositeForeignKeys method testCompositeRefArray.

@Test
public void testCompositeRefArray() {
    Schema schema = database.dropCreateSchema(TestCompositeForeignKeys.class.getSimpleName() + "RefArray");
    schema.create(table("Person", column("firstName").setPkey(), column("lastName").setPkey(), column("cousins", REF_ARRAY).setRefTable("Person")));
    Table p = schema.getTable("Person");
    p.insert(new Row().setString("firstName", "Kwik").setString("lastName", "Duck"));
    p.insert(new Row().setString("firstName", "Donald").setString("lastName", "Duck").setString("cousins.firstName", "Kwik").setString("cousins.lastName", "Duck"));
    try {
        p.delete(new Row().setString("firstName", "Kwik").setString("lastName", "Duck"));
        fail("should have failed on foreign key error");
    } catch (Exception e) {
        System.out.println("errored correctly: " + e);
    }
    schema.create(table("Student").setInherit("Person"));
    Table s = schema.getTable("Student");
    s.insert(new Row().setString("firstName", "Mickey").setString("lastName", "Mouse").setString("cousins.firstName", "Kwik").setString("cousins.lastName", "Duck"));
    String result = schema.query("Student").select(s("firstName"), s("lastName"), s("cousins", s("firstName"), s("lastName"))).retrieveJSON();
    System.out.println(result);
    // refback
    schema.getTable("Person").getMetadata().add(column("uncles").setType(REFBACK).setRefTable("Person").setRefBack("cousins"));
    s.insert(new Row().setString("firstName", // doesn't exist
    "Kwok").setString("lastName", "Duck").setString("uncles.firstName", "Donald").setString("uncles.lastName", "Duck"));
    assertTrue(List.of(s.query().select(s("firstName"), s("lastName"), s("uncles", s("firstName"), s("lastName")), s("cousins", s("firstName"), s("lastName"))).where(f("firstName", EQUALS, "Kwok")).retrieveRows().get(0).getStringArray("uncles-firstName")).contains("Donald"));
    assertTrue(List.of(p.query().select(s("firstName"), s("lastName"), s("cousins", s("firstName"), s("lastName")), s("uncles", s("firstName"), s("lastName"))).where(f("firstName", EQUALS, "Donald")).retrieveRows().get(// 
    1).getStringArray(// TODO should be array?
    "cousins-firstName")).contains("Kwok"));
    // check we can sort on ref_array
    p.query().select(s("firstName"), s("lastName"), s("cousins", s("firstName"), s("lastName")), s("uncles", s("firstName"), s("lastName"))).orderBy("cousins").retrieveJSON();
    // check we can sort on refback to a ref_array
    p.query().select(s("firstName"), s("lastName"), s("cousins", s("firstName"), s("lastName")), s("uncles", s("firstName"), s("lastName"))).orderBy("uncles").retrieveJSON();
}
Also used : Table(org.molgenis.emx2.Table) Schema(org.molgenis.emx2.Schema) Row(org.molgenis.emx2.Row) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)3 MolgenisException (org.molgenis.emx2.MolgenisException)3 Row (org.molgenis.emx2.Row)3 Table (org.molgenis.emx2.Table)3 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 Map (java.util.Map)2 Schema (org.molgenis.emx2.Schema)2 GraphqlException (org.molgenis.emx2.graphql.GraphqlException)2 MetadataUtils.deleteColumn (org.molgenis.emx2.sql.MetadataUtils.deleteColumn)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 GraphQL (graphql.GraphQL)1 OutputStream (java.io.OutputStream)1 HashSet (java.util.HashSet)1 Iterator (java.util.Iterator)1 List (java.util.List)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 org.molgenis.emx2 (org.molgenis.emx2)1 Column (org.molgenis.emx2.Column)1 ColumnType (org.molgenis.emx2.ColumnType)1