/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved.
*
*/
package com.sleepycat.persist.model;
/**
* The metadata for a primary key field. A primary key may be specified with
* the {@link PrimaryKey} annotation.
*
* <p>{@code PrimaryKeyMetadata} objects are thread-safe. Multiple threads may
* safely call the methods of a shared {@code PrimaryKeyMetadata} object.</p>
*
* @author Mark Hayes
*/
public class PrimaryKeyMetadata extends FieldMetadata {
private static final long serialVersionUID = 2946863622972437018L;
private String sequenceName;
/**
* Used by an {@code EntityModel} to construct primary key metadata.
*/
public PrimaryKeyMetadata(String name,
String className,
String declaringClassName,
String sequenceName) {
super(name, className, declaringClassName);
this.sequenceName = sequenceName;
}
/**
* Returns the name of the sequence for assigning key values. This may be
* specified using the {@link PrimaryKey#sequence} annotation.
*/
public String getSequenceName() {
return sequenceName;
}
@Override
public boolean equals(Object other) {
if (other instanceof PrimaryKeyMetadata) {
PrimaryKeyMetadata o = (PrimaryKeyMetadata) other;
return super.equals(o) &&
ClassMetadata.nullOrEqual(sequenceName, o.sequenceName);
} else {
return false;
}
}
@Override
public int hashCode() {
return super.hashCode() + ClassMetadata.hashCode(sequenceName);
}
}