gvsig-projects-pool / org.gvsig.report / trunk / org.gvsig.report / org.gvsig.report.lib / org.gvsig.report.lib.impl / src / main / java / org / gvsig / report / lib / impl / reportbuilder / GvsigCustomExpression.java @ 8240
History | View | Annotate | Download (2.11 KB)
1 |
package org.gvsig.report.lib.impl.reportbuilder; |
---|---|
2 |
|
3 |
import ar.com.fdvs.dj.domain.CustomExpression; |
4 |
import java.util.Map; |
5 |
import java.util.Objects; |
6 |
import net.sf.jasperreports.engine.fill.JRFillField; |
7 |
import org.gvsig.expressionevaluator.Expression; |
8 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
9 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
10 |
import org.gvsig.fmap.dal.expressionevaluator.FeatureSymbolTable; |
11 |
import org.gvsig.report.lib.impl.JRFeatureStoreDataSource; |
12 |
import org.gvsig.tools.dataTypes.DataType; |
13 |
import org.gvsig.tools.util.CachedValue; |
14 |
import org.slf4j.Logger; |
15 |
import org.slf4j.LoggerFactory; |
16 |
|
17 |
/**
|
18 |
*
|
19 |
* @author osc
|
20 |
*/
|
21 |
public class GvsigCustomExpression implements CustomExpression { |
22 |
|
23 |
private static final Logger LOGGER = LoggerFactory.getLogger(GvsigCustomExpression.class); |
24 |
|
25 |
public final Expression expression; |
26 |
private final DataType dataType; |
27 |
private final MutableSymbolTable symbolTable; |
28 |
|
29 |
GvsigCustomExpression(Expression exp, DataType dataType) {
|
30 |
this.expression = exp;
|
31 |
this.dataType = dataType;
|
32 |
this.symbolTable = ExpressionUtils.createSymbolTable();
|
33 |
} |
34 |
|
35 |
@Override
|
36 |
public Object evaluate(Map fields, Map variables, Map parameters) { |
37 |
Object o = null; |
38 |
Map<String, Object> fieldsVars = (Map<String, Object>) fields; |
39 |
for (Map.Entry<String, Object> var : fieldsVars.entrySet()) { |
40 |
o = var.getValue(); |
41 |
if( o instanceof JRFillField) { |
42 |
JRFillField value = (JRFillField) o; |
43 |
symbolTable.setVar(var.getKey(), value.getValue()); |
44 |
} |
45 |
} |
46 |
o = parameters.get("REPORT_DATA_SOURCE");
|
47 |
if( o instanceof JRFeatureStoreDataSource ) { |
48 |
JRFeatureStoreDataSource dataSource = (JRFeatureStoreDataSource) o; |
49 |
FeatureSymbolTable fst = dataSource.getFeatureSymbolTable(); |
50 |
symbolTable.addSymbolTable(fst); |
51 |
LOGGER.info(Objects.toString(fst.getFeature())); |
52 |
} |
53 |
|
54 |
return expression.execute(symbolTable);
|
55 |
} |
56 |
|
57 |
@Override
|
58 |
public String getClassName() { |
59 |
return dataType.getDefaultClass().getName();
|
60 |
} |
61 |
} |