1 //*******************************************************************
2 //
3 // License:  See top level LICENSE.txt file.
4 //
5 // Description:
6 //
7 // Contains class definition with common error codes and methods to go
8 // from code to string and string to code.
9 //
10 //*************************************************************************
11 // $Id: ossimErrorCodes.cpp 9963 2006-11-28 21:11:01Z gpotts $
12 
13 #include <ossim/base/ossimErrorCodes.h>
14 #include <ossim/base/ossimString.h>
15 
16 const ossimErrorCode ossimErrorCodes::OSSIM_OK                   = 0;
17 const ossimErrorCode ossimErrorCodes::OSSIM_NO_ERROR             = 0;
18 const ossimErrorCode ossimErrorCodes::OSSIM_WARNING              = -1;
19 const ossimErrorCode ossimErrorCodes::OSSIM_ERROR                = 1;
20 const ossimErrorCode ossimErrorCodes::OSSIM_ERROR_STD_PARALLEL_1 = 2;
21 const ossimErrorCode ossimErrorCodes::OSSIM_LAT_ERROR            = 3;
22 const ossimErrorCode ossimErrorCodes::OSSIM_LON_ERROR            = 4;
23 const ossimErrorCode ossimErrorCodes::OSSIM_NORTHING_ERROR       = 5;
24 const ossimErrorCode ossimErrorCodes::OSSIM_ORIGIN_LAT_ERROR     = 6;
25 const ossimErrorCode ossimErrorCodes::OSSIM_CENT_MER_ERROR       = 7;
26 const ossimErrorCode ossimErrorCodes::OSSIM_A_ERROR              = 8;
27 const ossimErrorCode ossimErrorCodes::OSSIM_B_ERROR              = 9;
28 const ossimErrorCode ossimErrorCodes::OSSIM_A_LESS_B_ERROR       = 10;
29 const ossimErrorCode ossimErrorCodes::OSSIM_FIRST_STDP_ERROR     = 11;
30 const ossimErrorCode ossimErrorCodes::OSSIM_SEC_STDP_ERROR       = 12;
31 const ossimErrorCode ossimErrorCodes::OSSIM_FIRST_SECOND_ERROR   = 13;
32 const ossimErrorCode ossimErrorCodes::OSSIM_HEMISPHERE_ERROR     = 14;
33 const ossimErrorCode ossimErrorCodes::OSSIM_EASTING_ERROR        = 15;
34 const ossimErrorCode ossimErrorCodes::OSSIM_RADIUS_ERROR         = 16;
35 const ossimErrorCode ossimErrorCodes::OSSIM_ORIGIN_LON_ERROR     = 17;
36 const ossimErrorCode ossimErrorCodes::OSSIM_ORIENTATION_ERROR    = 18;
37 const ossimErrorCode ossimErrorCodes::OSSIM_SCALE_FACTOR_ERROR   = 19;
38 const ossimErrorCode ossimErrorCodes::OSSIM_ZONE_ERROR           = 20;
39 const ossimErrorCode ossimErrorCodes::OSSIM_ZONE_OVERRIDE_ERROR  = 21;
40 const ossimErrorCode ossimErrorCodes::OSSIM_INVALID_FILE_ERROR   = 22;
41 const ossimErrorCode ossimErrorCodes::OSSIM_OPEN_FILE_ERROR      = 23;
42 const ossimErrorCode ossimErrorCodes::OSSIM_WRITE_FILE_ERROR     = 24;
43 const ossimErrorCode ossimErrorCodes::OSSIM_ERROR_UNKNOWN        = OSSIM_INT_NAN;
44 
45 ossimErrorCodes* ossimErrorCodes::theInstance = NULL;
46 
ossimErrorCodes()47 ossimErrorCodes::ossimErrorCodes()
48 {
49 }
50 
ossimErrorCodes(const ossimErrorCodes &)51 ossimErrorCodes::ossimErrorCodes(const ossimErrorCodes& /* rhs */ )
52 {
53 }
54 
operator =(const ossimErrorCodes &)55 const ossimErrorCodes& ossimErrorCodes::operator=(const ossimErrorCodes&)
56 {
57   return *this;
58 }
59 
~ossimErrorCodes()60 ossimErrorCodes::~ossimErrorCodes()
61 {
62    if (theInstance)
63    {
64       delete theInstance;
65       theInstance = NULL;
66    }
67 }
68 
instance()69 ossimErrorCodes* ossimErrorCodes::instance()
70 {
71    if (!theInstance)
72    {
73       theInstance = new ossimErrorCodes();
74    }
75 
76    return theInstance;
77 }
78 
getErrorCode(const ossimString & error_string) const79 ossimErrorCode ossimErrorCodes::getErrorCode(const ossimString& error_string) const
80 {
81    // Upcase...
82    ossimString str;
83    str = str.upcase(error_string);
84 
85    if (str == "OSSIM_OK")
86    {
87       return ossimErrorCodes::OSSIM_OK;
88    }
89    else if (str == "OSSIM_NO_ERROR")
90    {
91       return ossimErrorCodes::OSSIM_NO_ERROR;
92    }
93    else if (str == "OSSIM_WARNING")
94    {
95       return ossimErrorCodes::OSSIM_WARNING;
96    }
97    else if (str == "OSSIM_ERROR")
98    {
99       return ossimErrorCodes::OSSIM_ERROR;
100    }
101    else if (str == "OSSIM_ERROR_STD_PARALLEL_1")
102    {
103       return ossimErrorCodes::OSSIM_ERROR_STD_PARALLEL_1;
104    }
105    else if (str == "OSSIM_LAT_ERROR")
106    {
107       return ossimErrorCodes::OSSIM_LAT_ERROR;
108    }
109    else if (str == "OSSIM_LON_ERROR")
110    {
111       return ossimErrorCodes::OSSIM_LON_ERROR;
112    }
113    else if (str == "OSSIM_NORTHING_ERROR")
114    {
115       return ossimErrorCodes::OSSIM_NORTHING_ERROR;
116    }
117    else if (str == "OSSIM_ORIGIN_LAT_ERROR")
118    {
119       return ossimErrorCodes::OSSIM_ORIGIN_LAT_ERROR;
120    }
121    else if (str == "OSSIM_CENT_MER_ERROR")
122    {
123       return ossimErrorCodes::OSSIM_CENT_MER_ERROR;
124    }
125    else if (str == "OSSIM_A_ERROR")
126    {
127       return ossimErrorCodes::OSSIM_B_ERROR;
128    }
129    else if (str == "OSSIM_A_LESS_B_ERROR")
130    {
131       return ossimErrorCodes::OSSIM_A_LESS_B_ERROR;
132    }
133    else if (str == "OSSIM_FIRST_STDP_ERROR")
134    {
135       return ossimErrorCodes::OSSIM_FIRST_STDP_ERROR;
136    }
137    else if (str == "OSSIM_SEC_STDP_ERROR")
138    {
139       return ossimErrorCodes::OSSIM_SEC_STDP_ERROR;
140    }
141    else if (str == "OSSIM_FIRST_SECOND_ERROR")
142    {
143       return ossimErrorCodes::OSSIM_FIRST_SECOND_ERROR;
144    }
145    else if (str == "OSSIM_HEMISPHERE_ERROR")
146    {
147       return ossimErrorCodes::OSSIM_HEMISPHERE_ERROR;
148    }
149    else if (str == "OSSIM_EASTING_ERROR")
150    {
151       return ossimErrorCodes::OSSIM_EASTING_ERROR;
152    }
153    else if (str == "OSSIM_RADIUS_ERROR")
154    {
155       return ossimErrorCodes::OSSIM_RADIUS_ERROR;
156    }
157    else if (str == "OSSIM_ORIGIN_LON_ERROR")
158    {
159       return ossimErrorCodes::OSSIM_ORIGIN_LON_ERROR;
160    }
161    else if (str == "OSSIM_ORIENTATION_ERROR")
162    {
163       return ossimErrorCodes::OSSIM_ORIENTATION_ERROR;
164    }
165    else if (str == "OSSIM_SCALE_FACTOR_ERROR")
166    {
167       return ossimErrorCodes::OSSIM_SCALE_FACTOR_ERROR;
168    }
169    else if (str == "OSSIM_ZONE_ERROR")
170    {
171       return ossimErrorCodes::OSSIM_ZONE_ERROR;
172    }
173    else if (str == "OSSIM_ZONE_OVERRIDE_ERROR")
174    {
175       return ossimErrorCodes::OSSIM_ZONE_OVERRIDE_ERROR;
176    }
177    else if (str == "OSSIM_INVALID_FILE_ERROR")
178    {
179       return ossimErrorCodes::OSSIM_INVALID_FILE_ERROR;
180    }
181    else if (str == "OSSIM_OPEN_FILE_ERROR")
182    {
183       return ossimErrorCodes::OSSIM_OPEN_FILE_ERROR;
184    }
185    else if (str == "OSSIM_WRITE_FILE_ERROR")
186    {
187       return ossimErrorCodes::OSSIM_WRITE_FILE_ERROR;
188    }
189 
190    return OSSIM_ERROR_UNKNOWN;
191 }
192 
getErrorString(ossimErrorCode error_code) const193 ossimString ossimErrorCodes::getErrorString(ossimErrorCode error_code) const
194 {
195    if(error_code == OSSIM_OK)
196    {
197       // No difference between OSSIM_NO_ERROR and OSSIM_OK.
198       return ossimString("OSSIM_OK");
199    }
200    if(error_code == OSSIM_WARNING)
201    {
202       return ossimString("OSSIM_WARNING");
203    }
204    if(error_code == OSSIM_ERROR)
205    {
206       return ossimString("OSSIM_ERROR");
207    }
208    if(error_code == OSSIM_ERROR_STD_PARALLEL_1)
209    {
210       return ossimString("OSSIM_ERROR_STD_PARALLEL_1");
211    }
212    if(error_code == OSSIM_LAT_ERROR)
213    {
214       return ossimString("OSSIM_LAT_ERROR");
215    }
216    if(error_code == OSSIM_LON_ERROR)
217    {
218       return ossimString("OSSIM_LON_ERROR");
219    }
220    if(error_code == OSSIM_NORTHING_ERROR)
221    {
222       return ossimString("OSSIM_NORTHING_ERROR");
223    }
224    if(error_code == OSSIM_ORIGIN_LAT_ERROR)
225    {
226       return ossimString("OSSIM_ORIGIN_LAT_ERROR");
227    }
228    if(error_code == OSSIM_CENT_MER_ERROR)
229    {
230       return ossimString("OSSIM_CENT_MER_ERROR");
231    }
232    if(error_code == OSSIM_A_ERROR)
233    {
234       return ossimString("OSSIM_A_ERROR");
235    }
236    if(error_code == OSSIM_B_ERROR)
237    {
238       return ossimString("OSSIM_B_ERROR");
239    }
240    if(error_code == OSSIM_A_LESS_B_ERROR)
241    {
242       return ossimString("OSSIM_A_LESS_B_ERROR");
243    }
244    if(error_code == OSSIM_FIRST_STDP_ERROR)
245    {
246       return ossimString("OSSIM_FIRST_STDP_ERROR");
247    }
248    if(error_code == OSSIM_SEC_STDP_ERROR)
249    {
250       return ossimString("OSSIM_SEC_STDP_ERROR");
251    }
252    if(error_code == OSSIM_FIRST_SECOND_ERROR)
253    {
254       return ossimString("OSSIM_FIRST_SECOND_ERROR");
255    }
256    if(error_code == OSSIM_HEMISPHERE_ERROR)
257    {
258       return ossimString("OSSIM_HEMISPHERE_ERROR");
259    }
260    if(error_code == OSSIM_EASTING_ERROR)
261    {
262       return ossimString("OSSIM_EASTING_ERROR");
263    }
264    if(error_code == OSSIM_RADIUS_ERROR)
265    {
266       return ossimString("OSSIM_RADIUS_ERROR");
267    }
268    if(error_code == OSSIM_ORIGIN_LON_ERROR)
269    {
270       return ossimString("OSSIM_ORIGIN_LON_ERROR");
271    }
272    if(error_code == OSSIM_ORIENTATION_ERROR)
273    {
274       return ossimString("OSSIM_ORIENTATION_ERROR");
275    }
276    if(error_code == OSSIM_SCALE_FACTOR_ERROR)
277    {
278       return ossimString("OSSIM_SCALE_FACTOR_ERROR");
279    }
280    if(error_code == OSSIM_ZONE_ERROR)
281    {
282       return ossimString("OSSIM_ZONE_ERROR");
283    }
284    if(error_code == OSSIM_ZONE_OVERRIDE_ERROR)
285    {
286       return ossimString("OSSIM_ZONE_OVERRIDE_ERROR");
287    }
288    if(error_code == OSSIM_INVALID_FILE_ERROR)
289    {
290       return ossimString("OSSIM_INVALID_FILE_ERROR");
291    }
292    if(error_code == OSSIM_OPEN_FILE_ERROR)
293    {
294       return ossimString("OSSIM_OPEN_FILE_ERROR");
295    }
296    if(error_code == OSSIM_WRITE_FILE_ERROR)
297    {
298       return ossimString("OSSIM_WRITE_FILE_ERROR");
299    }
300 
301    return ossimString("OSSIM_ERROR_UNKNOWN");
302 }
303