1/*- 2 * See the file LICENSE for redistribution information. 3 * 4 * Copyright (c) 2002,2008 Oracle. All rights reserved. 5 * 6 * $Id: FieldMetadata.java,v 1.1 2008/02/07 17:12:28 mark Exp $ 7 */ 8 9package com.sleepycat.persist.model; 10 11import java.io.Serializable; 12 13/** 14 * The metadata for a key field. This class defines common properties for 15 * singular and composite key fields. 16 * 17 * <p>{@code FieldMetadata} objects are thread-safe. Multiple threads may 18 * safely call the methods of a shared {@code FieldMetadata} object.</p> 19 * 20 * @author Mark Hayes 21 */ 22public class FieldMetadata implements Serializable { 23 24 private static final long serialVersionUID = -9037650229184174279L; 25 26 private String name; 27 private String className; 28 private String declaringClassName; 29 30 /** 31 * Used by an {@code EntityModel} to construct field metadata. 32 */ 33 public FieldMetadata(String name, 34 String className, 35 String declaringClassName) { 36 this.name = name; 37 this.className = className; 38 this.declaringClassName = declaringClassName; 39 } 40 41 /** 42 * Returns the field name. 43 */ 44 public String getName() { 45 return name; 46 } 47 48 /** 49 * Returns the class name of the field type. 50 */ 51 public String getClassName() { 52 return className; 53 } 54 55 /** 56 * Returns the name of the class where the field is declared. 57 */ 58 public String getDeclaringClassName() { 59 return declaringClassName; 60 } 61 62 @Override 63 public boolean equals(Object other) { 64 if (other instanceof FieldMetadata) { 65 FieldMetadata o = (FieldMetadata) other; 66 return ClassMetadata.nullOrEqual(name, o.name) && 67 ClassMetadata.nullOrEqual(className, o.className) && 68 ClassMetadata.nullOrEqual(declaringClassName, 69 o.declaringClassName); 70 } else { 71 return false; 72 } 73 } 74 75 @Override 76 public int hashCode() { 77 return ClassMetadata.hashCode(name) + 78 ClassMetadata.hashCode(className) + 79 ClassMetadata.hashCode(declaringClassName); 80 } 81} 82