package fr.openwide.core.jpa.more.business.history.model; import javax.persistence.MappedSuperclass; import javax.persistence.Transient; import fr.openwide.core.commons.util.fieldpath.FieldPath; import fr.openwide.core.jpa.business.generic.model.GenericEntity; @MappedSuperclass public abstract class AbstractHistoryElement<HE extends AbstractHistoryElement<HE, HL>, HL extends AbstractHistoryLog<HL, ?, ?>> extends GenericEntity<Long, HE> implements IHistoryElement<HL> { private static final long serialVersionUID = -4168127417871120993L; @Override @Transient public abstract HL getRootLog(); @Transient protected abstract AbstractHistoryElement<?, ?> getParent(); @Override @Transient public abstract FieldPath getRelativePath(); @Override @Transient public FieldPath getParentAbsolutePath() { AbstractHistoryElement<?, ?> parent = getParent(); if (parent != null) { return parent.getAbsolutePath(); } else { return FieldPath.ROOT; } } /* (non-Javadoc) * @see fr.openwide.core.jpa.more.business.history.model.IHistoryElement#getAbsolutePath() */ @Override @Transient public FieldPath getAbsolutePath() { return getParentAbsolutePath().append(getRelativePath()); } }