View Javadoc
1 /* ====================================================================
2 * License:
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * 3. The end-user documentation included with the redistribution,
17 * if any, must include the following acknowledgment:
18 * "This product includes software developed by
19 * Robert Half International (http://www.rhi.com/)."
20 * Alternately, this acknowledgment may appear in the software itself,
21 * if and wherever such third-party acknowledgments normally appear.
22 *
23 * 4. The names "Parc", "RHI", and "Robert Half International" must
24 * not be used to endorse or promote products derived from this
25 * software without prior written permission. For written
26 * permission, please contact pete.mckinstry@rhi.com.
27 *
28 * 5. Products derived from this software may not be called "PARC",
29 * nor may "PARC" appear in their name, without prior written
30 * permission of Robert Half International.
31 *
32 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
33 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
34 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
35 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
36 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
37 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
38 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
39 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
40 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
41 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
42 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43 * SUCH DAMAGE.
44 * ====================================================================
45 *
46 */
47 package com.rhi.architecture.parc;
48
49 import com.rhi.architecture.config.ConfigFacility;
50 import com.rhi.architecture.config.ConfigurationException;
51 import com.rhi.architecture.resource.ResourceContext;
52
53 import java.util.Properties;
54
55 /***
56 * AbstractError class. Provides basic error functionality common
57 * to all interface Errors.
58 *
59 * @author Pete McKinstry
60 * @copyright 2002, Robert Half Int'l., Inc. All rights reserved.
61 *
62 * @since 1.0
63 */
64 public abstract class AbstractError implements Error {
65
66 private ErrorType type;
67 private Exception exception;
68 private Record record;
69
70 private ConfigFacility configFacility = null;
71
72 /***
73 * default constructor.
74 */
75 public AbstractError() {
76 super();
77 }
78
79 /***
80 * default constructor.
81 * @param type
82 */
83 public AbstractError(ErrorType type) {
84 this.type = type;
85 }
86
87 /***
88 * Get the ErrorType object. The type should <bold>never</bold>
89 * be null as it drives behaviour in the Logger class.
90 *
91 * @since 1.0
92 * @return
93 */
94 public ErrorType getType() {
95 return this.type;
96 }
97 /***
98 * Set the ErrorType object
99 *
100 * @param type
101 * @since 1.0
102 */
103 public void setType(ErrorType type) {
104 this.type = type;
105 }
106
107 /***
108 * If the ErrorType has the printStackTrace() flag enabled, this method
109 * should return the exception object so that the stack trace can be
110 * written to the logfile. If there is no exception, or if the
111 * printStackTrace flag is disabled, the exception can be left unset.
112 * (null).
113 *
114 * @return Exception - the Exception that caused the error. Null if N/A.
115 *
116 * @since 1.0
117 */
118 public Exception getException() {
119 return this.exception;
120 }
121 /***
122 * Set the exception object being logged.
123 *
124 * @param ex - the Exception that caused the error.
125 *
126 * @since 1.0
127 */
128 public void setException(Exception ex) {
129 this.exception = ex;
130 }
131
132 /***
133 * Get the Record which has the error. The Logger uses this record
134 * to do one or more of the following:
135 * 1) Update the GIT record appropriately.
136 * 2) Add an appropriate error record to the interface error table.
137 * 3) set the appropriate tag values in the template error message.
138 * If the error is not a record level error, (e.g. DB connection
139 * cannot be established.), this method can return null.
140 *
141 * @return the Record associated w/ this error.
142 * @since 1.0
143 */
144 public Record getRecord() {
145 return this.record;
146 }
147 /***
148 * Sets the Record to which this Error belongs.
149 *
150 * @param record
151 *
152 * @since 1.0
153 */
154 public void setRecord(Record record) {
155 this.record = record;
156 }
157
158 /***
159 * Return all properties
160 * @return Properties
161 */
162 public Properties getProperties() {
163 Properties props = null;
164 try {
165 ConfigFacility config = getConfigFacility();
166 if (config != null) {
167 props = config.getProperties();
168 }
169 }
170 catch (ConfigurationException e) {
171 // do nothing.
172 }
173 return props;
174 }
175
176 /***
177 * Lookup a single property.
178 * @param name
179 * @return String
180 */
181 public String getProperty(String name) {
182 ConfigFacility config = getConfigFacility();
183 if (config != null) {
184 return config.getProperty(name);
185 }
186 return null;
187 }
188
189 /***
190 * Helper method.
191 * @return ConfigFacility
192 */
193 private ConfigFacility getConfigFacility() {
194 if (configFacility == null) {
195 ResourceContext ctx = new ResourceContext();
196 configFacility = (ConfigFacility) ctx.lookup(ConfigFacility.KEY);
197 }
198 return configFacility;
199 }
200
201 }
This page was automatically generated by Maven