Search in sources :

Example 46 with Column

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)));
}
Also used : Column(com.google.bigtable.v2.Column) Cell(com.google.bigtable.v2.Cell) Test(org.junit.Test)

Example 47 with 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"));
}
Also used : Table(org.molgenis.emx2.Table)

Example 48 with Column

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"));
}
Also used : Table(org.molgenis.emx2.Table)

Example 49 with Column

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);
}
Also used : TableMetadata(org.molgenis.emx2.TableMetadata) ColumnType(org.molgenis.emx2.ColumnType) SchemaMetadata(org.molgenis.emx2.SchemaMetadata) StringWriter(java.io.StringWriter) OpenAPI(io.swagger.v3.oas.models.OpenAPI) Test(org.junit.Test)

Example 50 with Column

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);
}
Also used : TableMetadata(org.molgenis.emx2.TableMetadata) Column(org.molgenis.emx2.Column) ArrayList(java.util.ArrayList) MolgenisException(org.molgenis.emx2.MolgenisException)

Aggregations

org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column)21 ArrayList (java.util.ArrayList)20 Test (org.junit.Test)20 Row (org.molgenis.emx2.Row)15 Table (org.molgenis.emx2.Table)14 HashMap (java.util.HashMap)11 Column (org.molgenis.emx2.Column)11 List (java.util.List)10 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint)10 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint)10 ColumnType (org.molgenis.emx2.ColumnType)10 Column (com.google.bigtable.v2.Column)9 TableMetadata (org.molgenis.emx2.TableMetadata)9 Family (com.google.bigtable.v2.Family)8 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint)8 Schema (org.molgenis.emx2.Schema)8 MolgenisException (org.molgenis.emx2.MolgenisException)7 Collectors (java.util.stream.Collectors)6 Map (java.util.Map)5 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Table (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Table)5