ValueComparerTemplateBase.java
package org.dbunit.assertion.comparer.value;
import org.dbunit.DatabaseUnitException;
import org.dbunit.dataset.ITable;
import org.dbunit.dataset.datatype.DataType;
/**
* Base class for {@link ValueComparer}s, providing template methods and common
* elements.
*
* @author Jeff Jensen
* @since 2.6.0
*/
public abstract class ValueComparerTemplateBase extends ValueComparerBase
{
/**
* {@inheritDoc}
*
* This implementation calls
* {@link #isExpected(ITable, ITable, int, String, DataType, Object, Object)}.
*
* @see ValueComparer#compare(ITable, ITable, int, String, DataType, Object,
* Object)
*/
@Override
protected String doCompare(final ITable expectedTable,
final ITable actualTable, final int rowNum, final String columnName,
final DataType dataType, final Object expectedValue,
final Object actualValue) throws DatabaseUnitException
{
final String failMessage;
final boolean isExpected = isExpected(expectedTable, actualTable,
rowNum, columnName, dataType, expectedValue, actualValue);
if (isExpected)
{
failMessage = null;
} else
{
failMessage = makeFailMessage(expectedValue, actualValue);
}
return failMessage;
}
/**
* Makes the fail message using {@link #getFailPhrase()}.
*
* @return the formatted fail message with the fail phrase.
*/
protected String makeFailMessage(final Object expectedValue,
final Object actualValue)
{
final String failPhrase = getFailPhrase();
return String.format(BASE_FAIL_MSG, actualValue, failPhrase,
expectedValue);
}
/** @return true if comparing actual to expected is as expected. */
protected abstract boolean isExpected(final ITable expectedTable,
final ITable actualTable, final int rowNum, final String columnName,
final DataType dataType, final Object expectedValue,
final Object actualValue) throws DatabaseUnitException;
/** @return The text snippet for substitution in {@link #BASE_FAIL_MSG}. */
protected abstract String getFailPhrase();
}