package ru.hflabs.rcd.model.task;
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.Descriptioned;
import ru.hflabs.rcd.model.Named;
import ru.hflabs.rcd.model.annotation.Hashed;
import ru.hflabs.rcd.model.annotation.Indexed;
import ru.hflabs.rcd.model.document.DocumentTemplate;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.Map;
/**
* Класс <class>TaskDescriptor</class> описывает параметры выполнения задачи
*/
@Getter
@Setter
@Indexed(
id = TaskDescriptor.PRIMARY_KEY,
fields = {
@Indexed.Field(TaskDescriptor.HISTORY_ID),
@Indexed.Field(TaskDescriptor.CHANGE_TYPE),
@Indexed.Field(TaskDescriptor.CHANGE_DATE),
@Indexed.Field(TaskDescriptor.NAME),
@Indexed.Field(TaskDescriptor.CRON)
}
)
@Hashed(ignore = {
TaskDescriptor.PRIMARY_KEY, TaskDescriptor.HISTORY_ID, TaskDescriptor.NAME
})
public class TaskDescriptor extends DocumentTemplate implements Named, Descriptioned {
private static final long serialVersionUID = -7930945169739535612L;
/*
* Название полей с идентификаторами
*/
public static final String CRON = "cron";
public static final String PARAMETERS = "parameters";
/** Идентификатор исполнителя */
@NotNull
@Size(min = NAME_MIN_SIZE, max = NAME_MAX_SIZE)
private String name;
/** Описание задачи */
@NotNull
@Size(max = DESCRIPTION_SIZE)
private String description;
/** CRON тригер запуска или NULL */
private String cron;
/** Дата следующего запуска задачи */
private transient Date nextScheduledDate;
/** Параметры */
private Map<String, Object> parameters;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.appendSuper(super.toString())
.append(NAME, getName())
.append(DESCRIPTION, getDescription())
.append(CRON, getCron())
.toString();
}
}