Flatten group audit keys into containing types
The keys were used as primary keys in ReviewDb; this is no longer required, and the key abstraction is serving no purpose. Within AuditLogReader there is a need to build maps containing audit records keyed by something, but AuditLogReader has its own key types for that, since they don't match the audit record keys. Change-Id: I2632cbf709cab020a0d9a44d177ad6e326e21bcf
This commit is contained in:
@@ -21,29 +21,20 @@ import java.util.Optional;
|
||||
/** Inclusion of an {@link AccountGroup} in another {@link AccountGroup}. */
|
||||
@AutoValue
|
||||
public abstract class AccountGroupByIdAudit {
|
||||
public static Key key(AccountGroup.Id groupId, AccountGroup.UUID includeUuid, Timestamp addedOn) {
|
||||
return new AutoValue_AccountGroupByIdAudit_Key(groupId, includeUuid, addedOn);
|
||||
}
|
||||
|
||||
@AutoValue
|
||||
public abstract static class Key {
|
||||
public abstract AccountGroup.Id groupId();
|
||||
|
||||
public abstract AccountGroup.UUID includeUuid();
|
||||
|
||||
public abstract Timestamp addedOn();
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new AutoValue_AccountGroupByIdAudit.Builder();
|
||||
}
|
||||
|
||||
@AutoValue.Builder
|
||||
public abstract static class Builder {
|
||||
public abstract Builder key(Key key);
|
||||
public abstract Builder groupId(AccountGroup.Id groupId);
|
||||
|
||||
public abstract Builder includeUuid(AccountGroup.UUID includeUuid);
|
||||
|
||||
public abstract Builder addedBy(Account.Id addedBy);
|
||||
|
||||
public abstract Builder addedOn(Timestamp addedOn);
|
||||
|
||||
abstract Builder removedBy(Account.Id removedBy);
|
||||
|
||||
abstract Builder removedOn(Timestamp removedOn);
|
||||
@@ -55,28 +46,20 @@ public abstract class AccountGroupByIdAudit {
|
||||
public abstract AccountGroupByIdAudit build();
|
||||
}
|
||||
|
||||
public abstract AccountGroupByIdAudit.Key key();
|
||||
public abstract AccountGroup.Id groupId();
|
||||
|
||||
public abstract AccountGroup.UUID includeUuid();
|
||||
|
||||
public abstract Account.Id addedBy();
|
||||
|
||||
public abstract Timestamp addedOn();
|
||||
|
||||
public abstract Optional<Account.Id> removedBy();
|
||||
|
||||
public abstract Optional<Timestamp> removedOn();
|
||||
|
||||
public abstract Builder toBuilder();
|
||||
|
||||
public AccountGroup.Id groupId() {
|
||||
return key().groupId();
|
||||
}
|
||||
|
||||
public Timestamp getAddedOn() {
|
||||
return key().addedOn();
|
||||
}
|
||||
|
||||
public AccountGroup.UUID includeUuid() {
|
||||
return key().includeUuid();
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return !removedOn().isPresent();
|
||||
}
|
||||
|
||||
@@ -21,33 +21,24 @@ import java.util.Optional;
|
||||
/** Membership of an {@link Account} in an {@link AccountGroup}. */
|
||||
@AutoValue
|
||||
public abstract class AccountGroupMemberAudit {
|
||||
public static Key key(Account.Id accountId, AccountGroup.Id groupId, Timestamp addedOn) {
|
||||
return new AutoValue_AccountGroupMemberAudit_Key(accountId, groupId, addedOn);
|
||||
}
|
||||
|
||||
@AutoValue
|
||||
public abstract static class Key {
|
||||
public abstract Account.Id accountId();
|
||||
|
||||
public abstract AccountGroup.Id groupId();
|
||||
|
||||
public abstract Timestamp addedOn();
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new AutoValue_AccountGroupMemberAudit.Builder();
|
||||
}
|
||||
|
||||
@AutoValue.Builder
|
||||
public abstract static class Builder {
|
||||
public abstract Builder key(Key key);
|
||||
public abstract Builder groupId(AccountGroup.Id groupId);
|
||||
|
||||
abstract Key key();
|
||||
public abstract Builder memberId(Account.Id accountId);
|
||||
|
||||
public abstract Builder addedBy(Account.Id addedBy);
|
||||
|
||||
abstract Account.Id addedBy();
|
||||
|
||||
public abstract Builder addedOn(Timestamp addedOn);
|
||||
|
||||
abstract Timestamp addedOn();
|
||||
|
||||
abstract Builder removedBy(Account.Id removedBy);
|
||||
|
||||
abstract Builder removedOn(Timestamp removedOn);
|
||||
@@ -57,34 +48,26 @@ public abstract class AccountGroupMemberAudit {
|
||||
}
|
||||
|
||||
public Builder removedLegacy() {
|
||||
return removed(addedBy(), key().addedOn());
|
||||
return removed(addedBy(), addedOn());
|
||||
}
|
||||
|
||||
public abstract AccountGroupMemberAudit build();
|
||||
}
|
||||
|
||||
public abstract AccountGroupMemberAudit.Key key();
|
||||
public abstract AccountGroup.Id groupId();
|
||||
|
||||
public abstract Account.Id memberId();
|
||||
|
||||
public abstract Account.Id addedBy();
|
||||
|
||||
public abstract Timestamp addedOn();
|
||||
|
||||
public abstract Optional<Account.Id> removedBy();
|
||||
|
||||
public abstract Optional<Timestamp> removedOn();
|
||||
|
||||
public abstract Builder toBuilder();
|
||||
|
||||
public AccountGroup.Id groupId() {
|
||||
return key().groupId();
|
||||
}
|
||||
|
||||
public Account.Id memberId() {
|
||||
return key().accountId();
|
||||
}
|
||||
|
||||
public Timestamp addedOn() {
|
||||
return key().addedOn();
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return !removedOn().isPresent();
|
||||
}
|
||||
|
||||
@@ -79,7 +79,9 @@ public class AuditLogReader {
|
||||
MemberKey key = MemberKey.create(groupId, id);
|
||||
AccountGroupMemberAudit.Builder audit =
|
||||
AccountGroupMemberAudit.builder()
|
||||
.key(AccountGroupMemberAudit.key(id, groupId, pc.when()))
|
||||
.memberId(id)
|
||||
.groupId(groupId)
|
||||
.addedOn(pc.when())
|
||||
.addedBy(pc.authorId());
|
||||
audits.put(key, audit);
|
||||
result.add(audit);
|
||||
@@ -93,7 +95,9 @@ public class AuditLogReader {
|
||||
// Match old behavior of DbGroupAuditListener and add a "legacy" add/remove pair.
|
||||
AccountGroupMemberAudit.Builder audit =
|
||||
AccountGroupMemberAudit.builder()
|
||||
.key(AccountGroupMemberAudit.key(id, groupId, pc.when()))
|
||||
.groupId(groupId)
|
||||
.memberId(id)
|
||||
.addedOn(pc.when())
|
||||
.addedBy(pc.authorId())
|
||||
.removedLegacy();
|
||||
result.add(audit);
|
||||
@@ -118,7 +122,9 @@ public class AuditLogReader {
|
||||
SubgroupKey key = SubgroupKey.create(groupId, uuid);
|
||||
AccountGroupByIdAudit.Builder audit =
|
||||
AccountGroupByIdAudit.builder()
|
||||
.key(AccountGroupByIdAudit.key(groupId, uuid, pc.when()))
|
||||
.groupId(groupId)
|
||||
.includeUuid(uuid)
|
||||
.addedOn(pc.when())
|
||||
.addedBy(pc.authorId());
|
||||
audits.put(key, audit);
|
||||
result.add(audit);
|
||||
|
||||
@@ -123,7 +123,7 @@ public class GetAuditLog implements RestReadView<GroupResource> {
|
||||
|
||||
auditEvents.add(
|
||||
GroupAuditEventInfo.createAddGroupEvent(
|
||||
accountLoader.get(auditEvent.addedBy()), auditEvent.key().addedOn(), member));
|
||||
accountLoader.get(auditEvent.addedBy()), auditEvent.addedOn(), member));
|
||||
|
||||
if (!auditEvent.isActive()) {
|
||||
auditEvents.add(
|
||||
|
||||
@@ -304,7 +304,9 @@ public final class AuditLogReaderTest extends AbstractGroupTest {
|
||||
private static AccountGroupMemberAudit createExpMemberAudit(
|
||||
AccountGroup.Id groupId, Account.Id id, Account.Id addedBy, Timestamp addedOn) {
|
||||
return AccountGroupMemberAudit.builder()
|
||||
.key(AccountGroupMemberAudit.key(id, groupId, addedOn))
|
||||
.groupId(groupId)
|
||||
.memberId(id)
|
||||
.addedOn(addedOn)
|
||||
.addedBy(addedBy)
|
||||
.build();
|
||||
}
|
||||
@@ -312,7 +314,9 @@ public final class AuditLogReaderTest extends AbstractGroupTest {
|
||||
private static AccountGroupByIdAudit createExpGroupAudit(
|
||||
AccountGroup.Id groupId, AccountGroup.UUID uuid, Account.Id addedBy, Timestamp addedOn) {
|
||||
return AccountGroupByIdAudit.builder()
|
||||
.key(AccountGroupByIdAudit.key(groupId, uuid, addedOn))
|
||||
.groupId(groupId)
|
||||
.includeUuid(uuid)
|
||||
.addedOn(addedOn)
|
||||
.addedBy(addedBy)
|
||||
.build();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user