[New] Implemented StrolchTransaction.setSuppressAuditsForAudits()

This commit is contained in:
Robert von Burg 2017-01-31 11:24:27 +01:00
parent 4789264975
commit 5cdffcc450
3 changed files with 64 additions and 3 deletions

View File

@ -85,6 +85,7 @@ public abstract class AbstractTransaction implements StrolchTransaction {
private TransactionCloseStrategy closeStrategy;
private boolean suppressUpdates;
private boolean suppressAudits;
private boolean suppressAuditsForAudits;
private boolean suppressDoNothingLogging;
private TransactionResult txResult;
@ -224,11 +225,21 @@ public abstract class AbstractTransaction implements StrolchTransaction {
this.suppressAudits = suppressAudits;
}
@Override
public void setSuppressAuditsForAudits(boolean suppressAuditsForAudits) {
this.suppressAuditsForAudits = suppressAuditsForAudits;
}
@Override
public boolean isSuppressAudits() {
return this.suppressAudits;
}
@Override
public boolean isSuppressAuditsForAudits() {
return this.suppressAuditsForAudits;
}
@Override
public boolean isSuppressDoNothingLogging() {
return suppressDoNothingLogging;
@ -889,7 +900,7 @@ public abstract class AbstractTransaction implements StrolchTransaction {
List<Audit> audits = new ArrayList<>();
// this is bad... doesn't account for a created and deleted in same TX...
// TODO this is bad... doesn't account for a created and deleted in same TX...
if (this.orderMap != null) {
if (this.realm.isAuditTrailEnabledForRead())
@ -907,7 +918,7 @@ public abstract class AbstractTransaction implements StrolchTransaction {
auditsFor(audits, AccessType.DELETE, Tags.RESOURCE, this.resourceMap.getDeleted());
}
if (this.auditTrail != null) {
if (this.auditTrail != null && !isSuppressAuditsForAudits()) {
if (this.realm.isAuditTrailEnabledForRead())
auditsForAudits(audits, AccessType.READ, Tags.AUDIT, this.auditTrail.getRead());
auditsForAudits(audits, AccessType.CREATE, Tags.AUDIT, this.auditTrail.getCreated());
@ -915,7 +926,9 @@ public abstract class AbstractTransaction implements StrolchTransaction {
auditsForAudits(audits, AccessType.DELETE, Tags.AUDIT, this.auditTrail.getDeleted());
}
this.realm.getAuditTrail().addAll(this, audits);
if (!audits.isEmpty())
this.realm.getAuditTrail().addAll(this, audits);
long auditTrailDuration = System.nanoTime() - auditTrailStart;
return auditTrailDuration;
}

View File

@ -287,6 +287,16 @@ public interface StrolchTransaction extends AutoCloseable {
*/
public void setSuppressAudits(boolean suppressAudits);
/**
* If the given argument is true, then no {@link Audit Audits} for Audits are written. Since the {@link AuditTrail}
* is also audited, {@link Audit Audits} for Audits are generated, this allows to suppress this should that be
* required.
*
* @param suppressAuditsForAudits
* true to suppress writing {@link Audit Audits}, false to enable them
*/
public void setSuppressAuditsForAudits(boolean suppressAuditsForAudits);
/**
* Returns true if writing {@link Audit Audits} is currently suppressed
*
@ -294,6 +304,13 @@ public interface StrolchTransaction extends AutoCloseable {
*/
public boolean isSuppressAudits();
/**
* Returns true if writing {@link Audit Audits} for Audits is currently suppressed
*
* @return true if writing {@link Audit Audits} for Audits is currently suppressed
*/
public boolean isSuppressAuditsForAudits();
/**
* If the given argument is true, then logging of a {@link TransactionCloseStrategy#DO_NOTHING} will be suppressed
*

View File

@ -0,0 +1,31 @@
package li.strolch.service.privilege.roles;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.service.api.Command;
public class PrivilageAddOrReplacePrivilegeOnRoleCommand extends Command {
public PrivilageAddOrReplacePrivilegeOnRoleCommand(ComponentContainer container, StrolchTransaction tx) {
super(container, tx);
}
@Override
public void validate() {
// TODO Auto-generated method stub
}
@Override
public void doCommand() {
// TODO Auto-generated method stub
}
@Override
public void undo() {
// TODO Auto-generated method stub
}
}