Files
HRMS/hrmsEjb/net/sf/jasperreports/charts/fill/JRFillPieDataset.java
2025-07-28 13:56:49 +05:30

119 lines
3.8 KiB
Java

package net.sf.jasperreports.charts.fill;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.charts.JRPieDataset;
import net.sf.jasperreports.charts.util.PieLabelGenerator;
import net.sf.jasperreports.engine.JRChartDataset;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExpression;
import net.sf.jasperreports.engine.JRExpressionCollector;
import net.sf.jasperreports.engine.JRHyperlink;
import net.sf.jasperreports.engine.JRHyperlinkHelper;
import net.sf.jasperreports.engine.JRPrintHyperlink;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.design.JRVerifier;
import net.sf.jasperreports.engine.fill.JRCalculator;
import net.sf.jasperreports.engine.fill.JRExpressionEvalException;
import net.sf.jasperreports.engine.fill.JRFillChartDataset;
import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator;
import net.sf.jasperreports.engine.fill.JRFillHyperlinkHelper;
import net.sf.jasperreports.engine.fill.JRFillObjectFactory;
import org.jfree.data.general.Dataset;
import org.jfree.data.general.DefaultPieDataset;
public class JRFillPieDataset extends JRFillChartDataset implements JRPieDataset {
private DefaultPieDataset dataset = new DefaultPieDataset();
private Map labels = null;
private Comparable key = null;
private Number value = null;
private String label = null;
private Map sectionHyperlinks;
private JRPrintHyperlink sectionHyperlink;
public JRFillPieDataset(JRPieDataset pieDataset, JRFillObjectFactory factory) {
super((JRChartDataset)pieDataset, factory);
}
public JRExpression getKeyExpression() {
return ((JRPieDataset)this.parent).getKeyExpression();
}
public JRExpression getValueExpression() {
return ((JRPieDataset)this.parent).getValueExpression();
}
public JRExpression getLabelExpression() {
return ((JRPieDataset)this.parent).getLabelExpression();
}
protected void customInitialize() {
this.dataset = new DefaultPieDataset();
this.labels = new HashMap();
this.sectionHyperlinks = new HashMap();
}
protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException {
this.key = (Comparable)calculator.evaluate(getKeyExpression());
this.value = (Number)calculator.evaluate(getValueExpression());
this.label = (String)calculator.evaluate(getLabelExpression());
if (hasSectionHyperlinks())
evaluateSectionHyperlink(calculator);
}
protected void evaluateSectionHyperlink(JRCalculator calculator) throws JRExpressionEvalException {
try {
this.sectionHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getSectionHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3);
} catch (JRExpressionEvalException e) {
throw e;
} catch (JRException e) {
throw new JRRuntimeException(e);
}
}
protected void customIncrement() {
this.dataset.setValue(this.key, this.value);
this.labels.put(this.key, this.label);
if (hasSectionHyperlinks())
this.sectionHyperlinks.put(this.key, this.sectionHyperlink);
}
public Dataset getCustomDataset() {
return (Dataset)this.dataset;
}
public byte getDatasetType() {
return 1;
}
public PieLabelGenerator getLabelGenerator() {
return (getLabelExpression() == null) ? null : new PieLabelGenerator(this.labels);
}
public void collectExpressions(JRExpressionCollector collector) {
collector.collect(this);
}
public JRHyperlink getSectionHyperlink() {
return ((JRPieDataset)this.parent).getSectionHyperlink();
}
public boolean hasSectionHyperlinks() {
return !JRHyperlinkHelper.isEmpty(getSectionHyperlink());
}
public Map getSectionHyperlinks() {
return this.sectionHyperlinks;
}
public void validate(JRVerifier verifier) {
verifier.verify(this);
}
}