package fr.openwide.core.jpa.migration.rowmapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import fr.openwide.core.jpa.batch.monitor.ProcessorMonitorContext;
public abstract class AbstractResultRowMapper<T> extends AbstractRowMapper<RowResult> {
private final T results;
protected AbstractResultRowMapper(T results) {
this.results = results;
}
@Override
public final RowResult mapRow(ResultSet rs, int rowNum) throws SQLException {
RowResult result = doMapRow(rs, rowNum);
switch (result) {
case DONE:
ProcessorMonitorContext.get().getDoneItems().incrementAndGet();
break;
case DONE_WITH_ERROR:
ProcessorMonitorContext.get().getFailedItems().incrementAndGet();
break;
case FAILED:
ProcessorMonitorContext.get().getFailedItems().incrementAndGet();
break;
case NOT_APPLICABLE:
ProcessorMonitorContext.get().getIgnoredItems().incrementAndGet();
break;
default:
break;
}
return result;
}
public T getResults() {
return results;
}
protected abstract RowResult doMapRow(ResultSet rs, int rowNum) throws SQLException;
}