Files
HRMS/hrmsEjb/net/sf/jasperreports/engine/util/JRElementsVisitor.java
2025-07-28 13:56:49 +05:30

116 lines
3.9 KiB
Java

package net.sf.jasperreports.engine.util;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import net.sf.jasperreports.crosstabs.JRCellContents;
import net.sf.jasperreports.crosstabs.JRCrosstab;
import net.sf.jasperreports.crosstabs.JRCrosstabCell;
import net.sf.jasperreports.crosstabs.JRCrosstabColumnGroup;
import net.sf.jasperreports.crosstabs.JRCrosstabRowGroup;
import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab;
import net.sf.jasperreports.engine.JRBand;
import net.sf.jasperreports.engine.JRChild;
import net.sf.jasperreports.engine.JRElementGroup;
import net.sf.jasperreports.engine.JRFrame;
import net.sf.jasperreports.engine.JRGroup;
import net.sf.jasperreports.engine.JRReport;
import net.sf.jasperreports.engine.JRVisitor;
public class JRElementsVisitor extends JRDelegationVisitor {
public static void visitReport(JRReport report, JRVisitor visitor) {
JRElementsVisitor reportVisitor = new JRElementsVisitor(visitor);
reportVisitor.visitReport(report);
}
public JRElementsVisitor(JRVisitor visitor) {
super(visitor);
}
public void visitReport(JRReport report) {
visitBand(report.getBackground());
visitBand(report.getTitle());
visitBand(report.getPageHeader());
visitBand(report.getColumnHeader());
visitBand(report.getDetail());
visitBand(report.getColumnFooter());
visitBand(report.getPageFooter());
visitBand(report.getLastPageFooter());
visitBand(report.getSummary());
visitBand(report.getNoData());
JRGroup[] groups = report.getGroups();
if (groups != null)
for (int i = 0; i < groups.length; i++) {
JRGroup group = groups[i];
visitBand(group.getGroupHeader());
visitBand(group.getGroupFooter());
}
}
protected void visitBand(JRBand band) {
if (band != null)
band.visit(this);
}
protected void visitElements(List elements) {
if (elements != null)
for (Iterator it = elements.iterator(); it.hasNext(); ) {
JRChild child = it.next();
child.visit(this);
}
}
public void visitElementGroup(JRElementGroup elementGroup) {
super.visitElementGroup(elementGroup);
visitElements(elementGroup.getChildren());
}
public void visitFrame(JRFrame frame) {
super.visitFrame(frame);
visitElements(frame.getChildren());
}
public void visitCrosstab(JRCrosstab crosstab) {
super.visitCrosstab(crosstab);
visitCrosstabCell(crosstab.getWhenNoDataCell());
visitCrosstabCell(crosstab.getHeaderCell());
JRCrosstabRowGroup[] rowGroups = crosstab.getRowGroups();
for (int i = 0; i < rowGroups.length; i++) {
JRCrosstabRowGroup rowGroup = rowGroups[i];
visitCrosstabCell(rowGroup.getHeader());
visitCrosstabCell(rowGroup.getTotalHeader());
}
JRCrosstabColumnGroup[] columnGroups = crosstab.getColumnGroups();
for (int j = 0; j < columnGroups.length; j++) {
JRCrosstabColumnGroup columnGroup = columnGroups[j];
visitCrosstabCell(columnGroup.getHeader());
visitCrosstabCell(columnGroup.getTotalHeader());
}
if (crosstab instanceof JRDesignCrosstab) {
List cells = ((JRDesignCrosstab)crosstab).getCellsList();
for (Iterator it = cells.iterator(); it.hasNext(); ) {
JRCrosstabCell cell = it.next();
visitCrosstabCell(cell.getContents());
}
} else {
JRCrosstabCell[][] cells = crosstab.getCells();
if (cells != null) {
Set cellContents = new HashSet();
for (int k = 0; k < cells.length; k++) {
for (int m = 0; m < (cells[k]).length; m++) {
JRCrosstabCell cell = cells[k][m];
if (cell != null && cell.getContents() != null && cellContents.add(cell.getContents()))
visitCrosstabCell(cell.getContents());
}
}
}
}
}
protected void visitCrosstabCell(JRCellContents cell) {
if (cell != null)
visitElements(cell.getChildren());
}
}