🥅 Throw specialized exception for protocol errors
[jFCPlib.git] / src / main / java / net / pterodactylus / fcp / highlevel / FcpProtocolException.java
1 /*
2  * jFCPlib - FcpProtocolException.java - Copyright Â© 2020 David â€˜Bombe’ Roden
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 package net.pterodactylus.fcp.highlevel;
19
20 import net.pterodactylus.fcp.ProtocolError;
21
22 /**
23  * Specialized FCP exception that signals a {@link ProtocolError}.
24  */
25 public class FcpProtocolException extends FcpException {
26
27         private final int code;
28         private final String codeDescription;
29         private final String extraDescription;
30         private final boolean fatal;
31
32         public FcpProtocolException(int code, String codeDescription, String extraDescription, boolean fatal) {
33                 this.code = code;
34                 this.codeDescription = codeDescription;
35                 this.extraDescription = extraDescription;
36                 this.fatal = fatal;
37         }
38
39         public int getCode() {
40                 return code;
41         }
42
43         public String getCodeDescription() {
44                 return codeDescription;
45         }
46
47         public String getExtraDescription() {
48                 return extraDescription;
49         }
50
51         public boolean isFatal() {
52                 return fatal;
53         }
54
55         public static FcpProtocolException from(ProtocolError protocolError) {
56                 return new FcpProtocolException(protocolError.getCode(), protocolError.getCodeDescription(),
57                         protocolError.getExtraDescription(), protocolError.isFatal());
58         }
59
60 }