aboutsummaryrefslogtreecommitdiff
path: root/src/com/wilko/jaim/ErrorTocResponse.java
blob: 1ff8188432baefc108ac99faacdd26121030f07c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*
 *   (C) 2002 Paul Wilkinson  wilko@users.sourceforge.net
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

/*
 * ErrorTocResponse.java
 *
 * Created on 4 May 2002, 14:52
 */

package com.wilko.jaim;

import java.util.MissingResourceException;

/**
 * This TOC response is sent to a {@link JaimEventListener } when an error message is received from the TOC server
 *
 * @author paulw
 * @version $Revision: 1.7 $
 */
public class ErrorTocResponse extends TocResponse implements TocResponseHandler {

    public static final String RESPONSE_TYPE = "ERROR";
    int errorCode;
    String errorText;

    /**
     * Creates new ErrorTocResponse
     */
    public ErrorTocResponse() {
        errorCode = 0;
        errorText = "";
    }

    /**
     * Obtain the error message that corresponds to the specified error code
     *
     * @param code The error code
     * @return The error text
     */
    static public String getErrorDescription(int code) {
        try {
            return (java.util.ResourceBundle.getBundle("com/wilko/jaim/TocErrorDescriptions").getString(Integer.toString(code)));
        } catch (MissingResourceException e) {
            return ("Unable to locate error description:" + e);
        }
    }

    /**
     * Parse the error response string sent by the TOC server
     *
     * @param str The error response string
     */
    public TocResponse parseString(String str) {
        ErrorTocResponse tr = new ErrorTocResponse();
        tr.doParse(str);
        return (tr);
    }

    private void doParse(String str) {

        cmd = str;
        int colonPos = str.indexOf(':');
        if (colonPos != -1) {
            str = str.substring(colonPos + 1);
            colonPos = str.indexOf(':');
            if (colonPos != -1) {
                errorCode = Integer.parseInt(str.substring(0, colonPos));
                errorText = str.substring(colonPos + 1);
            } else {
                errorCode = Integer.parseInt(str);
            }
        }

    }

    /**
     * Obtain the error code for this response
     *
     * @return The error code
     */
    public int getErrorCode() {
        return (errorCode);
    }

    /**
     * Get the error text (if any) associated with this error response
     *
     * @return The error text
     */
    public String getErrorText() {
        return (errorText);
    }

    /**
     * Obtain the error message that corresponds to this error.
     *
     * @return The error text with any applicable error argument text inserted
     */
    public String getErrorDescription() {
        try {
            StringBuffer desc = new StringBuffer(java.util.ResourceBundle.getBundle("com/wilko/jaim/TocErrorDescriptions").getString(Integer.toString(errorCode)));
            String sDesc = desc.toString();
            int argpos = sDesc.indexOf("%s");
            if (argpos != -1) {
                desc.replace(argpos, argpos + 1, errorText);
            }
            return (desc.toString());

        } catch (MissingResourceException e) {
            return ("Unable to locate error description:" + e);
        }
    }

    public String getResponseType() {
        return RESPONSE_TYPE;
    }

    /**
     * Returns true if this response handler can handle the specified response.
     *
     * @param Response - the response string from TOC.  This is the part of the response before the first ':'
     * @return true if the response can be handled
     */
    public boolean canHandle(String Response) {
        return (Response.equalsIgnoreCase(RESPONSE_TYPE));
    }

}