5 import mir.entity.adapter.*;
10 public class EntityEnumeratingProducerNode extends ProducerNodeDecorator {
12 private EntityEnumeratingProducerNodeVerb defaultVerb;
14 private EntityAdapterDefinition definition;
15 private StorageObject storage;
17 public EntityEnumeratingProducerNode(String aKey, StorageObject aStorage, EntityAdapterDefinition aDefinition, ProducerNode aSubNode) {
21 verbs = new HashMap();
23 definition = aDefinition;
27 public EntityEnumeratingProducerNode(String aKey, StorageObject aStorage, EntityAdapterDefinition aDefinition,
28 String aDefaultWhereClause, String aDefaultOrderByClause, ProducerNode aSubNode) {
29 this(aKey, aStorage, aDefinition, aSubNode);
31 defaultVerb = new EntityEnumeratingProducerNodeVerb(aDefaultWhereClause, aDefaultOrderByClause);
34 public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
35 EntityEnumeratingProducerNodeVerb verb = (EntityEnumeratingProducerNodeVerb) verbs.get(aVerb);
42 throw new ProducerFailure("EntityEnumeratingProducerNode: unknown verb '"+aVerb+"'", null);
45 browser = new EntityIteratorAdapter(
47 ParameterExpander.expandExpression( aValueMap, verb.whereClause ),
48 ParameterExpander.expandExpression( aValueMap, verb.orderByClause ),
52 while (browser.hasNext()) {
53 aLogger.println( verb.whereClause + ": next... ");
54 aValueMap.put(key, browser.next());
55 super.produce(aValueMap, aVerb, aLogger);
59 throw new ProducerFailure(t.getMessage(), t);
63 public Set buildVerbSet() {
66 set = super.buildVerbSet();
67 set.addAll(verbs.keySet());
72 public void addVerb(String aVerb, String aWhereClause, String anOrderByClause) {
73 verbs.put(aVerb, new EntityEnumeratingProducerNodeVerb(aWhereClause, anOrderByClause));
76 private class EntityEnumeratingProducerNodeVerb {
80 EntityEnumeratingProducerNodeVerb(String aWhereClause, String anOrderByClause) {
81 whereClause = aWhereClause;
82 orderByClause = anOrderByClause;