use of org.molgenis.emx2.Column in project simple-bigtable by spotify.
the class CellsReadImplTest method testParentDataTypeToDataType.
@Test
public void testParentDataTypeToDataType() throws Exception {
assertEquals(Lists.newArrayList(), cellsRead.parentTypeToCurrentType().apply(Optional.empty()));
assertEquals(Lists.newArrayList(), cellsRead.parentTypeToCurrentType().apply(Optional.of(Column.getDefaultInstance())));
final Cell cell = Cell.getDefaultInstance();
final Column column = Column.newBuilder().addCells(cell).build();
assertEquals(ImmutableList.of(cell), cellsRead.parentTypeToCurrentType().apply(Optional.of(column)));
}
use of org.molgenis.emx2.Column in project molgenis-emx2 by molgenis.
the class CrossSchemaReferenceExample method create.
public static void create(Schema schema1, Schema schema2) {
Table parent = schema1.create(table("Parent", column("name").setPkey(), column("hobby")));
parent.insert(row("name", "parent1", "hobby", "stamps"));
Table child = schema2.create(table("Child", column("name").setPkey(), column("parent").setType(REF).setRefSchema(schema1.getName()).setRefTable("Parent")));
child.insert(row("name", "child1", "parent", "parent1"));
Table pet = schema1.create(table("Pet", column("name").setPkey(), column("species")));
pet.insert(row("name", "pooky", "species", "cat"));
pet.insert(row("name", "spike", "species", "dog"));
Table petLover = schema2.create(table("PetLover", column("name").setPkey(), column("pets").setType(REF_ARRAY).setRefSchema(schema1.getName()).setRefTable("Pet")));
petLover.insert(row("name", "x", "pets", new String[] { "pooky", "spike" }));
Table cat = schema2.create(table("Mouse").setImportSchema(schema1.getName()).setInherit("Pet"));
cat.insert(row("name", "mickey", "species", "mouse"));
}
use of org.molgenis.emx2.Column in project molgenis-emx2 by molgenis.
the class JsonLdExample method create.
public static void create(Schema schema) {
Table personTable = schema.create(table("Person").setSemantics("https://schema.org/docs/jsonldcontext.jsonld#Person").add(column("name").setPkey().setSemantics("https://schema.org/docs/jsonldcontext.jsonld#name"), column("jobTitle").setSemantics("https://schema.org/docs/jsonldcontext.jsonld#jobTitle").setRequired(true), column("telephone").setSemantics("https://schema.org/docs/jsonldcontext.jsonld#telephone"), column("url").setSemantics("https://schema.org/docs/jsonldcontext.jsonld#url")));
personTable.insert(row("name", "Jane Doe", "jobTitle", "Professor", "telephone", "(425) 123-4567", "url", "http://www.janedoe.com"), row("id", "2", "name", "Mary Stone", "jobTitle", "Cook"));
Table recipeTable = schema.create(table("Recipe").setSemantics("https://schema.org/docs/jsonldcontext.jsonld#Recipe").add(column("name").setPkey().setSemantics("https://schema.org/docs/jsonldcontext.jsonld#name"), column("author").setType(REF).setRefTable("Person").setSemantics("https://schema.org/docs/jsonldcontext.jsonld#author").setRequired(true), column("datePublished").setType(DATE).setSemantics("https://schema.org/docs/jsonldcontext.jsonld#datePublished").setRequired(true), column("prepTime").setSemantics("https://schema.org/docs/jsonldcontext.jsonld#prepTime").setRequired(true)));
recipeTable.insert(row("name", "Mary's Cookies", "author", "Mary Stone", "datePublished", "2018-03-10", "prepTime", "PT20M"));
}
use of org.molgenis.emx2.Column in project molgenis-emx2 by molgenis.
the class TestOpenApi method constructApi.
@Test
public void constructApi() throws IOException {
SchemaMetadata schema = new SchemaMetadata("test");
TableMetadata table = schema.create(TableMetadata.table("TypeTest"));
for (ColumnType columnType : ColumnType.values()) {
if (columnType.isReference()) {
// TODO: outside of test for now
} else {
table.add(Column.column(columnType.toString().toLowerCase() + "Column").setType(columnType));
}
}
TableMetadata personTable = schema.create(TableMetadata.table("Person").add(Column.column("First_Name")).add(Column.column("Last_Name")));
OpenAPI api = OpenApiYamlGenerator.createOpenApi(schema);
// useless test
Assert.assertEquals(1, api.getComponents().getSchemas().size());
// useless test
Assert.assertEquals(1, api.getComponents().getSchemas().size());
StringWriter writer = new StringWriter();
Yaml.pretty().writeValue(writer, api);
System.out.println(writer);
}
use of org.molgenis.emx2.Column in project molgenis-emx2 by molgenis.
the class TableSort method sortTableByDependency.
public static void sortTableByDependency(List<TableMetadata> tableList) {
ArrayList<TableMetadata> result = new ArrayList<>();
ArrayList<TableMetadata> todo = new ArrayList<>(tableList);
// ensure deterministic order
todo.sort(new Comparator<TableMetadata>() {
@Override
public int compare(TableMetadata o1, TableMetadata o2) {
return o1.getTableName().compareTo(o2.getTableName());
}
});
while (!todo.isEmpty()) {
int size = todo.size();
for (int i = 0; i < todo.size(); i++) {
TableMetadata current = todo.get(i);
boolean depends = false;
for (int j = 0; j < todo.size(); j++) {
if (current.getInherit() != null && current.getImportSchema() == null && todo.get(j).equals(current.getInheritedTable())) {
depends = true;
break;
}
}
if (!depends)
for (Column c : current.getColumns()) {
if (c.getRefTableName() != null && !c.isRefback()) {
for (int j = 0; j < todo.size(); j++) {
if (i != j && (todo.get(j).getTableName().equals(c.getRefTableName()))) {
depends = true;
break;
}
}
}
}
if (!depends) {
result.add(todo.get(i));
todo.remove(i);
}
}
// check for circular relationship
if (size == todo.size()) {
throw new MolgenisException("circular dependency error: following tables have circular dependency: " + todo.stream().map(TableMetadata::getTableName).collect(Collectors.joining(",")));
}
}
tableList.clear();
tableList.addAll(result);
}
Aggregations