1 /***
2 * TableOperator.java
3 *
4 * $Author: mballesteros $
5 * $Date: 2003/11/28 19:18:03 $
6 * $Revision: 1.1 $
7 */
8 package net.sf.jec.namedop;
9
10 import java.util.ArrayList;
11 import java.util.Collection;
12 import java.util.HashMap;
13 import java.util.Iterator;
14 import java.util.List;
15 import java.util.Map;
16
17 import net.sf.jec.EvaluationException;
18 import net.sf.jec.Operator;
19
20
21 /*** TableOperator operates over an object collection and returns a table, result
22 * of applying operators for each column. There are always an odd number of
23 * argument operators. The first of the pair evaluates the column name, and the
24 * second evaluates the column value. Thus, is common to have a constant operator
25 * as the first in the pair, as in this example:
26 * <code>book.pages.table('Text', text, 'Count', wordCount)</code>
27 *
28 * @author mballesteros
29 */
30 public class TableOperator extends Operator {
31
32 /*** Creates a new SumOperator
33 */
34 public TableOperator() { }
35
36 /*** Returns a function representation String for this operator
37 */
38 public String toFunctionString() {
39 return "";
40 }
41
42 /*** Returns an expression String representation for this operator
43 */
44 public String toExpressionString() {
45 return "";
46 }
47
48
49 /*** Returns the associated value to the given context and root context
50 * @param rootCtx The root context, needed for operators that require
51 * expression evaluation from root point. Example: Indexer operators
52 * @param ctx The current context where the operator will work over
53 */
54 protected Object directMap(Object rootCtx, Object ctx) throws EvaluationException {
55 if (ctx instanceof Collection) {
56 List out = new ArrayList();
57 Iterator it = ((Collection)ctx).iterator();
58 while (it.hasNext()) out.add(calculateRow(rootCtx, it.next()));
59 return out;
60 } else {
61 return null;
62 }
63 }
64
65 /*** Calculates a table row (a Map containing colum names and column values)
66 */
67 private Map calculateRow(Object rootCtx, Object obj) throws EvaluationException {
68 Map out = new HashMap();
69 for (int i=0; i < argOps.length; i+=2) {
70 out.put( argOps[i].apply(rootCtx, obj),
71 argOps[i+1].apply(rootCtx, obj) );
72 }
73 return out;
74 }
75 }
This page was automatically generated by Maven