001 /*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License"). You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 * Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 * Copyright 2006-2008 Sun Microsystems, Inc.
026 */
027 package org.opends.server.admin.client.cli;
028 import org.opends.messages.Message;
029
030 import static org.opends.messages.AdminMessages.*;
031
032
033 import java.util.HashMap;
034
035 import org.opends.admin.ads.ADSContextException.ErrorType;
036
037 /**
038 *
039 * The enumeration which defines the return code.
040 *
041 */
042 public enum DsFrameworkCliReturnCode
043 {
044 /**
045 * successful.
046 */
047 SUCCESSFUL(0, INFO_ADMIN_SUCCESSFUL.get()),
048
049 /**
050 * successful but no operation was performed.
051 */
052 SUCCESSFUL_NOP(SUCCESSFUL.getReturnCode(), INFO_ADMIN_SUCCESSFUL_NOP.get()),
053
054 /**
055 * Unable to initialize arguments.
056 */
057 CANNOT_INITIALIZE_ARGS(1, ERR_ADMIN_NO_MESSAGE.get()),
058
059 /**
060 * Cannot parse arguments.
061 */
062 ERROR_PARSING_ARGS(2, ERR_ADMIN_NO_MESSAGE.get()),
063 /**
064 * Return code: Cannot get the connection to the ADS.
065 */
066 CANNOT_CONNECT_TO_ADS(3, ERR_ADMIN_NO_MESSAGE.get()),
067
068 /**
069 * The host name is missing.
070 */
071 MISSING_HOSTNAME(4, ERR_ADMIN_MISSING_HOSTNAME.get()),
072
073 /**
074 * The host name is not valid.
075 */
076 NOVALID_HOSTNAME(5, ERR_ADMIN_NOVALID_HOSTNAME.get()),
077
078 /**
079 * The installation path is missing.
080 */
081 MISSING_IPATH(6, ERR_ADMIN_MISSING_IPATH.get()),
082
083 /**
084 * The installation path is not valid.
085 */
086 NOVALID_IPATH(7, ERR_ADMIN_NOVALID_IPATH.get()),
087
088 /**
089 * An access permission error.
090 */
091 ACCESS_PERMISSION(8, ERR_ADMIN_ACCESS_PERMISSION.get()),
092
093 /**
094 * The entity is already registered.
095 */
096 ALREADY_REGISTERED(9, ERR_ADMIN_ALREADY_REGISTERED.get()),
097
098 /**
099 * The installation is broken.
100 */
101 BROKEN_INSTALL(10, ERR_ADMIN_BROKEN_INSTALL.get()),
102
103 /**
104 * The entity is not yet registered.
105 */
106 NOT_YET_REGISTERED(11, ERR_ADMIN_NOT_YET_REGISTERED.get()),
107
108 /**
109 * The port is missing.
110 */
111 MISSING_PORT(12, ERR_ADMIN_MISSING_PORT.get()),
112
113 /**
114 * The port is not valid.
115 */
116 NOVALID_PORT(13, ERR_ADMIN_NOVALID_PORT.get()),
117
118 /**
119 * The name is missing.
120 */
121 MISSING_NAME(14, ERR_ADMIN_MISSING_NAME.get()),
122
123 /**
124 * The administration UID is missing.
125 */
126 MISSING_ADMIN_UID(15, ERR_ADMIN_MISSING_ADMIN_UID.get()),
127
128 /**
129 * The administrator password is missing.
130 */
131 MISSING_ADMIN_PASSWORD(16, ERR_ADMIN_MISSING_ADMIN_PASSWORD.get()),
132
133 /**
134 * Unexpected error (potential bug).
135 */
136 ERROR_UNEXPECTED(17, ERR_ADMIN_ERROR_UNEXPECTED.get()),
137
138 /**
139 * Unexpected error (potential bug).
140 */
141 CONFLICTING_ARGS(18, ERR_ADMIN_NO_MESSAGE.get()),
142
143 /**
144 * The server entity is not yet registered.
145 */
146 SERVER_NOT_REGISTERED(19, ERR_ADMIN_SERVER_NOT_REGISTERED.get());
147
148 // The retunCodevalue of the value.
149 private final int returnCode;
150
151 // The message id to be used of the value.
152 private final Message message;
153
154 // Private constructor.
155 private DsFrameworkCliReturnCode(int returnCode, Message message)
156 {
157 this.returnCode = returnCode;
158 this.message = message;
159 }
160
161 /**
162 * Get the corresponding message.
163 *
164 * @return The corresponding message.
165 */
166 public Message getMessage()
167 {
168 return message;
169 }
170
171 /**
172 * Get the corresponding return code value.
173 *
174 * @return The corresponding return code value.
175 */
176 public int getReturnCode()
177 {
178 return returnCode;
179 }
180
181 /**
182 * Indicate whenever the association between ADS errors and return
183 * has been done.
184 */
185 private static boolean initialized = false ;
186
187 /**
188 * The association map between ADS Error and Return code.
189 */
190 private static HashMap<ErrorType, DsFrameworkCliReturnCode>
191 adsErrorToReturnCode = new HashMap<ErrorType, DsFrameworkCliReturnCode>();
192
193 /**
194 * Associates a set of ADS errors to return code.
195 */
196 private static void registerAdsError()
197 {
198 adsErrorToReturnCode.put(ErrorType.MISSING_HOSTNAME,
199 MISSING_HOSTNAME);
200 adsErrorToReturnCode.put(ErrorType.NOVALID_HOSTNAME,
201 NOVALID_HOSTNAME);
202 adsErrorToReturnCode.put(ErrorType.MISSING_IPATH,
203 MISSING_IPATH);
204 adsErrorToReturnCode.put(ErrorType.NOVALID_IPATH,
205 NOVALID_IPATH);
206 adsErrorToReturnCode.put(ErrorType.ACCESS_PERMISSION,
207 ACCESS_PERMISSION);
208 adsErrorToReturnCode.put(ErrorType.ALREADY_REGISTERED,
209 ALREADY_REGISTERED);
210 adsErrorToReturnCode.put(ErrorType.BROKEN_INSTALL,
211 BROKEN_INSTALL);
212 adsErrorToReturnCode.put(ErrorType.UNEXPECTED_ADS_BACKEND_TYPE,
213 BROKEN_INSTALL);
214 adsErrorToReturnCode.put(ErrorType.NOT_YET_REGISTERED,
215 NOT_YET_REGISTERED);
216 adsErrorToReturnCode.put(ErrorType.MISSING_PORT,
217 MISSING_PORT);
218 adsErrorToReturnCode.put(ErrorType.NOVALID_PORT,
219 NOVALID_PORT);
220 adsErrorToReturnCode.put(ErrorType.MISSING_NAME,
221 MISSING_NAME);
222 adsErrorToReturnCode.put(ErrorType.MISSING_ADMIN_UID,
223 MISSING_ADMIN_UID);
224 adsErrorToReturnCode.put(ErrorType.MISSING_ADMIN_PASSWORD,
225 MISSING_ADMIN_PASSWORD);
226 adsErrorToReturnCode.put(ErrorType.ERROR_UNEXPECTED,
227 ERROR_UNEXPECTED);
228 }
229
230 /**
231 * Get ReturnCode from an ADS error.
232 * @param error The ADS error
233 * @return the ReturnCode associated to the ADS error.
234 */
235 public static DsFrameworkCliReturnCode
236 getReturncodeFromAdsError(ErrorType error)
237 {
238 if (! initialized)
239 {
240 registerAdsError();
241 initialized = true ;
242 }
243 return adsErrorToReturnCode.get(error);
244 }
245 }
246
247