2009/05/20 - Apache Shale has been retired.
For more information, please explore the Attic.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.shale.clay.parser.builder.chain;
22
23 import org.apache.commons.chain.Command;
24 import org.apache.commons.chain.Context;
25 import org.apache.shale.clay.parser.Node;
26 import org.apache.shale.clay.parser.builder.Builder;
27 import org.apache.shale.clay.parser.builder.SelectManyMenuBuilder;
28 import org.apache.shale.clay.parser.builder.SelectOneMenuBuilder;
29
30 /***
31 * <p>
32 * This rule will map a html select {@link Node} to a
33 * {@link org.apache.shale.clay.parser.builder.SelectOneMenuBuilder}
34 * or a {@link org.apache.shale.clay.parser.builder.SelectManyMenuBuilder}.
35 * </p>
36 */
37 public class SelectBuilderRule implements Command {
38
39 /***
40 * <p>
41 * An array of target {@link org.apache.shale.clay.parser.builder.Builder}s.
42 * </p>
43 */
44 private static final Builder[] BUILDERS = { new SelectOneMenuBuilder(),
45 new SelectManyMenuBuilder() };
46
47 /***
48 * <p>Returns <code>true</code> if a match was made from a select
49 * {@link Node} to a {@link org.apache.shale.clay.parser.builder.SelectOneMenuBuilder}
50 * or a {@link org.apache.shale.clay.parser.builder.SelectManyMenuBuilder}.
51 * <p>
52 *
53 * @param context commons chains
54 * @return <code>true</code> if the chain is done
55 * @exception Exception pass back up the calling chain
56 */
57 public boolean execute(Context context) throws Exception {
58 boolean isFinal = false;
59
60 BuilderRuleContext builderRuleContext = (BuilderRuleContext) context;
61 Node node = builderRuleContext.getNode();
62 if (!node.isComment() && node.getName() != null
63 && node.getName().equalsIgnoreCase("select")) {
64
65 if (!node.getAttributes().containsKey("multiple")) {
66 builderRuleContext.setBuilder(BUILDERS[0]);
67 isFinal = true;
68 } else {
69 builderRuleContext.setBuilder(BUILDERS[1]);
70 isFinal = true;
71 }
72
73 }
74
75 return isFinal;
76 }
77
78 }