d2aeec69d74cb3ebc3d8cf9f0792fe7dace0c7f2
[mir.git] / source / mir / producer / EntityListProducerNode.java
1 package mir.producer;
2
3 import java.util.*;
4 import java.io.*;
5 import mir.entity.adapter.*;
6 import mir.entity.*;
7 import mir.storage.*;
8 import mir.util.*;
9
10 public class EntityListProducerNode extends ProducerNodeDecorator {
11   private String key;
12   private String whereClause;
13   private String orderByClause;
14   private int batchSize;
15   private EntityAdapterDefinition definition;
16   private StorageObject storage;
17
18   public EntityListProducerNode(String aKey, StorageObject aStorage,
19       EntityAdapterDefinition aDefinition, String aWhereClause, String anOrderByClause,
20       int aBatchSize, ProducerNode aSubNode) {
21     super(aSubNode);
22
23     storage = aStorage;
24     definition = aDefinition;
25     key = aKey;
26     whereClause = aWhereClause;
27     orderByClause = anOrderByClause;
28     batchSize = aBatchSize;
29   }
30
31   public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
32     try {
33       aValueMap.put(key,
34         new EntityIteratorAdapter(
35           storage,
36           ParameterExpander.expandExpression( aValueMap, whereClause ),
37           ParameterExpander.expandExpression( aValueMap, orderByClause ),
38           batchSize,
39           definition )
40       );
41       super.produce(aValueMap, aVerb, aLogger);
42     }
43     catch (Throwable t) {
44       throw new ProducerFailure(t.getMessage(), t);
45     }
46   };
47
48 }