bits.clear();
int count = 0;
final ReportDefinition report = event.getReport();
final ReportState state = event.getState();
final int groupsPrinted = state.getPresentationGroupIndex();
final int levelCount = levels.length;
for (int i = 0; i < levelCount; i++)
{
final LayouterLevel level = levels[i];
final ReportDefinition def = level.getReportDefinition();
for (int gidx = level.getGroupIndex(); gidx >= 0; gidx -= 1)
{
final Group g = def.getGroup(gidx);
if (g instanceof RelationalGroup)
{
final RelationalGroup rg = (RelationalGroup) g;
final GroupFooter footer = rg.getFooter();
bits.set(count, DefaultOutputFunction.isGroupSectionPrintable(footer, true, true));
count += 1;
}
}
if (level.isInItemGroup())
{
final DetailsFooter detailsFooter = def.getDetailsFooter();
if (detailsFooter != null)
{
bits.set(count, DefaultOutputFunction.isGroupSectionPrintable(detailsFooter, true, true));
count += 1;
}
}
}
/**
* Repeating group header are only printed while ItemElements are
* processed.
*/
for (int gidx = groupsPrinted; gidx >= 0; gidx -= 1)
{
final Group g = report.getGroup(gidx);
if (g instanceof RelationalGroup)
{
final RelationalGroup rg = (RelationalGroup) g;
final GroupFooter footer = rg.getFooter();
bits.set(count, DefaultOutputFunction.isGroupSectionPrintable(footer, false, true));
count += 1;
}
}
if (state.isInItemGroup())
{
final DetailsFooter footer = report.getDetailsFooter();
bits.set(count, DefaultOutputFunction.isGroupSectionPrintable(footer, false, true));
count += 1;
}