/** @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) { } }
/** * 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); } }