HistoryFinder.java
package org.ferris.riviera.console.history;
import static java.lang.String.format;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.StringJoiner;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.log4j.Logger;
import org.ferris.riviera.console.connection.ConnectionHandler;
import static org.ferris.riviera.console.history.HistoryFinderEvent.FIND;
import javax.annotation.Priority;
@Singleton
public class HistoryFinder {
@Inject
protected Logger log;
@Inject
protected ConnectionHandler handler;
protected void retrieveScriptsFromDatabaseOrderedAscending(
@Observes @Priority(FIND) HistoryFinderEvent event
) {
log.info("ENTER");
String sql =
new StringJoiner(",", " SELECT ", " FROM SCRIPT_HISTORY ")
.add(" RELEASE_VERSION ")
.add(" RELEASE_TITLE ")
.add(" MAJOR ")
.add(" FEATURE ")
.add(" BUG ")
.add(" BUILD ")
.add(" FILE_NAME ")
.add(" FILE_DESCRIPTION ")
.add(" APPLIED_ON ")
.toString()
+
new StringJoiner(",", " ORDER BY ", " ASC ")
.add(" MAJOR ")
.add(" FEATURE ")
.add(" BUG ")
.add(" BUILD ")
.toString()
;
log.debug(sql);
try (
Connection conn = handler.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
){
HistoryList list
= new HistoryList();
while (rs.next()) {
list.add(
new History(
rs.getString("RELEASE_VERSION")
, rs.getString("RELEASE_TITLE")
, rs.getInt("MAJOR")
, rs.getInt("FEATURE")
, rs.getInt("BUG")
, rs.getInt("BUILD")
, rs.getString("FILE_NAME")
, rs.getString("FILE_DESCRIPTION")
, rs.getTimestamp("APPLIED_ON")
)
);
}
log.info(format(
"Found %d scripts in database", list.size())
);
event.setHistory(list);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}