/**
* Logback: the reliable, generic, fast and flexible logging framework.
* Copyright (C) 2006-2011, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation.
*/
package ch.qos.logback.audit.client;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.audit.Application;
import ch.qos.logback.audit.AuditEventBuilder;
import ch.qos.logback.audit.AuditException;
import ch.qos.logback.audit.Predicate;
public class AuditorFacade {
final Logger logger = LoggerFactory.getLogger(AuditorFacade.class);
final String object;
final String verb;
final String subject;
Application originatingApplication;
Map<String, String> predicateMap;
public AuditorFacade(String subject, String verb, String object) {
this.subject = subject;
this.verb = verb;
this.object = object;
}
public void audit() throws AuditException {
Auditor auditor = AuditorFactory.getAuditor();
AuditEventBuilder builder = auditor.newAuditEventBuilder();
builder.setObject(object);
builder.setVerb(verb);
builder.setSubject(subject);
if (predicateMap != null) {
builder.setPredicateMap(predicateMap);
}
if (originatingApplication != null) {
builder.setOriginatingApplication(originatingApplication);
}
auditor.log(builder);
}
public AuditorFacade setPredicateMap(Map<String, String> predicateMap) {
this.predicateMap = predicateMap;
return this;
}
/**
* Add a predicate.
*
* @param predicate
* @return
*/
public AuditorFacade add(Predicate predicate) {
if (predicate == null) {
throw new IllegalArgumentException(
"The predicate parameter cannot be null");
}
return add(predicate.getName(), predicate.getValue());
}
/**
* Add a predicate through two parameters, key and value.
*
* @param key
* @param value
* @return
*/
public AuditorFacade add(String key, String value) {
if (predicateMap == null) {
predicateMap = new HashMap<String, String>();
}
predicateMap.put(key, value);
return this;
}
/**
* Set the originating application name.
*
* @param originatingApplication
* @return
*/
public AuditorFacade originating(Application originatingApplication) {
this.originatingApplication = originatingApplication;
return this;
}
}