Skip to content

Commit

Permalink
- version bumb 5.0.8-SNAPSHOT
Browse files Browse the repository at this point in the history
- Fix: Footer group label CoustomExpression had wrong field values
  • Loading branch information
Juan Alvarez committed May 22, 2016
1 parent 47f0718 commit 2758a1d
Show file tree
Hide file tree
Showing 15 changed files with 752 additions and 441 deletions.
8 changes: 7 additions & 1 deletion pom.xml
Expand Up @@ -31,7 +31,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>ar.com.fdvs</groupId>
<artifactId>DynamicJasper</artifactId>
<version>5.0.7</version>
<version>5.0.8-SNAPSHOT</version>
<name>DynamicJasper</name>
<packaging>jar</packaging>
<description>
Expand Down Expand Up @@ -444,6 +444,12 @@
<version>3.2.2.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.albfernandez</groupId>
<artifactId>juniversalchardet</artifactId>
<version>2.0.0</version>
<scope>test</scope>
</dependency>

</dependencies>

Expand Down
78 changes: 36 additions & 42 deletions src/main/java/ar/com/fdvs/dj/core/DJDefaultScriptlet.java
Expand Up @@ -12,60 +12,54 @@

/**
* This class handles parameter passing to custom expressions in runtime (during report fill)
* @author mamana
*
* @author mamana
*/
public class DJDefaultScriptlet extends JRDefaultScriptlet {

int veces = 0;
public DJDefaultScriptlet(){
super();
// logger.debug("Im a new Scrptlet " + this);
}

/**
* Logger for this class
*/
private static final Log logger = LogFactory.getLog(DJDefaultScriptlet.class);

protected static final String VARS_KEY = "vars";
protected static final String PARAMS_KEY = "params";
protected static final String FIELDS_KEY = "fields";

protected FieldMapWrapper fieldMapWrapper = new FieldMapWrapper();
protected ParameterMapWrapper parameterMapWrapper = new ParameterMapWrapper();
protected VariableMapWrapper variableMapWrapper = new VariableMapWrapper();
public class DJDefaultScriptlet extends JRDefaultScriptlet {

public void setData(Map parsm, Map fldsm, Map varsm, JRFillGroup[] grps) {
super.setData(parsm, fldsm, varsm, grps);
putValuesInMap();
}

protected void putValuesInMap() {
fieldMapWrapper.setMap(this.fieldsMap);
parameterMapWrapper.setMap(this.parametersMap);
variableMapWrapper.setMap(this.variablesMap);
}
public DJDefaultScriptlet() {
super();
}

public Map getCurrentFiels() {
return fieldMapWrapper;
}
private static final Log logger = LogFactory.getLog(DJDefaultScriptlet.class);

public Map getCurrentParams() {
return parameterMapWrapper;
}

public Map getCurrentVariables() {
return variableMapWrapper;
}
protected FieldMapWrapper fieldMapWrapper = new FieldMapWrapper();
protected ParameterMapWrapper parameterMapWrapper = new ParameterMapWrapper();
protected VariableMapWrapper variableMapWrapper = new VariableMapWrapper();

public void setData(Map parsm, Map fldsm, Map varsm, JRFillGroup[] grps) {
super.setData(parsm, fldsm, varsm, grps);
putValuesInMap();
}

protected void putValuesInMap() {
fieldMapWrapper.setMap(this.fieldsMap);
parameterMapWrapper.setMap(this.parametersMap);
variableMapWrapper.setMap(this.variablesMap);
}

public Map getCurrentFields() {
return fieldMapWrapper;
}

public Map getPreviousFields() {
return fieldMapWrapper.getPreviousValues();
}

public Map getCurrentParams() {
return parameterMapWrapper;
}

public Map getCurrentVariables() {
return variableMapWrapper;
}

@Override
public void beforeReportInit() throws JRScriptletException {
super.beforeReportInit();
JasperReport jr = (JasperReport) getParameterValue(JRParameter.JASPER_REPORT);
variableMapWrapper.setReportName(jr.getName());
parameterMapWrapper.setReportName(jr.getName());


}
}
170 changes: 94 additions & 76 deletions src/main/java/ar/com/fdvs/dj/core/FieldMapWrapper.java
Expand Up @@ -8,81 +8,99 @@
import net.sf.jasperreports.engine.fill.JRFillField;

public class FieldMapWrapper implements Map {

private Map map;

public FieldMapWrapper(Map map){
this.map = map;
}

public FieldMapWrapper() {
this.map = Collections.EMPTY_MAP;
}

public void clear() {
map.clear();
}

public boolean containsKey(Object key) {
return map.containsKey(key);
}

public boolean containsValue(Object value) {
throw new DJException("Method not implemented");
}

public Set entrySet() {
return map.entrySet();
}

public boolean equals(Object o) {
return map.equals(o);
}

public Object get(Object key) {
Object value = map.get(key);
if (value == null)
return null;

return ((JRFillField)value).getValue();
}

public int hashCode() {
return map.hashCode();
}

public boolean isEmpty() {
return map.isEmpty();
}

public Set keySet() {
return map.keySet();
}

public Object put(Object arg0, Object arg1) {
return map.put(arg0, arg1);
}

public void putAll(Map arg0) {
map.putAll(arg0);
}

public Object remove(Object key) {
return map.remove(key);
}

public int size() {
return map.size();
}

public Collection values() {
throw new DJException("Method not implemented");
}

public void setMap(Map fldsm) {
this.map = fldsm;
}



protected Map map;

public FieldMapWrapper(Map map) {
this.map = map;
}

public FieldMapWrapper() {
this.map = Collections.EMPTY_MAP;
}

public void clear() {
map.clear();
}

public boolean containsKey(Object key) {
return map.containsKey(key);
}

public boolean containsValue(Object value) {
throw new DJException("Method not implemented");
}

public Set entrySet() {
return map.entrySet();
}

public boolean equals(Object o) {
return map.equals(o);
}

public Object get(Object key) {
Object value = map.get(key);
if (value == null)
return null;

return ((JRFillField) value).getValue();
}

public int hashCode() {
return map.hashCode();
}

public boolean isEmpty() {
return map.isEmpty();
}

public Set keySet() {
return map.keySet();
}

public Object put(Object arg0, Object arg1) {
return map.put(arg0, arg1);
}

public void putAll(Map arg0) {
map.putAll(arg0);
}

public Object remove(Object key) {
return map.remove(key);
}

public int size() {
return map.size();
}

public Collection values() {
throw new DJException("Method not implemented");
}

public void setMap(Map fldsm) {
this.map = fldsm;
}


public Map getPreviousValues() {
return new PreviousValuesMap(this);
}

class PreviousValuesMap extends FieldMapWrapper {

public PreviousValuesMap(FieldMapWrapper fieldMapWrapper) {
this.map = fieldMapWrapper.map;
}

@Override
public Object get(Object key) {
Object value = map.get(key);
if (value == null)
return null;

return ((JRFillField) value).getOldValue();
}
}
}
Expand Up @@ -418,7 +418,7 @@ protected JRDesignExpression getExpressionForConditionalStyle(ConditionalStyle c
// PeS17 patch, 2008-11-29: put all fields to fields map, including "invisible" i.e. only registered ones
String fieldsMap = "(("+DJDefaultScriptlet.class.getName() + ")$P{REPORT_SCRIPTLET}).getCurrentFiels()";
String fieldsMap = "(("+DJDefaultScriptlet.class.getName() + ")$P{REPORT_SCRIPTLET}).getCurrentFields()";
String parametersMap = "(("+DJDefaultScriptlet.class.getName() + ")$P{REPORT_SCRIPTLET}).getCurrentParams()";
String variablesMap = "(("+DJDefaultScriptlet.class.getName() + ")$P{REPORT_SCRIPTLET}).getCurrentVariables()";
Expand Down
Expand Up @@ -547,7 +547,7 @@ protected void layoutGroupFooterLabels(DJGroup djgroup, JRDesignGroup jgroup, in
if (label.isJasperExpression()) //a text with things like "$F{myField}"
labelExp = ExpressionUtils.createStringExpression(label.getText());
else if (label.getLabelExpression() != null){
labelExp = ExpressionUtils.createExpression(jgroup.getName() + "_labelExpression", label.getLabelExpression());
labelExp = ExpressionUtils.createExpression(jgroup.getName() + "_labelExpression", label.getLabelExpression(), true);
} else //a simple text
//labelExp = ExpressionUtils.createStringExpression("\""+ Utils.escapeTextForExpression(label.getText())+ "\"");
labelExp = ExpressionUtils.createStringExpression("\""+ label.getText() + "\"");
Expand Down Expand Up @@ -610,7 +610,7 @@ protected void layoutGroupCrosstabs(DJGroup columnsGroup, JRDesignGroup jgroup)
else if (caption.getLabelExpression() != null) {
String name = "expression_for_label_at_header_of_group[" + getReport().getColumnsGroups().indexOf(columnsGroup) + "]_crosstab[" + columnsGroup.getHeaderCrosstabs().indexOf(djcross) + "]";
LayoutUtils.registerCustomExpressionParameter((DynamicJasperDesign) getDesign(), name, caption.getLabelExpression());
String invocationText = ExpressionUtils.createCustomExpressionInvocationText(caption.getLabelExpression(), name);
String invocationText = ExpressionUtils.createCustomExpressionInvocationText(caption.getLabelExpression(), name, false);
captExp = ExpressionUtils.createExpression(invocationText, caption.getLabelExpression().getClassName());
log.debug(invocationText);
} else //a simple text
Expand Down Expand Up @@ -1028,7 +1028,7 @@ protected void placeVariableInBand(List variables, DJGroup djGroup, JRDesignGrou
if (label.isJasperExpression()) //a text with things like "$F{myField}"
labelExp = ExpressionUtils.createStringExpression(label.getText());
else if (label.getLabelExpression() != null){
labelExp = ExpressionUtils.createExpression(variableName + "_labelExpression", label.getLabelExpression());
labelExp = ExpressionUtils.createExpression(variableName + "_labelExpression", label.getLabelExpression(), false);
} else //a simple text
//labelExp = ExpressionUtils.createStringExpression("\""+ Utils.escapeTextForExpression(label.getText())+ "\"");
labelExp = ExpressionUtils.createStringExpression("\""+ label.getText() + "\"");
Expand Down Expand Up @@ -1056,7 +1056,7 @@ else if (label.getLabelExpression() != null){
textField.setEvaluationTime( EvaluationTimeEnum.GROUP );

if (var.getValueExpression() != null) {
expression = ExpressionUtils.createExpression(variableName + "_valueExpression", var.getValueExpression());
expression = ExpressionUtils.createExpression(variableName + "_valueExpression", var.getValueExpression(), false);
}
else
setTextAndClassToExpression(expression,var,col,variableName);
Expand Down Expand Up @@ -1118,7 +1118,7 @@ else if (defStyle != null)
applyStyleToElement(defStyle, textField);

if (var.getPrintWhenExpression() != null) {
JRDesignExpression exp = ExpressionUtils.createExpression(variableName + "_printWhenExpression", var.getPrintWhenExpression());
JRDesignExpression exp = ExpressionUtils.createExpression(variableName + "_printWhenExpression", var.getPrintWhenExpression(), false);
textField.setPrintWhenExpression(exp);
if (labelTf != null)
labelTf.setPrintWhenExpression(exp);
Expand Down
Expand Up @@ -657,7 +657,7 @@ private void setUpConditionStyles(JRDesignStyle jrstyle, DJCrosstabMeasure djmea
* MOVED INSIDE ExpressionUtils
*
protected JRDesignExpression getExpressionForConditionalStyle(ConditionalStyle condition, String columExpression) {
String fieldsMap = "(("+DJDefaultScriptlet.class.getName() + ")$P{REPORT_SCRIPTLET}).getCurrentFiels()";
String fieldsMap = "(("+DJDefaultScriptlet.class.getName() + ")$P{REPORT_SCRIPTLET}).getCurrentFields()";
String parametersMap = "(("+DJDefaultScriptlet.class.getName() + ")$P{REPORT_SCRIPTLET}).getCurrentParams()";
String variablesMap = "(("+DJDefaultScriptlet.class.getName() + ")$P{REPORT_SCRIPTLET}).getCurrentVariables()";
Expand Down
Expand Up @@ -30,7 +30,6 @@
package ar.com.fdvs.dj.core.registration;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRSection;
import net.sf.jasperreports.engine.design.*;

import net.sf.jasperreports.engine.type.CalculationEnum;
Expand Down Expand Up @@ -186,7 +185,7 @@ protected void useVariableForCustomExpression(JRDesignGroup group,
gvar.setCalculation( CalculationEnum.NOTHING );
gvar.setValueClassName(customExpression.getClassName());

String expText = ExpressionUtils.createCustomExpressionInvocationText(customExpression, expToGroupByName);
String expText = ExpressionUtils.createCustomExpressionInvocationText(customExpression, expToGroupByName, false);
JRDesignExpression gvarExp = new JRDesignExpression();
gvarExp.setValueClassName(customExpression.getClassName());
gvarExp.setText(expText);
Expand Down
Expand Up @@ -101,7 +101,7 @@ public String getTextForExpression() {
if (this.calculatedExpressionText != null)
return this.calculatedExpressionText;

String stringExpression = ExpressionUtils.createCustomExpressionInvocationText(expression, getColumnProperty().getProperty());
String stringExpression = ExpressionUtils.createCustomExpressionInvocationText(expression, getColumnProperty().getProperty(), false);

log.debug("Expression for CustomExpression = " + stringExpression);

Expand All @@ -111,7 +111,7 @@ public String getTextForExpression() {

public String getTextForExpressionForCalculartion() {

String stringExpression = ExpressionUtils.createCustomExpressionInvocationText(expressionForCalculation, getColumnProperty().getProperty()+"_calc");
String stringExpression = ExpressionUtils.createCustomExpressionInvocationText(expressionForCalculation, getColumnProperty().getProperty()+"_calc", false);

log.debug("Calculation Expression for CustomExpression = " + stringExpression);

Expand Down

0 comments on commit 2758a1d

Please sign in to comment.