1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.jdo.model;
19
20 import org.apache.jdo.util.I18NHelper;
21
22 /***
23 * This exception indicates a problem during model validation.
24 *
25 * @author Michael Bouschen
26 * @since JDO 1.0.1
27 */
28 public class ModelValidationException
29 extends ModelException
30 {
31 /*** Constant representing an error. */
32 public static final int ERROR = 0;
33
34 /*** Constant representing a warning. */
35 public static final int WARNING = 1;
36
37 /***
38 * This field holds the type -- one of {@link #ERROR} or {@link #WARNING}
39 */
40 private int type;
41
42 /***
43 * This field holds the offending object -- the one being validated
44 * when the problem occurred
45 */
46 private Object offendingObject;
47
48 /*** I18N support */
49 private static I18NHelper msg =
50 I18NHelper.getInstance(ModelValidationException.class);
51
52 /***
53 * Creates new <code>ModelValidationException</code> of type
54 * {@link #ERROR} with <code>null</code> as the offending object and
55 * no detail message.
56 */
57 public ModelValidationException()
58 {
59 this(ERROR, null, null);
60 }
61
62 /***
63 * Constructs a <code>ModelValidationException</code> of type
64 * {@link #ERROR} with <code>null</code> as the offending object and
65 * with the specified detail message.
66 * @param message the detail message.
67 */
68 public ModelValidationException(String message)
69 {
70 this(ERROR, null, message);
71 }
72
73 /***
74 * Constructs a <code>ModelValidationException</code> of type
75 * {@link #ERROR} with the specified offending object and no
76 * detail message.
77 * @param offendingObject the offending object.
78 */
79 public ModelValidationException (Object offendingObject)
80 {
81 this(ERROR, offendingObject, null);
82 }
83
84 /***
85 * Constructs a <code>ModelValidationException</code> of type
86 * {@link #ERROR} with the specified offending object and detail
87 * message .
88 * @param offendingObject the offending object.
89 * @param message the detail message.
90 */
91 public ModelValidationException (Object offendingObject, String message)
92 {
93 this(ERROR, offendingObject, message);
94 }
95
96 /***
97 * Constructs a <code>ModelValidationException</code> of the specified
98 * type with the specified detail message and offending object.
99 * @param errorType the type -- one of {@link #ERROR} or
100 * {@link #WARNING}.
101 * @param offendingObject the offending object.
102 * @param message the detail message.
103 */
104 public ModelValidationException(int errorType, Object offendingObject,
105 String message)
106 {
107 super(message);
108 this.type = errorType;
109 this.offendingObject = offendingObject;
110 }
111
112 /***
113 * Get the offending object -- the one being validated when the problem
114 * occurred.
115 */
116 public Object getOffendingObject ()
117 {
118 return offendingObject;
119 }
120
121 /***
122 * Get the type -- one of {@link #ERROR} or {@link #WARNING}.
123 */
124 public int getType()
125 {
126 return type;
127 }
128
129 /***
130 * Returns the error message string of this throwable object.
131 * @return the error message string of this
132 * <code>ModelValidationException</code>, prepended with the warning string
133 * if the type is {@link #WARNING}
134 *
135 */
136 public String getMessage ()
137 {
138 String message = super.getMessage();
139 if ((WARNING == getType()) &&
140 (message != null) && (message.length() > 0)) {
141 message = msg.msg("MSG_OffendingObject") + message;
142 }
143 return message;
144 }
145 /***
146 * The <code>String</code> representation includes the name of the class,
147 * the descriptive comment (if any),
148 * and the <code>String</code> representation of the cause (if any).
149 * @return the <code>String</code>.
150 */
151 public String toString()
152 {
153 StringBuffer sb = new StringBuffer();
154 sb.append(super.toString());
155
156 if (offendingObject != null) {
157 sb.append("\n");
158 sb.append(msg.msg("MSG_OffendingObject"));
159 sb.append(offendingObject.toString());
160 }
161 return sb.toString();
162 }
163
164 }