1
2
3
4
5
6
7 package org.asyrinx.joey.gen.model.command;
8
9 import java.util.ArrayList;
10 import java.util.List;
11
12 import org.apache.commons.logging.LogFactory;
13 import org.asyrinx.brownie.core.log.DispatchLog;
14 import org.asyrinx.joey.gen.model.Element;
15 import org.asyrinx.joey.gen.model.ElementVisitor;
16
17 /***
18 * @author takeshi
19 */
20 public class Command implements ElementVisitor {
21
22 private boolean strict = true;
23
24 protected final List errors = new ArrayList();
25
26 protected final DispatchLog log = new DispatchLog(LogFactory.getLog(this.getClass()), "info");
27
28 /***
29 *
30 */
31 public Command() {
32 super();
33 }
34
35 protected String element2String(Element element, String msg) {
36 if (element != null)
37 msg += " @" + element.getFullName();
38 msg += " (by command '" + this.getClass().getName() + "')";
39 return msg;
40 }
41
42 protected void addError(String msg) {
43 addError(null, msg);
44 }
45
46 protected void addError(Element element, String msg) {
47 addError(element, msg, isStrict());
48 }
49
50 protected void addError(Element element, String msg, boolean exit) {
51 msg = element2String(element, msg);
52 final ValidationError error = new ValidationError(msg, element);
53 if (exit) {
54 throw error;
55 } else {
56 log.warn(msg);
57 errors.add(error);
58 }
59 }
60
61 protected void log(String msg) {
62 log(null, msg);
63 }
64
65 protected void log(Element element, String msg) {
66 msg = element2String(element, msg);
67 log.log(msg);
68 }
69
70 /***
71 * @return Returns the strict.
72 */
73 public boolean isStrict() {
74 return strict;
75 }
76
77 /***
78 * @param strict
79 * The strict to set.
80 */
81 public void setStrict(boolean strict) {
82 this.strict = strict;
83 }
84
85
86
87
88
89
90 public void execute(Element element) {
91 throw new UnsupportedOperationException("subclass must override");
92 }
93
94
95
96
97
98
99 public void visit(Element element) {
100 throw new UnsupportedOperationException();
101 }
102
103 public List getErrors() {
104 return errors;
105 }
106 }