package hirondelle.fish.main.reports;
import hirondelle.fish.util.ReqParam;
import hirondelle.web4j.action.ActionImpl;
import hirondelle.web4j.action.ResponsePage;
import hirondelle.web4j.database.DAOException;
import hirondelle.web4j.database.Db;
import hirondelle.web4j.database.DynamicSql;
import hirondelle.web4j.database.Report;
import hirondelle.web4j.database.SqlId;
import hirondelle.web4j.model.AppException;
import hirondelle.web4j.request.RequestParameter;
import hirondelle.web4j.request.RequestParser;
import hirondelle.web4j.security.SafeText;
import java.util.List;
import java.util.Map;
public final class Report4Action extends ActionImpl {
public Report4Action(RequestParser aRequestParser){
super(FORWARD, aRequestParser);
}
public ResponsePage execute() throws AppException {
addToRequest(ITEMS_FOR_LISTING, getListing());
addToRequest(TOTAL_ATTENDANCE_ALL_YEARS, getTotal());
return getResponsePage();
}
public static final SqlId LISTING = new SqlId("PARTICIPATION_PER_YEAR");
public static final SqlId TOTAL_ATTENDANCE = new SqlId("TOTAL_ATTENDANCE");
public static final RequestParameter SORT_ON = ReqParam.SORT_ON;
public static final RequestParameter ORDER = ReqParam.ORDER;
static final String TOTAL_ATTENDANCE_ALL_YEARS = "totalAttendanceAllYears";
private static final ResponsePage FORWARD = new ResponsePage("Report 4", "Report4.jsp", Report4Action.class);
private static final String DEFAULT_ORDER_BY = "ORDER BY 1 ASC";
private List<Map<String, SafeText>> getListing() throws DAOException {
return Report.raw(LISTING, getCustomSort());
}
private Integer getTotal() throws DAOException {
return Db.fetchValue(Integer.class, TOTAL_ATTENDANCE);
}
private DynamicSql getCustomSort(){
return getOrderBy(SORT_ON, ORDER, DEFAULT_ORDER_BY);
}
}