Bean のリストがあり、そのリストに「VALUEA」と「VALUEB」を返すゲッターを持つ少なくとも 2 つの Bean があるかどうかを確認しています。これは、"VALUEC TOTAL" と呼ばれる 2 つの "total" Bean を構築できるようにするためです。最後に「総計」豆列も作っています。
ここでの問題は、「VALUEC TOTAL」だけです。最後にそれを行う方法ではなく、元のリストの「VALUEB」の後にそのBeanをリストに追加する必要があります。
概要が空でないことを確認できます。
summary = new ArrayList<WorkoutPlanBean>();
beans = dao.getAppropriationSummaryBySor(criteria, summary);
//Here we are setting up lists to be used to be added to the bottom of "Rollup" as "Totals"
List<WorkoutPlanBean> valuecList = new ArrayList<WorkoutPlanBean>();
List<WorkoutPlanBean> sumList = new ArrayList<WorkoutPlanBean>();
for (WorkoutPlanBean b: summary)
{
//We need 2 beans...one with VALUEA and one with VALUEB
if( b.getSor().getShortName().equals("VALUEA") || b.getSor().getShortName().equals("VALUEB"))
{
valuecList.add(b);
}
sumList.add(b);
}
// Create VALUEC totals bean.
if (valuecList.size() > 1 )
{
WorkoutPlanBean valuecTotals = new WorkoutPlanBean();
valuecTotals.setSor(VALUEC_TOTALS_SOR);
for (WorkoutPlanBean bean : valuecList)
{
valuecTotals.setQuantity(Overview.totalsIntegerAdd(valuecTotals.getQuantity(),
bean.getQuantity()));
valuecTotals.setHours(Overview.totalsDoubleAdd(valuecTotals.getHours(),
bean.getHours()));
valuecTotals.setValue(Overview.totalsBigDecimalAdd(valuecTotals.getValue(),
bean.getValue()));
}
summary.add(valuecTotals);
}
// Create Totals bean.
if (sumList.size() > 1 )
{
WorkoutPlanBean globalTotals = new WorkoutPlanBean();
globalTotals.setSor(GRAND_TOTALS_SOR);
for (WorkoutPlanBean bean : sumList)
{
globalTotals.setQuantity(Overview.totalsIntegerAdd(globalTotals.getQuantity(),
bean.getQuantity()));
globalTotals.setHours(Overview.totalsDoubleAdd(globalTotals.getHours(),
bean.getHours()));
globalTotals.setValue(Overview.totalsBigDecimalAdd(globalTotals.getValue(),
bean.getValue()));
}
summary.add(globalTotals);
}
request.setAttribute("summary", summary);