From 5cdffcc450f8ffe1f425540c1dd89291f64acd05 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 31 Jan 2017 11:24:27 +0100 Subject: [PATCH] [New] Implemented StrolchTransaction.setSuppressAuditsForAudits() --- .../persistence/api/AbstractTransaction.java | 19 ++++++++++-- .../persistence/api/StrolchTransaction.java | 17 ++++++++++ ...ageAddOrReplacePrivilegeOnRoleCommand.java | 31 +++++++++++++++++++ 3 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 li.strolch.service/src/main/java/li/strolch/service/privilege/roles/PrivilageAddOrReplacePrivilegeOnRoleCommand.java diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java index 5901c6408..e9b00e53e 100644 --- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java +++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java @@ -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 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; } diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java index f9e61626b..1805fa4d9 100644 --- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java +++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java @@ -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 * diff --git a/li.strolch.service/src/main/java/li/strolch/service/privilege/roles/PrivilageAddOrReplacePrivilegeOnRoleCommand.java b/li.strolch.service/src/main/java/li/strolch/service/privilege/roles/PrivilageAddOrReplacePrivilegeOnRoleCommand.java new file mode 100644 index 000000000..37d8344b0 --- /dev/null +++ b/li.strolch.service/src/main/java/li/strolch/service/privilege/roles/PrivilageAddOrReplacePrivilegeOnRoleCommand.java @@ -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 + + } + +}