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 legal-notices/CDDLv1_0.txt
010 * or http://forgerock.org/license/CDDLv1.0.html.
011 * See the License for the specific language governing permissions
012 * and limitations under the License.
013 *
014 * When distributing Covered Code, include this CDDL HEADER in each
015 * file and include the License file at legal-notices/CDDLv1_0.txt.
016 * If applicable, add the following below this CDDL HEADER, with the
017 * fields enclosed by brackets "[]" replaced with your own identifying
018 * information:
019 *      Portions Copyright [yyyy] [name of copyright owner]
020 *
021 * CDDL HEADER END
022 *
023 *
024 *      Copyright 2008 Sun Microsystems, Inc.
025 */
026package org.forgerock.opendj.server.config.server;
027
028
029
030import java.util.SortedSet;
031import org.forgerock.opendj.config.server.ConfigurationChangeListener;
032import org.forgerock.opendj.ldap.DN;
033
034
035
036/**
037 * A server-side interface for querying Csv File Access Log Publisher
038 * settings.
039 * <p>
040 * Csv File Access Log Publishers publish access messages to CSV
041 * files.
042 */
043public interface CsvFileAccessLogPublisherCfg extends AccessLogPublisherCfg {
044
045  /**
046   * Gets the configuration class associated with this Csv File Access Log Publisher.
047   *
048   * @return Returns the configuration class associated with this Csv File Access Log Publisher.
049   */
050  Class<? extends CsvFileAccessLogPublisherCfg> configurationClass();
051
052
053
054  /**
055   * Register to be notified when this Csv File Access Log Publisher is changed.
056   *
057   * @param listener
058   *          The Csv File Access Log Publisher configuration change listener.
059   */
060  void addCsvFileAccessChangeListener(ConfigurationChangeListener<CsvFileAccessLogPublisherCfg> listener);
061
062
063
064  /**
065   * Deregister an existing Csv File Access Log Publisher configuration change listener.
066   *
067   * @param listener
068   *          The Csv File Access Log Publisher configuration change listener.
069   */
070  void removeCsvFileAccessChangeListener(ConfigurationChangeListener<CsvFileAccessLogPublisherCfg> listener);
071
072
073
074  /**
075   * Gets the "asynchronous" property.
076   * <p>
077   * Indicates whether the Csv File Access Log Publisher will publish
078   * records asynchronously.
079   *
080   * @return Returns the value of the "asynchronous" property.
081   */
082  boolean isAsynchronous();
083
084
085
086  /**
087   * Gets the "auto-flush" property.
088   * <p>
089   * Specifies whether to flush the writer after every log record.
090   * <p>
091   * If the asynchronous writes option is used, the writer is flushed
092   * after all the log records in the queue are written.
093   *
094   * @return Returns the value of the "auto-flush" property.
095   */
096  boolean isAutoFlush();
097
098
099
100  /**
101   * Gets the "csv-delimiter-char" property.
102   * <p>
103   * The delimiter character to use when writing in CSV format.
104   *
105   * @return Returns the value of the "csv-delimiter-char" property.
106   */
107  String getCsvDelimiterChar();
108
109
110
111  /**
112   * Gets the "csv-eol-symbols" property.
113   * <p>
114   * The string that marks the end of a line.
115   *
116   * @return Returns the value of the "csv-eol-symbols" property.
117   */
118  String getCsvEolSymbols();
119
120
121
122  /**
123   * Gets the "csv-quote-char" property.
124   * <p>
125   * The character to append and prepend to a CSV field when writing
126   * in CSV format.
127   *
128   * @return Returns the value of the "csv-quote-char" property.
129   */
130  String getCsvQuoteChar();
131
132
133
134  /**
135   * Gets the "java-class" property.
136   * <p>
137   * The fully-qualified name of the Java class that provides the Csv
138   * File Access Log Publisher implementation.
139   *
140   * @return Returns the value of the "java-class" property.
141   */
142  String getJavaClass();
143
144
145
146  /**
147   * Gets the "key-store-file" property.
148   * <p>
149   * Specifies the path to the file that contains the private key
150   * information. This may be an absolute path, or a path that is
151   * relative to the OpenDJ instance root.
152   * <p>
153   * Changes to this property will take effect the next time that the
154   * key store is accessed.
155   *
156   * @return Returns the value of the "key-store-file" property.
157   */
158  String getKeyStoreFile();
159
160
161
162  /**
163   * Gets the "key-store-pin-file" property.
164   * <p>
165   * Specifies the path to the text file whose only contents should be
166   * a single line containing the clear-text PIN needed to access the
167   * Csv File Access Log Publisher .
168   *
169   * @return Returns the value of the "key-store-pin-file" property.
170   */
171  String getKeyStorePinFile();
172
173
174
175  /**
176   * Gets the "log-control-oids" property.
177   * <p>
178   * Specifies whether control OIDs will be included in operation log
179   * records.
180   *
181   * @return Returns the value of the "log-control-oids" property.
182   */
183  boolean isLogControlOids();
184
185
186
187  /**
188   * Gets the "log-directory" property.
189   * <p>
190   * The directory to use for the log files generated by the Csv File
191   * Access Log Publisher. The path to the directory is relative to the
192   * server root.
193   *
194   * @return Returns the value of the "log-directory" property.
195   */
196  String getLogDirectory();
197
198
199
200  /**
201   * Gets the "retention-policy" property.
202   * <p>
203   * The retention policy to use for the Csv File Access Log Publisher
204   * .
205   * <p>
206   * When multiple policies are used, log files are cleaned when any
207   * of the policy's conditions are met.
208   *
209   * @return Returns an unmodifiable set containing the values of the "retention-policy" property.
210   */
211  SortedSet<String> getRetentionPolicy();
212
213
214
215  /**
216   * Gets the "retention-policy" property as a set of DNs.
217   * <p>
218   * The retention policy to use for the Csv File Access Log Publisher
219   * .
220   * <p>
221   * When multiple policies are used, log files are cleaned when any
222   * of the policy's conditions are met.
223   *
224   * @return Returns the DN values of the "retention-policy" property.
225   */
226  SortedSet<DN> getRetentionPolicyDNs();
227
228
229
230  /**
231   * Gets the "rotation-policy" property.
232   * <p>
233   * The rotation policy to use for the Csv File Access Log Publisher
234   * .
235   * <p>
236   * When multiple policies are used, rotation will occur if any
237   * policy's conditions are met.
238   *
239   * @return Returns an unmodifiable set containing the values of the "rotation-policy" property.
240   */
241  SortedSet<String> getRotationPolicy();
242
243
244
245  /**
246   * Gets the "rotation-policy" property as a set of DNs.
247   * <p>
248   * The rotation policy to use for the Csv File Access Log Publisher
249   * .
250   * <p>
251   * When multiple policies are used, rotation will occur if any
252   * policy's conditions are met.
253   *
254   * @return Returns the DN values of the "rotation-policy" property.
255   */
256  SortedSet<DN> getRotationPolicyDNs();
257
258
259
260  /**
261   * Gets the "signature-time-interval" property.
262   * <p>
263   * Specifies the interval at which to sign the log file when the
264   * tamper-evident option is enabled.
265   *
266   * @return Returns the value of the "signature-time-interval" property.
267   */
268  long getSignatureTimeInterval();
269
270
271
272  /**
273   * Gets the "tamper-evident" property.
274   * <p>
275   * Specifies whether the log should be signed in order to detect
276   * tampering.
277   * <p>
278   * Every log record will be signed, making it possible to verify
279   * that the log has not been tampered with. This feature has a
280   * significative impact on performance of the server.
281   *
282   * @return Returns the value of the "tamper-evident" property.
283   */
284  boolean isTamperEvident();
285
286}