package ru.hflabs.rcd.model.document;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import ru.hflabs.rcd.model.EssenceTemplate;
import ru.hflabs.rcd.model.Historical;
import ru.hflabs.rcd.model.change.ChangeType;
import ru.hflabs.rcd.model.change.History;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlTransient;
import java.util.Date;
/**
* Класс <class>DocumentTemplate</class> реализует базовый класс документа
*
* @see ru.hflabs.rcd.model.Essence
* @see Historical
*/
public abstract class DocumentTemplate extends EssenceTemplate implements Historical {
private static final long serialVersionUID = -5977901973470067744L;
/** Идентификатор события истории */
@Getter
@Setter
@Size(max = PRIMARY_KEY_MAX_SIZE)
private String historyId;
/** Событие истории */
private transient History history;
@XmlTransient
@Override
public String getHistoryName() {
return getClass().getSimpleName().toUpperCase();
}
@XmlTransient
@Override
public ChangeType getChangeType() {
return history != null ? history.getEventType() : null;
}
@XmlTransient
@Override
public Date getChangeDate() {
return history != null ? history.getEventDate() : null;
}
@XmlTransient
@Override
public History getHistory() {
return history;
}
@Override
public void setHistory(History history) {
this.history = history;
setHistoryId(history != null ? history.getId() : null);
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.appendSuper(super.toString())
.append(HISTORY_ID, getHistoryId())
.toString();
}
}