SQLDataSetTrimTest.java
/*
* Copyright 2014 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dashbuilder.dataprovider.sql;
import java.util.Arrays;
import org.dashbuilder.dataset.DataSet;
import org.dashbuilder.dataset.DataSetGroupTest;
import org.dashbuilder.dataset.DataSetLookup;
import org.dashbuilder.dataset.DataSetLookupFactory;
import org.dashbuilder.dataset.DataSetTrimTest;
import org.dashbuilder.dataset.group.ColumnGroup;
import org.dashbuilder.dataset.group.DataSetGroup;
import org.dashbuilder.dataset.group.GroupFunction;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.dashbuilder.dataset.ExpenseReportsData.COLUMN_AMOUNT;
import static org.dashbuilder.dataset.ExpenseReportsData.COLUMN_CITY;
import static org.dashbuilder.dataset.ExpenseReportsData.COLUMN_DATE;
import static org.dashbuilder.dataset.ExpenseReportsData.COLUMN_DEPARTMENT;
import static org.dashbuilder.dataset.ExpenseReportsData.COLUMN_EMPLOYEE;
import static org.dashbuilder.dataset.ExpenseReportsData.COLUMN_ID;
import static org.dashbuilder.dataset.filter.FilterFactory.AND;
import static org.dashbuilder.dataset.filter.FilterFactory.OR;
import static org.dashbuilder.dataset.filter.FilterFactory.equalsTo;
import static org.dashbuilder.dataset.filter.FilterFactory.greaterOrEqualsTo;
import static org.dashbuilder.dataset.filter.FilterFactory.isNull;
import static org.dashbuilder.dataset.filter.FilterFactory.notEqualsTo;
public class SQLDataSetTrimTest extends SQLDataSetTestBase {
@Override
public void testAll() throws Exception {
testTrim();
}
@Test
public void testTrim() throws Exception {
DataSetTrimTest subTest = new DataSetTrimTest();
subTest.testTrim();
subTest.testTrimGroup();
subTest.testDuplicatedColumns();
}
@Test
public void testTotalRowCountNonTrimmedFillingGroupBy() throws Exception {
DataSet result = dataSetManager.lookupDataSet(
DataSetLookupFactory.newDataSetLookupBuilder()
.dataset(DataSetGroupTest.EXPENSE_REPORTS)
.group(COLUMN_DEPARTMENT)
.column(COLUMN_ID)
.column(COLUMN_CITY)
.column(COLUMN_DEPARTMENT)
.column(COLUMN_EMPLOYEE)
.column(COLUMN_DATE)
.column(COLUMN_AMOUNT)
.rowNumber(10)
.rowOffset(0)
.buildLookup());
assertThat(result.getRowCount()).isEqualTo(5);
assertThat(result.getRowCountNonTrimmed()).isEqualTo(5);
result = dataSetManager.lookupDataSet(
DataSetLookupFactory.newDataSetLookupBuilder()
.dataset(DataSetGroupTest.EXPENSE_REPORTS)
.group(COLUMN_DEPARTMENT)
.column(COLUMN_ID)
.column(COLUMN_CITY)
.column(COLUMN_DEPARTMENT)
.column(COLUMN_EMPLOYEE)
.column(COLUMN_DATE)
.column(COLUMN_AMOUNT)
.rowNumber(3)
.rowOffset(0)
.buildLookup());
assertThat(result.getRowCount()).isEqualTo(3);
assertThat(result.getRowCountNonTrimmed()).isEqualTo(5);
result = dataSetManager.lookupDataSet(
DataSetLookupFactory.newDataSetLookupBuilder()
.dataset(DataSetGroupTest.EXPENSE_REPORTS)
.group(COLUMN_DEPARTMENT)
.column(COLUMN_ID)
.column(COLUMN_CITY)
.column(COLUMN_DEPARTMENT)
.column(COLUMN_EMPLOYEE)
.column(COLUMN_DATE)
.column(COLUMN_AMOUNT)
.rowNumber(5)
.rowOffset(5)
.buildLookup());
assertThat(result.getRowCount()).isEqualTo(0);
assertThat(result.getRowCountNonTrimmed()).isEqualTo(5);
}
@Test
public void testPostFilterDisable() throws Exception {
DataSetLookup lookup = DataSetLookupFactory.newDataSetLookupBuilder()
.dataset(DataSetGroupTest.EXPENSE_REPORTS)
.filter(AND(
equalsTo(COLUMN_DEPARTMENT, Arrays.asList("Sales", "Management")),
OR(notEqualsTo(COLUMN_ID, 21), isNull(COLUMN_ID))))
.filter(OR(isNull(COLUMN_AMOUNT), notEqualsTo(COLUMN_AMOUNT, 27), greaterOrEqualsTo(COLUMN_AMOUNT, 1)))
.rowNumber(5).rowOffset(5)
.buildLookup();
DataSetGroup gOp = new DataSetGroup();
ColumnGroup cg = new ColumnGroup(COLUMN_ID, COLUMN_ID);
cg.setPostEnabled(false);
gOp.setColumnGroup(cg);
gOp.addGroupFunction(new GroupFunction(COLUMN_CITY, COLUMN_CITY, null));
gOp.addGroupFunction(new GroupFunction(COLUMN_DEPARTMENT, COLUMN_DEPARTMENT, null));
gOp.addGroupFunction(new GroupFunction(COLUMN_EMPLOYEE, COLUMN_EMPLOYEE, null));
gOp.addGroupFunction(new GroupFunction(COLUMN_DATE, COLUMN_DATE, null));
gOp.addGroupFunction(new GroupFunction(COLUMN_AMOUNT, COLUMN_AMOUNT, null));
lookup.addOperation(gOp);
DataSet result = dataSetManager.lookupDataSet(lookup);
result.getDefinition();
assertThat(result.getRowCount()).isEqualTo(5);
}
}