package ru.hflabs.rcd.model; import lombok.Getter; import lombok.Setter; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import javax.validation.constraints.Size; import java.lang.reflect.UndeclaredThrowableException; /** * Класс <class>EssenceTemplate</class> реализует базовый класс для сущности * * @see Essence */ @Getter @Setter public abstract class EssenceTemplate implements Essence { private static final long serialVersionUID = -1774077907476160785L; /** Уникальный идентификатор */ @Size(max = PRIMARY_KEY_MAX_SIZE) private String id; @Override public void injectId(String targetId) { setId(targetId); } @Override @SuppressWarnings("unchecked") public <E> E copy() { try { return (E) clone(); } catch (CloneNotSupportedException ex) { throw new UndeclaredThrowableException(ex); } } @Override public int hashCode() { return id != null ? id.hashCode() : 0; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } EssenceTemplate that = (EssenceTemplate) o; if (id != null ? !id.equals(that.id) : that.id != null) { return false; } return true; } @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) .append(PRIMARY_KEY, getId()) .toString(); } }