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

136 lines
5.0 KiB
Java

package net.sf.jasperreports.engine.base;
import net.sf.jasperreports.engine.JRCommonElement;
import net.sf.jasperreports.engine.JRElement;
import net.sf.jasperreports.engine.JRExpression;
import net.sf.jasperreports.engine.JRExpressionCollector;
import net.sf.jasperreports.engine.JRSubreport;
import net.sf.jasperreports.engine.JRSubreportParameter;
import net.sf.jasperreports.engine.JRSubreportReturnValue;
import net.sf.jasperreports.engine.JRVisitor;
import net.sf.jasperreports.engine.util.JRStyleResolver;
public class JRBaseSubreport extends JRBaseElement implements JRSubreport {
private static final long serialVersionUID = 10200L;
public static final String PROPERTY_USING_CACHE = "usingCache";
protected Boolean isUsingCache = null;
protected JRExpression parametersMapExpression = null;
protected JRSubreportParameter[] parameters = null;
protected JRExpression connectionExpression = null;
protected JRExpression dataSourceExpression = null;
protected JRExpression expression = null;
protected JRSubreportReturnValue[] returnValues = null;
public byte getMode() {
return JRStyleResolver.getMode((JRCommonElement)this, (byte)2);
}
protected JRBaseSubreport(JRSubreport subreport, JRBaseObjectFactory factory) {
super((JRElement)subreport, factory);
this.isUsingCache = subreport.isOwnUsingCache();
this.parametersMapExpression = factory.getExpression(subreport.getParametersMapExpression());
JRSubreportParameter[] jrSubreportParameters = subreport.getParameters();
if (jrSubreportParameters != null && jrSubreportParameters.length > 0) {
this.parameters = new JRSubreportParameter[jrSubreportParameters.length];
for (int i = 0; i < this.parameters.length; i++)
this.parameters[i] = factory.getSubreportParameter(jrSubreportParameters[i]);
}
this.connectionExpression = factory.getExpression(subreport.getConnectionExpression());
this.dataSourceExpression = factory.getExpression(subreport.getDataSourceExpression());
JRSubreportReturnValue[] subrepReturnValues = subreport.getReturnValues();
if (subrepReturnValues != null && subrepReturnValues.length > 0) {
this.returnValues = new JRSubreportReturnValue[subrepReturnValues.length];
for (int i = 0; i < subrepReturnValues.length; i++)
this.returnValues[i] = factory.getSubreportReturnValue(subrepReturnValues[i]);
}
this.expression = factory.getExpression(subreport.getExpression());
}
public boolean isUsingCache() {
if (this.isUsingCache == null) {
JRExpression subreportExpression = getExpression();
if (subreportExpression != null)
return String.class.getName().equals(subreportExpression.getValueClassName());
return true;
}
return this.isUsingCache.booleanValue();
}
public void setUsingCache(boolean isUsingCache) {
setUsingCache(isUsingCache ? Boolean.TRUE : Boolean.FALSE);
}
public JRExpression getParametersMapExpression() {
return this.parametersMapExpression;
}
public JRSubreportParameter[] getParameters() {
return this.parameters;
}
public JRExpression getConnectionExpression() {
return this.connectionExpression;
}
public JRExpression getDataSourceExpression() {
return this.dataSourceExpression;
}
public JRExpression getExpression() {
return this.expression;
}
public void collectExpressions(JRExpressionCollector collector) {
collector.collect(this);
}
public void visit(JRVisitor visitor) {
visitor.visitSubreport(this);
}
public JRSubreportReturnValue[] getReturnValues() {
return this.returnValues;
}
public Boolean isOwnUsingCache() {
return this.isUsingCache;
}
public void setUsingCache(Boolean isUsingCache) {
Object old = this.isUsingCache;
this.isUsingCache = isUsingCache;
getEventSupport().firePropertyChange("usingCache", old, this.isUsingCache);
}
public Object clone() {
JRBaseSubreport clone = (JRBaseSubreport)super.clone();
if (this.parameters != null) {
clone.parameters = new JRSubreportParameter[this.parameters.length];
for (int i = 0; i < this.parameters.length; i++)
clone.parameters[i] = (JRSubreportParameter)this.parameters[i].clone();
}
if (this.returnValues != null) {
clone.returnValues = new JRSubreportReturnValue[this.returnValues.length];
for (int i = 0; i < this.returnValues.length; i++)
clone.returnValues[i] = (JRSubreportReturnValue)this.returnValues[i].clone();
}
if (this.parametersMapExpression != null)
clone.parametersMapExpression = (JRExpression)this.parametersMapExpression.clone();
if (this.connectionExpression != null)
clone.connectionExpression = (JRExpression)this.connectionExpression.clone();
if (this.dataSourceExpression != null)
clone.dataSourceExpression = (JRExpression)this.dataSourceExpression.clone();
if (this.expression != null)
clone.expression = (JRExpression)this.expression.clone();
return clone;
}
}