/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.masterdb.security.hibernate;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
/**
* Hibernate bean for storing an enum.
*/
public abstract class EnumBean {
private Long _id;
private String _name;
public EnumBean() {
}
public EnumBean(final String name) {
_name = name;
}
public Long getId() {
return _id;
}
public void setId(final Long id) {
_id = id;
}
public String getName() {
return _name;
}
public void setName(final String name) {
_name = name;
}
/* subclasses will need to check class equivalence */
@Override
public boolean equals(final Object o) {
if (!(o instanceof EnumBean)) {
return false;
}
final EnumBean other = (EnumBean) o;
if (getId() != -1 && other.getId() != -1) {
return getId().longValue() == other.getId().longValue();
}
return ObjectUtils.equals(other.getName(), getName());
}
@Override
public int hashCode() {
if (_id != null) {
return _name.hashCode();
} else {
return _id.intValue();
}
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}