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

View File

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

View File

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

View File

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

View File

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

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.client.reviewdb;
import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.KeyUtil;
/** Content of a single patch file */
public final class PatchContent {
@@ -37,7 +38,12 @@ public final class PatchContent {
@Override
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() {

View File

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

View File

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

View File

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