001 /*
002 * Copyright 2012-2015 UnboundID Corp.
003 * All Rights Reserved.
004 */
005 /*
006 * Copyright (C) 2015 UnboundID Corp.
007 *
008 * This program is free software; you can redistribute it and/or modify
009 * it under the terms of the GNU General Public License (GPLv2 only)
010 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
011 * as published by the Free Software Foundation.
012 *
013 * This program is distributed in the hope that it will be useful,
014 * but WITHOUT ANY WARRANTY; without even the implied warranty of
015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016 * GNU General Public License for more details.
017 *
018 * You should have received a copy of the GNU General Public License
019 * along with this program; if not, see <http://www.gnu.org/licenses>.
020 */
021 package com.unboundid.ldap.sdk.unboundidds.logs;
022
023
024
025 import com.unboundid.util.NotExtensible;
026 import com.unboundid.util.NotMutable;
027 import com.unboundid.util.ThreadSafety;
028 import com.unboundid.util.ThreadSafetyLevel;
029
030
031
032 /**
033 * <BLOCKQUOTE>
034 * <B>NOTE:</B> This class is part of the Commercial Edition of the UnboundID
035 * LDAP SDK for Java. It is not available for use in applications that
036 * include only the Standard Edition of the LDAP SDK, and is not supported for
037 * use in conjunction with non-UnboundID products.
038 * </BLOCKQUOTE>
039 * This class provides a data structure that holds information about a log
040 * message that may appear in the Directory Server access log about a the
041 * beginning of an entry rebalancing operation.
042 */
043 @NotMutable()
044 @NotExtensible()
045 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
046 public class EntryRebalancingRequestAccessLogMessage
047 extends AccessLogMessage
048 {
049 /**
050 * The serial version UID for this serializable class.
051 */
052 private static final long serialVersionUID = -7183383454122018479L;
053
054
055
056 // The maximum number of entries to include in the subtree move.
057 private final Integer sizeLimit;
058
059 // The unique identifier assigned to the entry rebalancing operation.
060 private final Long rebalancingOperationID;
061
062 // The connection ID of the client connection that performed an operation to
063 // trigger the entry rebalancing operation.
064 private final Long triggeringConnectionID;
065
066 // The operation ID of the operation that triggered the entry rebalancing
067 // operation.
068 private final Long triggeringOperationID;
069
070 // The name of the backend set containing the subtree to move.
071 private final String sourceBackendSetName;
072
073 // The address and port of the server in the source backend set from which
074 // the entries are being migrated.
075 private final String sourceBackendServer;
076
077 // The base DN of the subtree being moved from one backend set to another.
078 private final String subtreeBaseDN;
079
080 // The name of the backend set into which the subtree will be migrated.
081 private final String targetBackendSetName;
082
083 // The address and port of the server of the server in the target backend set
084 // into which the entries are being migrated.
085 private final String targetBackendServer;
086
087
088
089 /**
090 * Creates a new entry rebalancing request access log message from the
091 * provided message string.
092 *
093 * @param s The string to be parsed as an entry rebalancing request access
094 * log message.
095 *
096 * @throws LogException If the provided string cannot be parsed as a valid
097 * log message.
098 */
099 public EntryRebalancingRequestAccessLogMessage(final String s)
100 throws LogException
101 {
102 this(new LogMessage(s));
103 }
104
105
106
107 /**
108 * Creates a new entry rebalancing request access log message from the
109 * provided log message.
110 *
111 * @param m The log message to be parsed as an entry rebalancing request
112 * access log message.
113 */
114 public EntryRebalancingRequestAccessLogMessage(final LogMessage m)
115 {
116 super(m);
117
118 rebalancingOperationID = getNamedValueAsLong("rebalancingOp");
119 sizeLimit = getNamedValueAsInteger("sizeLimit");
120 sourceBackendServer = getNamedValue("sourceServer");
121 sourceBackendSetName = getNamedValue("sourceBackendSet");
122 subtreeBaseDN = getNamedValue("base");
123 targetBackendServer = getNamedValue("targetServer");
124 targetBackendSetName = getNamedValue("targetBackendSet");
125 triggeringConnectionID = getNamedValueAsLong("triggeredByConn");
126 triggeringOperationID = getNamedValueAsLong("triggeredByOp");
127 }
128
129
130
131 /**
132 * Retrieves the unique identifier assigned to the entry rebalancing
133 * operation.
134 *
135 * @return The unique identifier assigned to the entry rebalancing operation,
136 * or {@code null} if it is not included in the log message.
137 */
138 public final Long getRebalancingOperationID()
139 {
140 return rebalancingOperationID;
141 }
142
143
144
145 /**
146 * Retrieves the connection ID for the connection that performed an operation
147 * to trigger the entry rebalancing operation.
148 *
149 * @return Retrieves the connection ID for the connection that performed an
150 * operation to trigger the entry rebalancing operation, or
151 * {@code null} if it is not included in the log message.
152 */
153 public final Long getTriggeringConnectionID()
154 {
155 return triggeringConnectionID;
156 }
157
158
159
160 /**
161 * Retrieves the operation ID for the operation that triggered the entry
162 * rebalancing operation.
163 *
164 * @return Retrieves the operation ID for the operation that triggered the
165 * entry rebalancing operation, or {@code null} if it is not included
166 * in the log message.
167 */
168 public final Long getTriggeringOperationID()
169 {
170 return triggeringOperationID;
171 }
172
173
174
175 /**
176 * Retrieves the base DN of the subtree that will be migrated during the entry
177 * rebalancing operation.
178 *
179 * @return The base DN of the subtree that will be migrated during the entry
180 * rebalancing operation, or {@code null} if it is not included in
181 * the log message.
182 */
183 public final String getSubtreeBaseDN()
184 {
185 return subtreeBaseDN;
186 }
187
188
189
190 /**
191 * Retrieves the maximum number of entries that may be contained in the
192 * subtree for it to be successfully migrated.
193 *
194 * @return The maximum number of entries that may be contained in the subtree
195 * for it to be successfully migrated, or {@code null} if it is not
196 * included in the log message.
197 */
198 public final Integer getSizeLimit()
199 {
200 return sizeLimit;
201 }
202
203
204
205 /**
206 * Retrieves the name of the backend set containing the subtree to be
207 * migrated.
208 *
209 * @return The name of the backend set containing the subtree to be migrated,
210 * or {@code null} if it is not included in the log message.
211 */
212 public final String getSourceBackendSetName()
213 {
214 return sourceBackendSetName;
215 }
216
217
218
219 /**
220 * The address and port of the backend server from which the subtree will be
221 * migrated.
222 *
223 * @return The address and port of the backend server from which the subtree
224 * will be migrated, or {@code null} if it is not included in the log
225 * message.
226 */
227 public final String getSourceBackendServer()
228 {
229 return sourceBackendServer;
230 }
231
232
233
234 /**
235 * Retrieves the name of the backend set to which the subtree will be
236 * migrated.
237 *
238 * @return The name of the backend set ot which the subtree will be migrated,
239 * or {@code null} if it is not included in the log message.
240 */
241 public final String getTargetBackendSetName()
242 {
243 return targetBackendSetName;
244 }
245
246
247
248 /**
249 * Retrieves the address and port of the backend server to which the subtree
250 * will be migrated.
251 *
252 * @return The address and port of the backend server to which the subtree
253 * will be migrated, or {@code null} if it is not included in the log
254 * message.
255 */
256 public final String getTargetBackendServer()
257 {
258 return targetBackendServer;
259 }
260
261
262
263 /**
264 * {@inheritDoc}
265 */
266 @Override()
267 public AccessLogMessageType getMessageType()
268 {
269 return AccessLogMessageType.ENTRY_REBALANCING_REQUEST;
270 }
271 }