Пример #1
0
  /** @throws Exception */
  private void testInvalidFilter(int filterIndex) throws Exception {
    QueryDefinition queryDefn = newReportQuery();
    // column mapping
    String[] name = new String[] {"rownum1", "rownum2", "rownum3"};

    ScriptExpression[] se = new ScriptExpression[name.length];
    se[0] = new ScriptExpression("row.__rownum");
    se[1] = new ScriptExpression("row.rownum1");
    se[2] = new ScriptExpression("row[\"rownum2\"]");

    for (int i = 0; i < name.length; i++) queryDefn.addBinding(new Binding(name[i], se[i]));

    FilterDefinition[] filter = new FilterDefinition[name.length + 1];
    filter[0] = new FilterDefinition(new ScriptExpression("row.rownum1 == 1"));
    filter[1] = new FilterDefinition(new ScriptExpression("row.rownum2 == 1"));
    filter[2] = new FilterDefinition(new ScriptExpression("row.rownum3 == 1"));
    filter[3] = new FilterDefinition(new ScriptExpression("row.__rownum == 1"));
    queryDefn.addFilter(filter[filterIndex]);

    try {
      executeQuery(queryDefn);
      fail("Should not arrive here");
    } catch (DataException e) {
    }
  }
Пример #2
0
  /**
   * Sort on table
   *
   * @throws Exception
   */
  @Test
  public void testFilterOnTable() throws Exception {
    QueryDefinition queryDefn = newReportQuery();

    // column mapping
    String[] name = new String[] {"testColumn1", "testColumn2", "AMOUNT1"};
    ScriptExpression[] se = new ScriptExpression[name.length];
    se[0] = new ScriptExpression("dataSetRow.COUNTRY");
    se[1] = new ScriptExpression("dataSetRow.CITY");
    se[2] = new ScriptExpression("dataSetRow.AMOUNT");
    for (int i = 0; i < name.length; i++) queryDefn.addBinding(new Binding(name[i], se[i]));

    ScriptExpression filterExpr = new ScriptExpression("row.AMOUNT1>100");
    FilterDefinition filterDefn = new FilterDefinition(filterExpr);
    queryDefn.addFilter(filterDefn);

    IResultIterator ri = executeQuery(queryDefn);
    while (ri.next()) {
      String str = "";
      for (int i = 0; i < name.length; i++) {
        str += ri.getValue(name[i]);

        if (i < name.length - 1) str += ", ";
      }
      testPrintln(str);
    }
  }