View Javadoc

1   /*
2    * Copyright 2007 Sebastien Brunot (sbrunot@gmail.com)
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *   http://www.apache.org/licenses/LICENSE-2.0
9    *   
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package net.sourceforge.buildmonitor;
17  
18  import java.net.URI;
19  
20  /**
21   * Exception that signal an error that occurs during the monitoring of a build
22   * @author sbrunot
23   *
24   */
25  public class MonitoringException extends Exception
26  {
27  	/////////////////////////////
28  	// Constants
29  	/////////////////////////////
30  
31  	private static final long serialVersionUID = 1875572548525646573L;
32  
33  	/////////////////////////////
34  	// Instance attributes
35  	/////////////////////////////
36  
37  	/**
38  	 * Signal that the exception might be related to a bad option (parameter) of the monitor
39  	 */
40  	private boolean optionsRelated = false;
41  
42  	/**
43  	 * An URI that might be opened in the web browser by the end user in order to solve the problem
44  	 */
45  	private URI customRelatedURI = null;
46  	
47  	/////////////////////////////
48  	// Constructors
49  	/////////////////////////////
50  	
51  	/**
52  	 * Create a new instance of the exception not related to a bad option (user parameter) of the monitor.
53  	 * 
54  	 * @param theMessage the message that explains the exception
55  	 * @param theCause the cause of the exception
56  	 * @param theRelatedURI an URI that could be opened in a browser by the end user to resolve the problem.
57  	 */
58  	public MonitoringException(String theMessage, Throwable theCause, URI theRelatedURI)
59  	{
60  		super(theMessage, theCause);
61  		this.customRelatedURI = theRelatedURI;
62  	}
63  
64  	/**
65  	 * Create a new instance of the exception not related to a bad option (user parameter) of the monitor.
66  	 * 
67  	 * @param theMessage the message that explains the exception
68  	 * @param theRelatedURI an URI that could be opened in a browser by the end user to resolve the problem.
69  	 */
70  	public MonitoringException(String theMessage, URI theRelatedURI)
71  	{
72  		super(theMessage);
73  		this.customRelatedURI = theRelatedURI;
74  	}
75  
76  	/**
77  	 * Create a new instance of the exception not related to a bad option (user parameter) of the monitor.
78  	 * 
79  	 * @param theCause the cause of the exception
80  	 * @param theRelatedURI an URI that could be opened in a browser by the end user to resolve the problem.
81  	 */
82  	public MonitoringException(Throwable theCause, URI theRelatedURI)
83  	{
84  		super(theCause);
85  		this.customRelatedURI = theRelatedURI;
86  	}
87  
88  	/**
89  	 * Create a new instance of the exception.
90  	 * 
91  	 * @param theMessage the message that explains the exception
92  	 * @param theCause the cause of the exception
93  	 * @param isOptionsRelated a boolean that signal if the error is related to a bad
94  	 * option of the monitor
95  	 * @param theRelatedURI if isOptionsRelated is false, an URI that could be opened
96  	 * in a browser by the end user to resolve the problem.
97  	 */
98  	public MonitoringException(String theMessage, Throwable theCause, boolean isOptionsRelated, URI theRelatedURI)
99  	{
100 		super(theMessage, theCause);
101 		this.optionsRelated = isOptionsRelated;
102 		this.customRelatedURI = theRelatedURI;
103 	}
104 
105 	/**
106 	 * Create a new instance of the exception.
107 	 * 
108 	 * @param theMessage the message that explains the exception
109 	 * @param isOptionsRelated a boolean that signal if the error is related to a bad
110 	 * @param theRelatedURI if isOptionsRelated is false, an URI that could be opened
111 	 * in a browser by the end user to resolve the problem.
112 	 */
113 	public MonitoringException(String theMessage, boolean isOptionsRelated, URI theRelatedURI)
114 	{
115 		super(theMessage);
116 		this.optionsRelated = isOptionsRelated;
117 		this.customRelatedURI = theRelatedURI;
118 	}
119 
120 	/**
121 	 * Create a new instance of the exception.
122 	 * 
123 	 * @param theCause the cause of the exception
124 	 * @param isOptionsRelated a boolean that signal if the error is related to a bad
125 	 * @param theRelatedURI if isOptionsRelated is false, an URI that could be opened
126 	 * in a browser by the end user to resolve the problem.
127 	 */
128 	public MonitoringException(Throwable theCause, boolean isOptionsRelated, URI theRelatedURI)
129 	{
130 		super(theCause);
131 		this.optionsRelated = isOptionsRelated;
132 		this.customRelatedURI = theRelatedURI;
133 	}
134 
135 	/////////////////////////////////////
136 	// Getters
137 	/////////////////////////////////////
138 	
139 	/**
140 	 * {@inheritDoc}
141 	 */
142 	public String getMessage()
143 	{
144 		// If the monitoring exception contains another monitoring exception, return the message of
145 		// the contained monitoring exception
146 		if (getCause() != null && getCause() instanceof MonitoringException)
147 		{
148 			return getCause().getMessage();
149 		}
150 		else
151 		{
152 			return super.getMessage();
153 		}
154 	}
155 	
156 	/**
157 	 * Is this error related to a bad option (user parameter) of the monitor ?
158 	 * @return true if the error is related to a bad option, false otherwise
159 	 */
160 	public boolean isOptionsRelated()
161 	{
162 		return this.optionsRelated;
163 	}
164 	
165 	/**
166 	 * Get an URI that can be openend by the end user to resolve the problem (null if
167 	 * not available)
168 	 * @return an URI that can be openend by the end user to resolve the problem, or null
169 	 */
170 	public URI getRelatedURI()
171 	{
172 		return this.customRelatedURI;
173 	}
174 }