first commit

This commit is contained in:
2025-07-28 13:56:49 +05:30
commit e9eb805edb
3438 changed files with 520990 additions and 0 deletions

View File

@@ -0,0 +1,240 @@
package net.sf.jasperreports.charts.fill;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.sf.jasperreports.charts.JRHighLowDataset;
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.xy.DefaultHighLowDataset;
public class JRFillHighLowDataset extends JRFillChartDataset implements JRHighLowDataset {
private String series = null;
private List elements = new ArrayList();
private Date date = null;
private Number high = null;
private Number low = null;
private Number open = null;
private Number close = null;
private Number volume = null;
private JRPrintHyperlink itemHyperlink;
private List itemHyperlinks;
public JRFillHighLowDataset(JRHighLowDataset dataset, JRFillObjectFactory factory) {
super((JRChartDataset)dataset, factory);
}
protected void customInitialize() {
this.elements = new ArrayList();
this.itemHyperlinks = new ArrayList();
}
protected void customEvaluate(JRCalculator calculator) throws JRExpressionEvalException {
this.series = (String)calculator.evaluate(getSeriesExpression());
this.date = (Date)calculator.evaluate(getDateExpression());
this.high = (Number)calculator.evaluate(getHighExpression());
this.low = (Number)calculator.evaluate(getLowExpression());
this.open = (Number)calculator.evaluate(getOpenExpression());
this.close = (Number)calculator.evaluate(getCloseExpression());
this.volume = (Number)calculator.evaluate(getVolumeExpression());
if (hasItemHyperlink())
evaluateSectionHyperlink(calculator);
}
protected void evaluateSectionHyperlink(JRCalculator calculator) throws JRExpressionEvalException {
try {
this.itemHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getItemHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3);
} catch (JRExpressionEvalException e) {
throw e;
} catch (JRException e) {
throw new JRRuntimeException(e);
}
}
protected void customIncrement() {
this.elements.add(new HighLowElement(this.date, this.high, this.low, this.open, this.close, this.volume));
if (hasItemHyperlink())
this.itemHyperlinks.add(this.itemHyperlink);
}
public Dataset getCustomDataset() {
int size = this.elements.size();
if (size > 0) {
Date[] dateArray = new Date[size];
double[] highArray = new double[size];
double[] lowArray = new double[size];
double[] openArray = new double[size];
double[] closeArray = new double[size];
double[] volumeArray = new double[size];
for (int i = 0; i < this.elements.size(); i++) {
HighLowElement bean = this.elements.get(i);
dateArray[i] = new Date(bean.getDate().getTime());
highArray[i] = bean.getHigh().doubleValue();
lowArray[i] = bean.getLow().doubleValue();
openArray[i] = bean.getOpen().doubleValue();
closeArray[i] = bean.getClose().doubleValue();
volumeArray[i] = bean.getVolume().doubleValue();
}
return (Dataset)new DefaultHighLowDataset(this.series, dateArray, highArray, lowArray, openArray, closeArray, volumeArray);
}
return null;
}
public JRExpression getSeriesExpression() {
return ((JRHighLowDataset)this.parent).getSeriesExpression();
}
public JRExpression getDateExpression() {
return ((JRHighLowDataset)this.parent).getDateExpression();
}
public JRExpression getHighExpression() {
return ((JRHighLowDataset)this.parent).getHighExpression();
}
public JRExpression getLowExpression() {
return ((JRHighLowDataset)this.parent).getLowExpression();
}
public JRExpression getOpenExpression() {
return ((JRHighLowDataset)this.parent).getOpenExpression();
}
public JRExpression getCloseExpression() {
return ((JRHighLowDataset)this.parent).getCloseExpression();
}
public JRExpression getVolumeExpression() {
return ((JRHighLowDataset)this.parent).getVolumeExpression();
}
private static class HighLowElement {
Date date;
Number high;
Number low;
Number open;
Number close;
Number volume;
public HighLowElement(Date date, Number high, Number low, Number open, Number close, Number volume) {
if (date == null)
throw new JRRuntimeException("Date value is null in high-low series.");
this.date = date;
if (high == null)
throw new JRRuntimeException("High value is null in high-low series.");
this.high = high;
if (low == null)
throw new JRRuntimeException("Low value is null in high-low series.");
this.low = low;
if (open == null)
throw new JRRuntimeException("Open value is null in high-low series.");
this.open = open;
if (close == null)
throw new JRRuntimeException("Close value is null in high-low series.");
this.close = close;
if (volume == null)
throw new JRRuntimeException("Volume value is null in high-low series.");
this.volume = volume;
}
public Date getDate() {
return this.date;
}
public void setDate(Date date) {
this.date = date;
}
public Number getHigh() {
return this.high;
}
public void setHigh(Number high) {
this.high = high;
}
public Number getLow() {
return this.low;
}
public void setLow(Number low) {
this.low = low;
}
public Number getOpen() {
return this.open;
}
public void setOpen(Number open) {
this.open = open;
}
public Number getClose() {
return this.close;
}
public void setClose(Number close) {
this.close = close;
}
public Number getVolume() {
return this.volume;
}
public void setVolume(Number volume) {
this.volume = volume;
}
}
public byte getDatasetType() {
return 7;
}
public void collectExpressions(JRExpressionCollector collector) {
collector.collect(this);
}
public JRHyperlink getItemHyperlink() {
return ((JRHighLowDataset)this.parent).getItemHyperlink();
}
public boolean hasItemHyperlink() {
return !JRHyperlinkHelper.isEmpty(getItemHyperlink());
}
public List getItemHyperlinks() {
return this.itemHyperlinks;
}
public void validate(JRVerifier verifier) {
verifier.verify(this);
}
}