Use the new CompoundKey base class to simplify key implementations

Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce
2008-12-29 08:45:44 -08:00
parent 0ffdc99230
commit 2e3b5190b2
9 changed files with 47 additions and 82 deletions

View File

@@ -15,12 +15,13 @@
package com.google.gerrit.client.reviewdb; package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column; import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.CompoundKey;
import java.sql.Timestamp; import java.sql.Timestamp;
/** Electronic acceptance of a {@link ContributorAgreement} by {@link Account} */ /** Electronic acceptance of a {@link ContributorAgreement} by {@link Account} */
public final class AccountAgreement { public final class AccountAgreement {
public static class Key implements com.google.gwtorm.client.Key<Account.Id> { public static class Key extends CompoundKey<Account.Id> {
@Column @Column
protected Account.Id accountId; protected Account.Id accountId;
@@ -37,19 +38,14 @@ public final class AccountAgreement {
this.claId = cla; this.claId = cla;
} }
@Override
public Account.Id getParentKey() { public Account.Id getParentKey() {
return accountId; return accountId;
} }
@Override @Override
public int hashCode() { public com.google.gwtorm.client.Key<?>[] members() {
return accountId.hashCode() * 31 + claId.hashCode(); return new com.google.gwtorm.client.Key<?>[] {claId};
}
@Override
public boolean equals(final Object o) {
return o instanceof Key && ((Key) o).accountId.equals(accountId)
&& ((Key) o).claId.equals(claId);
} }
} }

View File

@@ -15,10 +15,11 @@
package com.google.gerrit.client.reviewdb; package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column; import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.StringKey;
/** Association of an external account identifier to a local {@link Account}. */ /** Association of an external account identifier to a local {@link Account}. */
public final class AccountExternalId { public final class AccountExternalId {
public static class Key implements com.google.gwtorm.client.Key<Account.Id> { public static class Key extends StringKey<Account.Id> {
@Column @Column
protected Account.Id accountId; protected Account.Id accountId;
@@ -34,19 +35,14 @@ public final class AccountExternalId {
externalId = e; externalId = e;
} }
@Override
public Account.Id getParentKey() { public Account.Id getParentKey() {
return accountId; return accountId;
} }
@Override @Override
public int hashCode() { public String get() {
return accountId.hashCode() * 31 + externalId.hashCode(); return externalId;
}
@Override
public boolean equals(final Object o) {
return o instanceof Key && ((Key) o).accountId.equals(accountId)
&& ((Key) o).externalId.equals(externalId);
} }
} }

View File

@@ -15,10 +15,11 @@
package com.google.gerrit.client.reviewdb; package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column; import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.CompoundKey;
/** Membership of an {@link Account} in an {@link AccountGroup}. */ /** Membership of an {@link Account} in an {@link AccountGroup}. */
public final class AccountGroupMember { public final class AccountGroupMember {
public static class Key implements com.google.gwtorm.client.Key<Account.Id> { public static class Key extends CompoundKey<Account.Id> {
@Column @Column
protected Account.Id accountId; protected Account.Id accountId;
@@ -35,19 +36,14 @@ public final class AccountGroupMember {
groupId = g; groupId = g;
} }
@Override
public Account.Id getParentKey() { public Account.Id getParentKey() {
return accountId; return accountId;
} }
@Override @Override
public int hashCode() { public com.google.gwtorm.client.Key<?>[] members() {
return accountId.hashCode() * 31 + groupId.hashCode(); return new com.google.gwtorm.client.Key<?>[] {groupId};
}
@Override
public boolean equals(final Object o) {
return o instanceof Key && ((Key) o).accountId.equals(accountId)
&& ((Key) o).groupId.equals(groupId);
} }
} }

View File

@@ -15,11 +15,11 @@
package com.google.gerrit.client.reviewdb; package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column; import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.ShortKey;
/** Valid value for a {@link ApprovalCategory}. */ /** Valid value for a {@link ApprovalCategory}. */
public final class ApprovalCategoryValue { public final class ApprovalCategoryValue {
public static class Key implements public static class Key extends ShortKey<ApprovalCategory.Id> {
com.google.gwtorm.client.Key<ApprovalCategory.Id> {
@Column @Column
protected ApprovalCategory.Id categoryId; protected ApprovalCategory.Id categoryId;
@@ -35,19 +35,14 @@ public final class ApprovalCategoryValue {
value = v; value = v;
} }
@Override
public ApprovalCategory.Id getParentKey() { public ApprovalCategory.Id getParentKey() {
return categoryId; return categoryId;
} }
@Override @Override
public int hashCode() { public short get() {
return categoryId.hashCode() * 31 + value; return value;
}
@Override
public boolean equals(final Object o) {
return o instanceof Key && ((Key) o).categoryId.equals(categoryId)
&& ((Key) o).value == value;
} }
} }

View File

@@ -15,12 +15,13 @@
package com.google.gerrit.client.reviewdb; package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column; import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.CompoundKey;
import java.sql.Timestamp; import java.sql.Timestamp;
/** An approval (or negative approval) on a change. */ /** An approval (or negative approval) on a change. */
public final class ChangeApproval { public final class ChangeApproval {
public static class Key implements com.google.gwtorm.client.Key<Change.Id> { public static class Key extends CompoundKey<Change.Id> {
@Column @Column
protected Change.Id changeId; protected Change.Id changeId;
@@ -43,25 +44,14 @@ public final class ChangeApproval {
this.categoryId = c; this.categoryId = c;
} }
@Override
public Change.Id getParentKey() { public Change.Id getParentKey() {
return changeId; return changeId;
} }
@Override @Override
public int hashCode() { public com.google.gwtorm.client.Key<?>[] members() {
int h = changeId.hashCode(); return new com.google.gwtorm.client.Key<?>[] {accountId, categoryId};
h *= 31;
h += accountId.hashCode();
h *= 31;
h += categoryId.hashCode();
return h;
}
@Override
public boolean equals(final Object o) {
return o instanceof Key && ((Key) o).changeId.equals(changeId)
&& ((Key) o).accountId.equals(accountId)
&& ((Key) o).categoryId.equals(categoryId);
} }
} }

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.client.reviewdb; package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column; import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.KeyUtil;
/** Content of a single patch file */ /** Content of a single patch file */
public final class PatchContent { public final class PatchContent {
@@ -37,7 +38,12 @@ public final class PatchContent {
@Override @Override
public boolean equals(final Object o) { public boolean equals(final Object o) {
return o instanceof Key && sha1.equals(((Key) o).sha1); return getClass() == o.getClass() && sha1.equals(((Key) o).sha1);
}
@Override
public String toString() {
return KeyUtil.encode(sha1);
} }
public com.google.gwtorm.client.Key<?> getParentKey() { public com.google.gwtorm.client.Key<?> getParentKey() {

View File

@@ -15,11 +15,11 @@
package com.google.gerrit.client.reviewdb; package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column; import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.CompoundKey;
/** Single {@link Account} as owner/manager of a project. */ /** Single {@link Account} as owner/manager of a project. */
public final class ProjectLeadAccount { public final class ProjectLeadAccount {
public static class Key implements public static class Key extends CompoundKey<Project.NameKey> {
com.google.gwtorm.client.Key<Project.NameKey> {
@Column @Column
protected Project.NameKey projectName; protected Project.NameKey projectName;
@@ -36,19 +36,14 @@ public final class ProjectLeadAccount {
accountId = a; accountId = a;
} }
@Override
public Project.NameKey getParentKey() { public Project.NameKey getParentKey() {
return projectName; return projectName;
} }
@Override @Override
public int hashCode() { public com.google.gwtorm.client.Key<?>[] members() {
return projectName.hashCode() * 31 + accountId.hashCode(); return new com.google.gwtorm.client.Key<?>[] {accountId};
}
@Override
public boolean equals(final Object o) {
return o instanceof Key && ((Key) o).projectName.equals(projectName)
&& ((Key) o).accountId.equals(accountId);
} }
} }

View File

@@ -15,11 +15,11 @@
package com.google.gerrit.client.reviewdb; package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column; import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.CompoundKey;
/** {@link AccountGroup} as owner/manager of a project. */ /** {@link AccountGroup} as owner/manager of a project. */
public final class ProjectLeadGroup { public final class ProjectLeadGroup {
public static class Key implements public static class Key extends CompoundKey<Project.NameKey> {
com.google.gwtorm.client.Key<Project.NameKey> {
@Column @Column
protected Project.NameKey projectName; protected Project.NameKey projectName;
@@ -36,19 +36,14 @@ public final class ProjectLeadGroup {
groupId = a; groupId = a;
} }
@Override
public Project.NameKey getParentKey() { public Project.NameKey getParentKey() {
return projectName; return projectName;
} }
@Override @Override
public int hashCode() { public com.google.gwtorm.client.Key<?>[] members() {
return projectName.hashCode() * 31 + groupId.hashCode(); return new com.google.gwtorm.client.Key<?>[] {groupId};
}
@Override
public boolean equals(final Object o) {
return o instanceof Key && ((Key) o).projectName.equals(projectName)
&& ((Key) o).groupId.equals(groupId);
} }
} }

View File

@@ -15,10 +15,11 @@
package com.google.gerrit.client.reviewdb; package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column; import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.CompoundKey;
/** A {@link Change} starred by an {@link Account}. */ /** A {@link Change} starred by an {@link Account}. */
public class StarredChange { public class StarredChange {
public static class Key implements com.google.gwtorm.client.Key<Account.Id> { public static class Key extends CompoundKey<Account.Id> {
@Column @Column
protected Account.Id accountId; protected Account.Id accountId;
@@ -35,19 +36,14 @@ public class StarredChange {
changeId = g; changeId = g;
} }
@Override
public Account.Id getParentKey() { public Account.Id getParentKey() {
return accountId; return accountId;
} }
@Override @Override
public int hashCode() { public com.google.gwtorm.client.Key<?>[] members() {
return accountId.hashCode() * 31 + changeId.hashCode(); return new com.google.gwtorm.client.Key<?>[] {changeId};
}
@Override
public boolean equals(final Object o) {
return o instanceof Key && ((Key) o).accountId.equals(accountId)
&& ((Key) o).changeId.equals(changeId);
} }
} }