class AuditAdapter {

    public void auditBatch(BatchStatement statement, UUID uuid, ClientState state, BatchQueryOptions options, Status status, long timestamp)
    {
        if (auditor.shouldLogForStatus(status))
        {
            AuditEntry.Builder builder = entryBuilderFactory.createBatchEntryBuilder()
                                                            .client(state.getRemoteAddress())
                                                            .coordinator(FBUtilities.getBroadcastAddress())
                                                            .user(state.getUser().getName())
                                                            .batch(uuid)
                                                            .status(status)
                                                            .timestamp(timestamp);

            if (status == Status.FAILED && auditor.shouldLogFailedBatchSummary())
            {
                String failedBatchStatement = String.format(BATCH_FAILURE, uuid.toString());
                auditor.audit(builder.operation(new SimpleAuditOperation(failedBatchStatement)).build());
            }
            else
            {
                for (AuditEntry entry : getBatchOperations(builder, statement, state, options))
                {
                    auditor.audit(entry);
                }
            }
        }
    }

      AuditAdapter(Auditor auditor, AuditEntryBuilderFactory entryBuilderFactory, BoundValueSuppressor boundValueSuppressor);

}