1 /*
2 * The contents of this file are subject to the terms of the Common Development and
3 * Distribution License (the License). You may not use this file except in compliance with the
4 * License.
5 *
6 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
7 * specific language governing permission and limitations under the License.
8 *
9 * When distributing Covered Software, include this CDDL Header Notice in each file and include
10 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
11 * Header, with the fields enclosed by brackets [] replaced by your own identifying
12 * information: "Portions copyright [year] [name of copyright owner]".
13 *
14 * Copyright 2015 ForgeRock AS.
15 */
16 package org.forgerock.audit.handlers.csv;
17
18 import java.io.IOException;
19 import java.util.Map;
20
21 /**
22 * Responsible for writing to a CSV file.
23 */
24 interface CsvWriter extends AutoCloseable {
25
26 /**
27 * Forces rotation of the writer.
28 * <p>
29 * Rotation is possible only if file rotation is enabled.
30 *
31 * @return {@code true} if rotation was done, {@code false} otherwise.
32 * @throws IOException
33 * If an error occurs
34 */
35 boolean forceRotation() throws IOException;
36
37 /**
38 * Write a row into the CSV files.
39 * @param values The keys of the {@link Map} have to match the column's header.
40 * @throws IOException
41 */
42 void writeEvent(Map<String, String> values) throws IOException;
43
44 /**
45 * Flush the data into the CSV file.
46 * @throws IOException
47 */
48 void flush() throws IOException;
49
50 void close() throws IOException;
51 }