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);
}
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);
}
}
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();
}
Aggregations