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());
  }
Esempio n. 10
0
  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));
  }
Esempio n. 11
0
  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));
  }