5 import mir.entity.adapter.*;
10 public class EntityListProducerNode extends ProducerNodeDecorator {
12 private String whereClause;
13 private String orderByClause;
14 private int batchSize;
15 private EntityAdapterModel model;
16 private String definition;
17 private String limitExpression;
18 private String skipExpression;
20 public EntityListProducerNode(String aKey,
21 EntityAdapterModel aModel, String aDefinition,
22 String aWhereClause, String anOrderByClause,
23 String aLimitExpression, String aSkipExpression, ProducerNode aSubNode) {
27 definition = aDefinition;
29 whereClause = aWhereClause;
30 orderByClause = anOrderByClause;
31 limitExpression = aLimitExpression;
32 skipExpression = aSkipExpression;
35 public EntityListProducerNode(String aKey,
36 EntityAdapterModel aModel, String aDefinition,
37 String aWhereClause, String anOrderByClause,
38 int aLimit, int aSkip, ProducerNode aSubNode) {
39 this(aKey, aModel, aDefinition, aWhereClause, anOrderByClause,
40 Integer.toString(aLimit), Integer.toString(aSkip), aSubNode);
43 public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
45 int limit = ParameterExpander.evaluateIntegerExpressionWithDefault(aValueMap, limitExpression, -1);
46 int skip = ParameterExpander.evaluateIntegerExpressionWithDefault(aValueMap, skipExpression, 0);
48 if (skipExpression != null && !skipExpression.trim().equals(""))
49 skip = ParameterExpander.evaluateIntegerExpression(aValueMap, skipExpression);
51 ParameterExpander.setValueForKey(
54 new CachingRewindableIterator(
55 new EntityIteratorAdapter(
56 ParameterExpander.expandExpression( aValueMap, whereClause ),
57 ParameterExpander.expandExpression( aValueMap, orderByClause ),
65 super.produce(aValueMap, aVerb, aLogger);
68 throw new ProducerFailure(t.getMessage(), t);