5 import mir.entity.adapter.*;
10 public class EntityEnumeratingProducerNode extends ProducerNodeDecorator {
12 private EntityEnumeratingProducerNodeVerb defaultVerb;
14 private EntityAdapterModel model;
15 private String definition;
17 public EntityEnumeratingProducerNode(
19 EntityAdapterModel aModel, String aDefinition,
20 ProducerNode aSubNode) {
25 verbs = new HashMap();
27 definition = aDefinition;
31 public EntityEnumeratingProducerNode(
33 EntityAdapterModel aModel, String aDefinition,
34 String aDefaultWhereClause, String aDefaultOrderByClause,
35 ProducerNode aSubNode) {
36 this(aKey, aModel, aDefinition, aSubNode);
38 defaultVerb = new EntityEnumeratingProducerNodeVerb(aDefaultWhereClause, aDefaultOrderByClause);
41 public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
42 EntityEnumeratingProducerNodeVerb verb = (EntityEnumeratingProducerNodeVerb) verbs.get(aVerb);
49 throw new ProducerFailure("EntityEnumeratingProducerNode: unknown verb '"+aVerb+"'", null);
52 browser = new EntityIteratorAdapter(
53 ParameterExpander.expandExpression( aValueMap, verb.whereClause ),
54 ParameterExpander.expandExpression( aValueMap, verb.orderByClause ),
59 while (browser.hasNext()) {
60 ParameterExpander.setValueForKey( aValueMap, key, browser.next());
61 super.produce(aValueMap, aVerb, aLogger);
65 throw new ProducerFailure(t.getMessage(), t);
69 public Set buildVerbSet() {
72 set = super.buildVerbSet();
73 set.addAll(verbs.keySet());
78 public void addVerb(String aVerb, String aWhereClause, String anOrderByClause) {
79 verbs.put(aVerb, new EntityEnumeratingProducerNodeVerb(aWhereClause, anOrderByClause));
82 private class EntityEnumeratingProducerNodeVerb {
86 EntityEnumeratingProducerNodeVerb(String aWhereClause, String anOrderByClause) {
87 whereClause = aWhereClause;
88 orderByClause = anOrderByClause;