ClassMetadata.java [plain text]
package com.sleepycat.persist.model;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
public class ClassMetadata implements Serializable {
private static final long serialVersionUID = -2520207423701776679L;
private String className;
private int version;
private String proxiedClassName;
private boolean entityClass;
private PrimaryKeyMetadata primaryKey;
private Map<String,SecondaryKeyMetadata> secondaryKeys;
private List<FieldMetadata> compositeKeyFields;
public ClassMetadata(String className,
int version,
String proxiedClassName,
boolean entityClass,
PrimaryKeyMetadata primaryKey,
Map<String,SecondaryKeyMetadata> secondaryKeys,
List<FieldMetadata> compositeKeyFields) {
this.className = className;
this.version = version;
this.proxiedClassName = proxiedClassName;
this.entityClass = entityClass;
this.primaryKey = primaryKey;
this.secondaryKeys = secondaryKeys;
this.compositeKeyFields = compositeKeyFields;
}
public String getClassName() {
return className;
}
public int getVersion() {
return version;
}
public String getProxiedClassName() {
return proxiedClassName;
}
public boolean isEntityClass() {
return entityClass;
}
public PrimaryKeyMetadata getPrimaryKey() {
return primaryKey;
}
public Map<String,SecondaryKeyMetadata> getSecondaryKeys() {
return secondaryKeys;
}
public List<FieldMetadata> getCompositeKeyFields() {
return compositeKeyFields;
}
@Override
public boolean equals(Object other) {
if (other instanceof ClassMetadata) {
ClassMetadata o = (ClassMetadata) other;
return version == o.version &&
entityClass == o.entityClass &&
nullOrEqual(className, o.className) &&
nullOrEqual(proxiedClassName, o.proxiedClassName) &&
nullOrEqual(primaryKey, o.primaryKey) &&
nullOrEqual(secondaryKeys, o.secondaryKeys) &&
nullOrEqual(compositeKeyFields, o.compositeKeyFields);
} else {
return false;
}
}
@Override
public int hashCode() {
return version +
(entityClass ? 1 : 0) +
hashCode(className) +
hashCode(proxiedClassName) +
hashCode(primaryKey) +
hashCode(secondaryKeys) +
hashCode(compositeKeyFields);
}
static boolean nullOrEqual(Object o1, Object o2) {
if (o1 == null) {
return o2 == null;
} else {
return o1.equals(o2);
}
}
static int hashCode(Object o) {
if (o != null) {
return o.hashCode();
} else {
return 0;
}
}
}