Skip to content

Commit

Permalink
#286 DefaultTableInputGenerator returns ResultSets.
Browse files Browse the repository at this point in the history
  • Loading branch information
tabergma committed Feb 27, 2015
1 parent 0ee3fd4 commit a1fc5d1
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package de.metanome.algorithm_integration.input;

import java.sql.ResultSet;

/**
* Generates new copies of a database table based {@link de.metanome.algorithm_integration.input.RelationalInput}.
*
Expand All @@ -27,17 +29,24 @@ public interface TableInputGenerator extends RelationalInputGenerator {
* Sort the table by a given column in the given way (descending or ascending).
* @param column the column, after which the table is sort
* @param descending the way of ordering, descending or ascending
* @return the sorted result set as relational input
* @return the sorted result set
* @throws InputGenerationException
*/
public RelationalInput sortBy(String column, Boolean descending) throws InputGenerationException;
public ResultSet sortBy(String column, Boolean descending) throws InputGenerationException;

/**
* Filter the table by the given expression.
* @param filterExpression the expression by which the table is filtered
* @return the filtered result set as relational input
* @return the filtered result set
* @throws InputGenerationException
*/
public ResultSet filter(String filterExpression) throws InputGenerationException;

/**
* Select everything from the table.
* @return the result set
* @throws InputGenerationException
*/
public RelationalInput filter(String filterExpression) throws InputGenerationException;
public ResultSet select() throws InputGenerationException;

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import de.metanome.algorithm_integration.input.RelationalInput;
import de.metanome.algorithm_integration.input.TableInputGenerator;

import java.sql.ResultSet;

/**
* Provides database tables as {@link RelationalInput} by executing select statements on an
* underlying {@link DefaultDatabaseConnectionGenerator}.
Expand Down Expand Up @@ -73,16 +75,23 @@ public RelationalInput generateNewCopy() throws InputGenerationException {
}

@Override
public RelationalInput sortBy(String column, Boolean descending) throws InputGenerationException {
public ResultSet sortBy(String column, Boolean descending) throws InputGenerationException {
String query = String.format(SORT_STATEMENT, table, column, descending? "DESC" : "ASC");
return defaultDatabaseConnectionGenerator
.generateRelationalInputFromSql(query);
.generateResultSetFromSql(query);
}

@Override
public RelationalInput filter(String filterExpression) throws InputGenerationException {
public ResultSet filter(String filterExpression) throws InputGenerationException {
String query = String.format(FILTER_STATEMENT, table, filterExpression);
return defaultDatabaseConnectionGenerator
.generateRelationalInputFromSql(query);
.generateResultSetFromSql(query);
}

@Override
public ResultSet select() throws InputGenerationException {
String query = String.format(BASE_STATEMENT, table);
return defaultDatabaseConnectionGenerator
.generateResultSetFromSql(query);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,81 @@ public void testGenerateNewCopy() throws InputGenerationException {
verify(defaultDatabaseConnectionGenerator)
.generateRelationalInputFromSql(String.format(DefaultTableInputGenerator.BASE_STATEMENT,expectedTable));
}

/**
* Test method for {@link DefaultTableInputGenerator#select()}
*
* The table input generator should call the underlying {@link DefaultDatabaseConnectionGenerator}
* to execute a select table for the given table.
*/
@Test
public void testSelect() throws InputGenerationException {
// Setup
// Expected values
DefaultDatabaseConnectionGenerator
defaultDatabaseConnectionGenerator = mock(DefaultDatabaseConnectionGenerator.class);
String expectedTable = "some table";
DefaultTableInputGenerator tableInputGenerator =
new DefaultTableInputGenerator(defaultDatabaseConnectionGenerator, expectedTable);

// Execute functionality
tableInputGenerator.select();

// Check result
verify(defaultDatabaseConnectionGenerator)
.generateResultSetFromSql(String.format(DefaultTableInputGenerator.BASE_STATEMENT,
expectedTable));
}

/**
* Test method for {@link DefaultTableInputGenerator#generateNewCopy()}
*
* The table input generator should call the underlying {@link DefaultDatabaseConnectionGenerator}
* to execute a filter table for the given table.
*/
@Test
public void testFilter() throws InputGenerationException {
// Setup
// Expected values
DefaultDatabaseConnectionGenerator
defaultDatabaseConnectionGenerator = mock(DefaultDatabaseConnectionGenerator.class);
String expectedTable = "some table";
String expectedColumn = "some column";
DefaultTableInputGenerator tableInputGenerator =
new DefaultTableInputGenerator(defaultDatabaseConnectionGenerator, expectedTable);

// Execute functionality
tableInputGenerator.filter(expectedColumn);

// Check result
verify(defaultDatabaseConnectionGenerator)
.generateResultSetFromSql(String.format(DefaultTableInputGenerator.FILTER_STATEMENT,
expectedTable, expectedColumn));
}

/**
* Test method for {@link DefaultTableInputGenerator#generateNewCopy()}
*
* The table input generator should call the underlying {@link DefaultDatabaseConnectionGenerator}
* to execute a order by table for the given table.
*/
@Test
public void testOrderBy() throws InputGenerationException {
// Setup
// Expected values
DefaultDatabaseConnectionGenerator
defaultDatabaseConnectionGenerator = mock(DefaultDatabaseConnectionGenerator.class);
String expectedTable = "some table";
String expectedColumn = "some column";
DefaultTableInputGenerator tableInputGenerator =
new DefaultTableInputGenerator(defaultDatabaseConnectionGenerator, expectedTable);

// Execute functionality
tableInputGenerator.sortBy(expectedColumn, true);

// Check result
verify(defaultDatabaseConnectionGenerator)
.generateResultSetFromSql(String.format(DefaultTableInputGenerator.SORT_STATEMENT,
expectedTable, expectedColumn, "DESC"));
}
}

0 comments on commit a1fc5d1

Please sign in to comment.