5 import mir.entity.adapter.*;
10 public class EntityEnumeratingProducerNode extends ProducerNodeDecorator {
12 private EntityEnumeratingProducerNodeVerb defaultVerb;
14 private EntityAdapterModel model;
15 private String definition;
19 public EntityEnumeratingProducerNode(
21 EntityAdapterModel aModel, String aDefinition,
22 ProducerNode aSubNode) {
26 verbs = new HashMap();
28 definition = aDefinition;
32 public EntityEnumeratingProducerNode(
34 EntityAdapterModel aModel, String aDefinition,
35 String aDefaultWhereClause, String aDefaultOrderByClause,
36 ProducerNode aSubNode) {
37 this(aKey, aModel, aDefinition, aDefaultWhereClause, aDefaultOrderByClause, "", "", aSubNode);
40 public EntityEnumeratingProducerNode(
42 EntityAdapterModel aModel, String aDefinition,
43 String aDefaultWhereClause, String aDefaultOrderByClause,
44 String aLimit, String aSkip,
45 ProducerNode aSubNode) {
46 this(aKey, aModel, aDefinition, aSubNode);
50 defaultVerb = new EntityEnumeratingProducerNodeVerb(aDefaultWhereClause, aDefaultOrderByClause);
53 public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
54 EntityEnumeratingProducerNodeVerb verb = (EntityEnumeratingProducerNodeVerb) verbs.get(aVerb);
61 throw new ProducerFailure("EntityEnumeratingProducerNode: unknown verb '"+aVerb+"'", null);
64 browser = new EntityIteratorAdapter(
65 ParameterExpander.expandExpression( aValueMap, verb.whereClause ),
66 ParameterExpander.expandExpression( aValueMap, verb.orderByClause ),
70 ParameterExpander.evaluateIntegerExpressionWithDefault( aValueMap, limit, -1),
71 ParameterExpander.evaluateIntegerExpressionWithDefault( aValueMap, skip, 0));
73 while (browser.hasNext()) {
74 ParameterExpander.setValueForKey( aValueMap, key, browser.next());
75 super.produce(aValueMap, aVerb, aLogger);
79 throw new ProducerFailure(t.getMessage(), t);
83 public Set buildVerbSet() {
86 set = super.buildVerbSet();
87 set.addAll(verbs.keySet());
92 public void addVerb(String aVerb, String aWhereClause, String anOrderByClause) {
93 verbs.put(aVerb, new EntityEnumeratingProducerNodeVerb(aWhereClause, anOrderByClause));
96 private class EntityEnumeratingProducerNodeVerb {
100 EntityEnumeratingProducerNodeVerb(String aWhereClause, String anOrderByClause) {
101 whereClause = aWhereClause;
102 orderByClause = anOrderByClause;