package ru.hflabs.rcd.model.change;
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.annotation.Indexed;
import ru.hflabs.util.core.date.DateUtil;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Collection;
import java.util.Date;
/**
* Класс <class>History</class> содержит информацию об истории изменения сущности
*
* @see ru.hflabs.rcd.model.Historical
*/
@Getter
@Setter
@Indexed(
id = History.PRIMARY_KEY,
fields = {
@Indexed.Field(History.TARGET_ID),
@Indexed.Field(History.TARGET_TYPE),
@Indexed.Field(History.EVENT_TYPE),
@Indexed.Field(History.EVENT_DATE),
@Indexed.Field(History.EVENT_AUTHOR)
}
)
public final class History extends EssenceTemplate {
private static final long serialVersionUID = -5196925126737451364L;
/*
* Название полей с идентификаторами
*/
public static final String TARGET_ID = "targetId";
public static final String TARGET_TYPE = "targetType";
public static final String EVENT_TYPE = "eventType";
public static final String EVENT_DATE = "eventDate";
public static final String EVENT_AUTHOR = "eventAuthor";
/** Идентификатор целевого объекта */
@NotNull
@Size(max = PRIMARY_KEY_MAX_SIZE)
private String targetId;
/** Тип целевого объекта */
@NotNull
private String targetType;
/** Тип события */
@NotNull
private ChangeType eventType;
/** Дата события */
@NotNull
private Date eventDate;
/** Автор события */
@NotNull
private String eventAuthor;
/** Набор изменений */
private transient Collection<Diff> diffs;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.appendSuper(super.toString())
.append(TARGET_ID, getTargetId())
.append(TARGET_TYPE, getTargetType())
.append(EVENT_TYPE, getEventType())
.append(EVENT_DATE, DateUtil.formatDateTime(getEventDate()))
.append(EVENT_AUTHOR, getEventAuthor())
.toString();
}
}