summaryrefslogtreecommitdiffstats
path: root/pki/base/common/src/com/netscape/certsrv/request/RequestStatus.java
blob: ad3b91e784826f0938da784ca716b32d1dd5063c (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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
// --- BEGIN COPYRIGHT BLOCK ---
// 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; version 2 of the License.
//
// 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.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
// (C) 2007 Red Hat, Inc.
// All rights reserved.
// --- END COPYRIGHT BLOCK ---
package com.netscape.certsrv.request;


/**
 * The RequestStatus class represents the current state of a request
 * in a request queue.  The state of the request changes as actions
 * are performed on it.
 *
 * The request is created in the BEGIN state, then general progresses
 * through the PENDING, APPROVED, SVC_PENDING, and COMPLETE states.
 * Some requests may bypass the PENDING state if no agent action is
 * required.
 *
 * Requests may be CANCELED (not implemented) or REJECTED.  These are
 * error conditions, and usually result because the request was invalid
 * or was not approved by an agent.
 *
 * @version $Revision$ $Date$
 */
public final class RequestStatus {
    public static String BEGIN_STRING = "begin";
    public static String PENDING_STRING = "pending";
    public static String APPROVED_STRING = "approved";
    public static String SVC_PENDING_STRING = "svc_pending";
    public static String CANCELED_STRING = "canceled";
    public static String REJECTED_STRING = "rejected";
    public static String COMPLETE_STRING = "complete";

    /**
     * The initial state of a request. Requests in this state have not
     * been review by policy.
     *
     * While in this state the source of the request (usually the servlet,
     * but it could be some other protocol module, such as email)
     * should populate the request with data need to service it.
     */
    public static RequestStatus BEGIN = new RequestStatus(BEGIN_STRING);

    /**
     * The state of a request that is waiting for action by an agent.
     * When the agent approves or rejects the request, process will
     * continue as appropriate.
     *
     * In this state there may be PolicyMessages present that indicate
     * the reason for the pending status.
     */
    public static RequestStatus PENDING = new RequestStatus(PENDING_STRING);

    /**
     * The state of a request that has been approved by an agent, or
     * automatically by the policy engine, but have not been successfully
     * transmitted to the service module.
     *
     * These requests are resent to the service during the recovery
     * process that runs at server startup.
     */
    public static RequestStatus APPROVED = new RequestStatus(APPROVED_STRING);

    /**
     * The state of a request that has been sent to the service, but
     * has not been fully processed.  The service will invoke the
     * serviceComplete() method to cause processing to continue.
     */
    public static RequestStatus SVC_PENDING =
        new RequestStatus(SVC_PENDING_STRING);

    /**
     * Not implemented.  This is intended to be a final state that is
     * reached when a request is removed from the processing queue without
     * normal notification occurring.  (see REJECTED)
     */
    public static RequestStatus CANCELED = new RequestStatus(CANCELED_STRING);

    /**
     * The state of a request after it is rejected.  When a request is
     * rejected, the notifier is called prior to making the finl status
     * change.
     *
     * Rejected requests may have PolicyMessages indicating the reason for
     * the rejection, or AgentMessages, which allow the agent to give
     * reasons for the action.
     */
    public static RequestStatus REJECTED = new RequestStatus(REJECTED_STRING);

    /**
     * The normal final state of a request.  The completion status attribute
     * gives other information about the request.  The request is not
     * necessarily successful, but may indicated that service processing
     * did not succeed.
     */
    public static RequestStatus COMPLETE = new RequestStatus(COMPLETE_STRING);

    /**
     * Converts a string name for a request status into the
     * request status enum object.
     * <p>
     * @param s
     *    The string representation of the state.
     * @return
     *    request status
     */
    public static RequestStatus fromString(String s) {
        if (s.equals(BEGIN_STRING)) return BEGIN;
        if (s.equals(PENDING_STRING)) return PENDING;
        if (s.equals(APPROVED_STRING)) return APPROVED;
        if (s.equals(SVC_PENDING_STRING)) return SVC_PENDING;
        if (s.equals(CANCELED_STRING)) return CANCELED;
        if (s.equals(REJECTED_STRING)) return REJECTED;
        if (s.equals(COMPLETE_STRING)) return COMPLETE;

        return null;
    }

    /**
     * Returns the string form of the RequestStatus, which may be used
     * to record the status in a database.
	 *
     * @return request status
     */
    public String toString() {
        return mString;
    }
 
    /**
     * Class constructor. Creates request status from the string.
	 *
     * @param string string describing request status
     */
    private RequestStatus(String string) {
        mString = string;
    }

    private String mString;

    /**
     * Compares request status with specified string.
	 *
     * @param string string describing request status
     */
    public boolean equals(String string) {
        if (string.equals(mString)) return true;
        else return false;
    }
  
    /**
     * Compares current request status with request status.
	 *
     * @param rs request status
     */
    public boolean equals(RequestStatus rs) {
        if (mString.equals(rs.mString)) return true;
        else return false;
    }
}