first commit
This commit is contained in:
115
hrmsEjb/net/sf/jasperreports/engine/util/JRElementsVisitor.java
Normal file
115
hrmsEjb/net/sf/jasperreports/engine/util/JRElementsVisitor.java
Normal file
@@ -0,0 +1,115 @@
|
||||
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());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user