1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  package org.waarp.openr66.context;
21  
22  import com.fasterxml.jackson.annotation.JsonValue;
23  import org.waarp.openr66.protocol.configuration.Messages;
24  
25  
26  
27  
28  
29  
30  public enum ErrorCode {
31    
32  
33  
34    InitOk('i'),
35    
36  
37  
38    PreProcessingOk('B'),
39    
40  
41  
42    TransferOk('X'),
43    
44  
45  
46    PostProcessingOk('P'),
47    
48  
49  
50    CompleteOk('O'),
51    
52  
53  
54    ConnectionImpossible('C'),
55    
56  
57  
58  
59  
60    ServerOverloaded('l'),
61    
62  
63  
64    BadAuthent('A'),
65    
66  
67  
68  
69    ExternalOp('E'),
70    
71  
72  
73    TransferError('T'),
74    
75  
76  
77    MD5Error('M'),
78    
79  
80  
81    Disconnection('D'),
82    
83  
84  
85    RemoteShutdown('r'),
86    
87  
88  
89    FinalOp('F'),
90    
91  
92  
93    Unimplemented('U'),
94    
95  
96  
97    Shutdown('S'),
98    
99  
100 
101   RemoteError('R'),
102   
103 
104 
105   Internal('I'),
106   
107 
108 
109   StoppedTransfer('H'),
110   
111 
112 
113   CanceledTransfer('K'),
114   
115 
116 
117   Warning('W'),
118   
119 
120 
121   Unknown('-'),
122   
123 
124 
125   QueryAlreadyFinished('Q'),
126   
127 
128 
129   QueryStillRunning('s'),
130   
131 
132 
133   NotKnownHost('N'),
134   
135 
136 
137   LoopSelfRequestedHost('L'),
138   
139 
140 
141   QueryRemotelyUnknown('u'),
142   
143 
144 
145   FileNotFound('f'),
146   
147 
148 
149   CommandNotFound('c'),
150   
151 
152 
153 
154   PassThroughMode('p'),
155   
156 
157 
158   Running('z'),
159   
160 
161 
162   IncorrectCommand('n'),
163   
164 
165 
166   FileNotAllowed('a'),
167   
168 
169 
170   SizeNotAllowed('d');
171 
172   
173 
174 
175   public final char code;
176 
177   ErrorCode(final char code) {
178     this.code = code;
179   }
180 
181   @JsonValue
182   public final String getJsonRepr() {
183     return code + "  ";
184   }
185 
186   public final String getCode() {
187     return String.valueOf(code);
188   }
189 
190   public final String getMesg() {
191     return Messages.getString("ErrorCode." + code);
192   }
193 
194   
195 
196 
197 
198 
199 
200 
201   public static ErrorCode getFromCode(final String code) {
202     if (code.isEmpty()) {
203       return Unknown;
204     }
205     switch (code.charAt(0)) {
206       case 'i':
207         return InitOk;
208       case 'B':
209         return PreProcessingOk;
210       case 'P':
211         return PostProcessingOk;
212       case 'X':
213         return TransferOk;
214       case 'O':
215         return CompleteOk;
216       case 'C':
217         return ConnectionImpossible;
218       case 'A':
219         return BadAuthent;
220       case 'E':
221         return ExternalOp;
222       case 'T':
223         return TransferError;
224       case 'M':
225         return MD5Error;
226       case 'D':
227         return Disconnection;
228       case 'r':
229         return RemoteShutdown;
230       case 'F':
231         return FinalOp;
232       case 'U':
233         return Unimplemented;
234       case 'S':
235         return Shutdown;
236       case 'R':
237         return RemoteError;
238       case 'I':
239         return Internal;
240       case 'H':
241         return StoppedTransfer;
242       case 'K':
243         return CanceledTransfer;
244       case 'W':
245         return Warning;
246       case '-':
247         return Unknown;
248       case 'Q':
249         return QueryAlreadyFinished;
250       case 's':
251         return QueryStillRunning;
252       case 'N':
253         return NotKnownHost;
254       case 'L':
255         return LoopSelfRequestedHost;
256       case 'u':
257         return QueryRemotelyUnknown;
258       case 'f':
259         return FileNotFound;
260       case 'z':
261         return Running;
262       case 'c':
263         return CommandNotFound;
264       case 'p':
265         return PassThroughMode;
266       case 'l':
267         return ServerOverloaded;
268       case 'n':
269         return IncorrectCommand;
270       case 'a':
271         return FileNotAllowed;
272       case 'd':
273         return SizeNotAllowed;
274       default:
275         final ErrorCode ecode;
276         try {
277           ecode = valueOf(code.trim());
278         } catch (final IllegalArgumentException e) {
279           return Unknown;
280         }
281         return ecode;
282     }
283   }
284 
285   public static boolean isErrorCode(final ErrorCode code) {
286     switch (code) {
287       case BadAuthent:
288       case CanceledTransfer:
289       case CommandNotFound:
290       case ConnectionImpossible:
291       case Disconnection:
292       case ExternalOp:
293       case FileNotFound:
294       case FinalOp:
295       case Internal:
296       case LoopSelfRequestedHost:
297       case MD5Error:
298       case NotKnownHost:
299       case PassThroughMode:
300       case QueryAlreadyFinished:
301       case QueryRemotelyUnknown:
302       case QueryStillRunning:
303       case RemoteError:
304       case RemoteShutdown:
305       case ServerOverloaded:
306       case Shutdown:
307       case StoppedTransfer:
308       case TransferError:
309       case Unimplemented:
310       case IncorrectCommand:
311       case FileNotAllowed:
312       case SizeNotAllowed:
313         return true;
314       case CompleteOk:
315       case InitOk:
316       case PostProcessingOk:
317       case PreProcessingOk:
318       case Running:
319       case TransferOk:
320       case Unknown:
321       case Warning:
322         return false;
323       default:
324         break;
325     }
326     return true;
327   }
328 }