public void testLeftJoinNoRowsOrSingleRow() throws Exception { SelectItem item1 = new SelectItem("foo", "f"); SelectItem item2 = new SelectItem("bar", "b"); SelectItem item3 = new SelectItem("baz", "z"); List<SelectItem> selectItems1 = Arrays.asList(item1, item2); List<SelectItem> selectItems2 = Arrays.asList(item3); DataSet ds1 = new EmptyDataSet(selectItems1); DataSet ds2 = new EmptyDataSet(selectItems2); DataSet joinedDs = MetaModelHelper.getLeftJoin( ds1, ds2, new FilterItem[] {new FilterItem(item2, OperatorType.EQUALS_TO, item3)}); assertEquals(SubSelectionDataSet.class, joinedDs.getClass()); assertEquals("[foo AS f, bar AS b, baz AS z]", Arrays.toString(joinedDs.getSelectItems())); DataSetHeader header1 = new SimpleDataSetHeader(selectItems1); Row row = new DefaultRow(header1, new Object[] {1, 2}, null); ds1 = new InMemoryDataSet(header1, row); joinedDs = MetaModelHelper.getLeftJoin( ds1, ds2, new FilterItem[] {new FilterItem(item2, OperatorType.EQUALS_TO, item3)}); assertEquals("[foo AS f, bar AS b, baz AS z]", Arrays.toString(joinedDs.getSelectItems())); assertTrue(joinedDs.next()); assertEquals("Row[values=[1, 2, null]]", joinedDs.getRow().toString()); assertFalse(joinedDs.next()); }
public void testGetTableColumns() throws Exception { MutableTable table1 = new MutableTable("table1"); MutableColumn column1 = new MutableColumn("c1", ColumnType.BIGINT); MutableColumn column2 = new MutableColumn("c2", ColumnType.BIGINT); MutableColumn column3 = new MutableColumn("c3", ColumnType.BIGINT); table1.addColumn(column1); column1.setTable(table1); table1.addColumn(column2); column2.setTable(table1); table1.addColumn(column3); column3.setTable(table1); ArrayList<Column> columnList = new ArrayList<Column>(); Column[] columns = MetaModelHelper.getTableColumns(table1, columnList); assertEquals(0, columns.length); columnList.add(column1); columnList.add(column3); columns = MetaModelHelper.getTableColumns(table1, columnList); assertEquals(2, columns.length); assertSame(column1, columns[0]); assertSame(column3, columns[1]); }
public void testRightJoin() throws Exception { SelectItem si1 = new SelectItem(new MutableColumn("person_id", ColumnType.INTEGER)); SelectItem si2 = new SelectItem(new MutableColumn("person_name", ColumnType.VARCHAR)); SelectItem si3 = new SelectItem(new MutableColumn("person_age", ColumnType.INTEGER)); SelectItem si4 = new SelectItem(new MutableColumn("person_role_id", ColumnType.INTEGER)); SelectItem si5 = new SelectItem(new MutableColumn("role_id", ColumnType.INTEGER)); SelectItem si6 = new SelectItem(new MutableColumn("role_name", ColumnType.VARCHAR)); SelectItem si7 = new SelectItem(new MutableColumn("role_code", ColumnType.VARCHAR)); List<Object[]> data1 = new ArrayList<Object[]>(); data1.add(new Object[] {1, "peter", 18, 1}); data1.add(new Object[] {2, "tom", 19, 2}); data1.add(new Object[] {3, "betty", 19, null}); data1.add(new Object[] {4, "barbara", 17, 3}); List<Object[]> data2 = new ArrayList<Object[]>(); data2.add(new Object[] {1, "class president", "clpr"}); data2.add(new Object[] {2, "bad boy", "bb"}); data2.add(new Object[] {4, "trying harder", "try"}); DataSet ds1 = createDataSet(new SelectItem[] {si1, si2, si3, si4}, data1); DataSet ds2 = createDataSet(new SelectItem[] {si5, si6, si7}, data2); FilterItem[] onConditions = new FilterItem[1]; onConditions[0] = new FilterItem(si4, OperatorType.EQUALS_TO, si5); DataSet result = MetaModelHelper.getRightJoin(ds1, ds2, onConditions); List<Object[]> objectArrays = result.toObjectArrays(); assertEquals( "[1, peter, 18, 1, 1, class president, clpr]", Arrays.toString(objectArrays.get(0))); assertEquals("[2, tom, 19, 2, 2, bad boy, bb]", Arrays.toString(objectArrays.get(1))); assertEquals( "[null, null, null, null, 4, trying harder, try]", Arrays.toString(objectArrays.get(2))); assertEquals(3, objectArrays.size()); }
public void testGetCarthesianProductNoRows() throws Exception { DataSet dataSet = MetaModelHelper.getCarthesianProduct(createDataSet4(), createDataSet2(), createDataSet3()); assertEquals(4, dataSet.getSelectItems().length); assertFalse(dataSet.next()); dataSet = MetaModelHelper.getCarthesianProduct(createDataSet1(), createDataSet4(), createDataSet3()); assertEquals(4, dataSet.getSelectItems().length); assertFalse(dataSet.next()); dataSet = MetaModelHelper.getCarthesianProduct(createDataSet1(), createDataSet2(), createDataSet4()); assertEquals(3, dataSet.getSelectItems().length); assertFalse(dataSet.next()); }
public void testTripleCarthesianProduct() throws Exception { DataSet dataSet = MetaModelHelper.getCarthesianProduct(createDataSet1(), createDataSet2(), createDataSet3()); assertEquals(4, dataSet.getSelectItems().length); for (int i = 0; i < 3 * 3 * 2; i++) { assertTrue("Assertion failed at i=" + i, dataSet.next()); } assertFalse(dataSet.next()); }
public void testGetSelectionNoRows() throws Exception { SelectItem item1 = new SelectItem("foo", "f"); SelectItem item2 = new SelectItem("bar", "b"); SelectItem item3 = new SelectItem("baz", "bz"); List<SelectItem> selectItems1 = Arrays.asList(item1, item2, item3); List<SelectItem> selectItems2 = Arrays.asList(item2, item1); DataSet ds = MetaModelHelper.getSelection(selectItems2, new EmptyDataSet(selectItems1)); assertEquals(SubSelectionDataSet.class, ds.getClass()); assertEquals("[bar AS b, foo AS f]", Arrays.toString(ds.getSelectItems())); }
public void testGetOrdered() throws Exception { DataSet dataSet = createDataSet3(); List<OrderByItem> orderByItems = new ArrayList<OrderByItem>(); orderByItems.add(new OrderByItem(dataSet.getSelectItems()[0])); dataSet = MetaModelHelper.getOrdered(dataSet, orderByItems); assertTrue(dataSet.next()); assertEquals("Row[values=[w00p, true]]", dataSet.getRow().toString()); assertTrue(dataSet.next()); assertEquals("Row[values=[yippie, false]]", dataSet.getRow().toString()); assertFalse(dataSet.next()); }
public void testTripleCarthesianProductWithWhereItems() throws Exception { DataSet ds1 = createDataSet1(); DataSet ds2 = createDataSet2(); DataSet[] dataSets = new DataSet[] { ds1, ds2, }; FilterItem w1 = new FilterItem(ds1.getSelectItems()[0], OperatorType.EQUALS_TO, "f"); DataSet dataSet = MetaModelHelper.getCarthesianProduct(dataSets, w1); assertEquals(2, dataSet.getSelectItems().length); for (int i = 0; i < 1 * 3; i++) { assertTrue("Assertion failed at i=" + i, dataSet.next()); assertEquals("f", dataSet.getRow().getValue(0)); } assertFalse(dataSet.next()); }
public void testSimpleCarthesianProduct() throws Exception { DataSet dataSet = MetaModelHelper.getCarthesianProduct(createDataSet1(), createDataSet2()); assertEquals(2, dataSet.getSelectItems().length); assertTrue(dataSet.next()); assertEquals("Row[values=[f, b]]", dataSet.getRow().toString()); assertTrue(dataSet.next()); assertEquals("Row[values=[f, a]]", dataSet.getRow().toString()); assertTrue(dataSet.next()); assertTrue(dataSet.next()); assertTrue(dataSet.next()); assertTrue(dataSet.next()); assertTrue(dataSet.next()); assertTrue(dataSet.next()); assertTrue(dataSet.next()); assertEquals("Row[values=[o, r]]", dataSet.getRow().toString()); assertFalse(dataSet.next()); }
public void testGetTableFromItems() throws Exception { Schema schema = getExampleSchema(); Table contributorTable = schema.getTableByName(TABLE_CONTRIBUTOR); Table projectTable = schema.getTableByName(TABLE_PROJECT); Table projectContributorTable = schema.getTableByName(TABLE_PROJECT_CONTRIBUTOR); FromItem sqFromItem = new FromItem(new Query().from(projectTable).from(projectContributorTable)); FromItem fromItem = new FromItem( JoinType.INNER, new FromItem(contributorTable), sqFromItem, new SelectItem[0], new SelectItem[0]); Query q = new Query().from(fromItem); FromItem[] fromItems = MetaModelHelper.getTableFromItems(q); assertEquals(3, fromItems.length); assertEquals( "[MetaModelSchema.contributor, MetaModelSchema.project, MetaModelSchema.project_contributor]", Arrays.toString(fromItems)); }
public void testGetTables() throws Exception { MutableTable table1 = new MutableTable("table1"); MutableTable table2 = new MutableTable("table2"); MutableColumn t1column1 = new MutableColumn("t1c1", ColumnType.BIGINT); MutableColumn t2column1 = new MutableColumn("t2c1", ColumnType.BIGINT); MutableColumn t2column2 = new MutableColumn("t2c2", ColumnType.BIGINT); table1.addColumn(t1column1); t1column1.setTable(table1); table2.addColumn(t2column1); t2column1.setTable(table2); table2.addColumn(t2column2); t2column2.setTable(table2); ArrayList<Table> tableList = new ArrayList<Table>(); tableList.add(table1); ArrayList<Column> columnList = new ArrayList<Column>(); columnList.add(t2column1); Table[] tables = MetaModelHelper.getTables(tableList, columnList); assertEquals(2, tables.length); assertTrue(Arrays.asList(tables).contains(table1)); assertTrue(Arrays.asList(tables).contains(table2)); }