package at.ac.tuwien.sepm.assignment.groupphase.util; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.Window; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.dbunit.dataset.filter.DefaultColumnFilter; import org.dbunit.util.fileloader.FlatXmlDataFileLoader; import org.testfx.api.FxRobotContext; public class Helper { public static Stage getTopModalStage(FxRobotContext robotContext) { List allWindows = new ArrayList<>(robotContext.getWindowFinder().listWindows()); Collections.reverse(allWindows); return (Stage) allWindows .stream() .filter(window -> window instanceof Stage) .filter( window -> ((Stage) window).getModality() == Modality.APPLICATION_MODAL) .findFirst() .orElse(null); } public static ITable getActualFilteredTableData( IDatabaseConnection connection, String tableName, String[] excludedColumns) throws Exception { IDataSet actualDataSet = connection.createDataSet(); ITable actualTable = actualDataSet.getTable(tableName); return getFilteredTableData(actualTable, excludedColumns); } public static ITable getExpectedFilteredTableData( String tableName, String[] excludedColumns, String expectedXmlDataFileName) throws Exception { IDataSet dataSet = loadDataSet(expectedXmlDataFileName); ITable table = dataSet.getTable(tableName); return getFilteredTableData(table, excludedColumns); } public static ITable getActualFilteredQueryTableData( IDatabaseConnection connection, String resultTableName, String sql, String[] excludedColumns) throws Exception { ITable queryData = connection.createQueryTable(resultTableName, sql); return getFilteredTableData(queryData, excludedColumns); } private static ITable getFilteredTableData(ITable tableData, String[] excludedColumns) throws DataSetException { return DefaultColumnFilter.excludedColumnsTable(tableData, excludedColumns); } private static IDataSet loadDataSet(String fileName) { return new FlatXmlDataFileLoader().load("/" + fileName); } }