/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved.
*
*/
package com.sleepycat.persist.model;
import java.io.Serializable;
/**
* The metadata for a key field. This class defines common properties for
* singular and composite key fields.
*
* <p>{@code FieldMetadata} objects are thread-safe. Multiple threads may
* safely call the methods of a shared {@code FieldMetadata} object.</p>
*
* @author Mark Hayes
*/
public class FieldMetadata implements Serializable {
private static final long serialVersionUID = -9037650229184174279L;
private String name;
private String className;
private String declaringClassName;
/**
* Used by an {@code EntityModel} to construct field metadata.
*/
public FieldMetadata(String name,
String className,
String declaringClassName) {
this.name = name;
this.className = className;
this.declaringClassName = declaringClassName;
}
/**
* Returns the field name.
*/
public String getName() {
return name;
}
/**
* Returns the class name of the field type.
*/
public String getClassName() {
return className;
}
/**
* Returns the name of the class where the field is declared.
*/
public String getDeclaringClassName() {
return declaringClassName;
}
@Override
public boolean equals(Object other) {
if (other instanceof FieldMetadata) {
FieldMetadata o = (FieldMetadata) other;
return ClassMetadata.nullOrEqual(name, o.name) &&
ClassMetadata.nullOrEqual(className, o.className) &&
ClassMetadata.nullOrEqual(declaringClassName,
o.declaringClassName);
} else {
return false;
}
}
@Override
public int hashCode() {
return ClassMetadata.hashCode(name) +
ClassMetadata.hashCode(className) +
ClassMetadata.hashCode(declaringClassName);
}
@Override
public String toString() {
return "[FieldMetadata name: " + name + " className: " + className +
" declaringClassName: " + declaringClassName + ']';
}
}