assertEquals("Schema[name=/root]", schema.toString());
assertEquals("[/employee, /organization]",
Arrays.toString(schema.getTableNames()));
// organization assertions
final Table organizationTable = schema.getTableByName("/organization");
{
assertEquals("[row_id, /name, @type]",
Arrays.toString(organizationTable.getColumnNames()));
DataSet ds = dc.query().from(organizationTable)
.select(organizationTable.getColumns()).execute();
assertTrue(ds.next());
assertEquals("Row[values=[0, Company A, governmental]]", ds
.getRow().toString());
assertTrue(ds.next());
assertEquals("Row[values=[1, Company B, company]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[2, Company C, company]]", ds.getRow()
.toString());
assertFalse(ds.next());
ds.close();
}
// employee assertions
final Table employeeTable = schema.getTableByName("/employee");
{
assertEquals(
"[row_id, /name, /gender, index(/root/organization/employees), index(/root/organization)]",
Arrays.toString(employeeTable.getColumnNames()));
DataSet ds = dc.query().from(employeeTable)
.select(employeeTable.getColumns()).execute();
assertTrue(ds.next());
assertEquals("Row[values=[0, John Doe, M, 0, 0]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[1, Jane Doe, F, 0, 0]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[2, Peter, M, 1, 1]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[3, Bob, M, 1, 1]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[4, Cindy, F, 1, 1]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[5, John, M, 1, 1]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[6, James, M, 2, 2]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[7, Suzy, F, 2, 2]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[8, Carla, F, 3, 2]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[9, Vincent, M, 3, 2]]", ds.getRow()
.toString());
assertTrue(ds.next());
assertEquals("Row[values=[10, Barbara, F, 3, 2]]", ds.getRow()
.toString());
assertFalse(ds.next());
ds.close();
}
// do a join
{
Column fk = employeeTable
.getColumnByName("index(/root/organization)");
assertNotNull(fk);
Column empName = employeeTable.getColumnByName("/name");
assertNotNull(empName);
Column orgId = organizationTable.getColumnByName("row_id");
assertNotNull(orgId);
Column orgName = organizationTable.getColumnByName("/name");
assertNotNull(orgName);