package org.molgenis.data.jobs.model; import org.molgenis.data.meta.SystemEntityType; import org.springframework.stereotype.Component; import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static org.molgenis.data.meta.AttributeType.*; import static org.molgenis.data.meta.model.EntityType.AttributeRole.ROLE_ID; import static org.molgenis.data.meta.model.Package.PACKAGE_SEPARATOR; import static org.molgenis.data.system.model.RootSystemPackage.PACKAGE_SYSTEM; @Component public class JobExecutionMetaData extends SystemEntityType { private static final String SIMPLE_NAME = "JobExecution"; public static final String JOB_EXECUTION = PACKAGE_SYSTEM + PACKAGE_SEPARATOR + SIMPLE_NAME; public static final String IDENTIFIER = "identifier"; // Job ID public static final String USER = "user"; // Owner of the job public static final String STATUS = "status"; // Job status like running or failed public static final String TYPE = "type"; // Job type like ImportJob public static final String SUBMISSION_DATE = "submissionDate"; public static final String START_DATE = "startDate"; public static final String END_DATE = "endDate"; public static final String PROGRESS_INT = "progressInt"; // Number of processed entities public static final String PROGRESS_MESSAGE = "progressMessage"; public static final String PROGRESS_MAX = "progressMax"; // Max number of entities to process public static final String LOG = "log"; public static final String RESULT_URL = "resultUrl"; public static final String SUCCESS_EMAIL = "successEmail"; public static final String FAILURE_EMAIL = "failureEmail"; public static final String PENDING = "PENDING"; public static final String RUNNING = "RUNNING"; public static final String SUCCESS = "SUCCESS"; public static final String FAILED = "FAILED"; public static final String CANCELED = "CANCELED"; private final List<String> jobStatusOptions = newArrayList(PENDING, RUNNING, SUCCESS, FAILED, CANCELED); JobExecutionMetaData() { super(SIMPLE_NAME, PACKAGE_SYSTEM); } @Override public void init() { setLabel("Job execution"); setAbstract(true); addAttribute(IDENTIFIER, ROLE_ID).setLabel("Job ID").setAuto(true).setNillable(false); addAttribute(USER).setDataType(STRING).setLabel("Job owner").setNillable(false); addAttribute(STATUS).setDataType(ENUM).setEnumOptions(jobStatusOptions).setLabel("Job status") .setNillable(false); addAttribute(TYPE).setDataType(STRING).setLabel("Job type").setNillable(false); addAttribute(SUBMISSION_DATE).setDataType(DATE_TIME).setLabel("Job submission date").setNillable(false); addAttribute(START_DATE).setDataType(DATE_TIME).setLabel("Job start date").setNillable(true); addAttribute(END_DATE).setDataType(DATE_TIME).setLabel("Job end date").setNillable(true); addAttribute(PROGRESS_INT).setDataType(INT).setLabel("Progress").setNillable(true); addAttribute(PROGRESS_MAX).setDataType(INT).setLabel("Maximum progress").setNillable(true); addAttribute(PROGRESS_MESSAGE).setDataType(STRING).setLabel("Progress message").setNillable(true); addAttribute(LOG).setDataType(TEXT).setLabel("Log").setNillable(true); addAttribute(RESULT_URL).setDataType(HYPERLINK).setLabel("Result URL").setNillable(true); addAttribute(FAILURE_EMAIL).setDataType(STRING).setLabel("Failure email") .setDescription("Comma-separated email addresses to send email to if execution fails or is canceled") .setNillable(true); addAttribute(SUCCESS_EMAIL).setDataType(STRING).setLabel("Success email") .setDescription("Comma-separated email addresses to send email to if execution succeeds") .setNillable(true); } }