package org.molgenis.data.elasticsearch.index.job; import org.molgenis.data.index.meta.IndexPackage; import org.molgenis.data.jobs.model.JobExecutionMetaData; import org.molgenis.data.meta.SystemEntityType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Set; import static java.util.Collections.singleton; import static java.util.Objects.requireNonNull; import static org.molgenis.data.index.meta.IndexPackage.PACKAGE_INDEX; import static org.molgenis.data.meta.model.Package.PACKAGE_SEPARATOR; /** * This entity is used to track the progress of the execution of a IndexActionJob. */ @Component public class IndexJobExecutionMeta extends SystemEntityType { private static final String SIMPLE_NAME = "IndexJobExecution"; public static final String INDEX_JOB_EXECUTION = PACKAGE_INDEX + PACKAGE_SEPARATOR + SIMPLE_NAME; /** * Example: Transaction id can be used to group all actions into one transaction. */ public static final String ID = "id"; public static final String INDEX_ACTION_JOB_ID = "indexActionJobID"; private final IndexPackage indexPackage; private final JobExecutionMetaData jobExecutionMetaData; @Autowired public IndexJobExecutionMeta(IndexPackage indexPackage, JobExecutionMetaData jobExecutionMetaData) { super(SIMPLE_NAME, PACKAGE_INDEX); this.indexPackage = requireNonNull(indexPackage); this.jobExecutionMetaData = requireNonNull(jobExecutionMetaData); } @Override public void init() { setLabel("Index job execution"); setPackage(indexPackage); setExtends(jobExecutionMetaData); addAttribute(INDEX_ACTION_JOB_ID).setDescription( "ID of the IndexActionJob that contains the group of IndexActions that this index job execution will index.") .setNillable(false); } @Override public Set<SystemEntityType> getDependencies() { return singleton(jobExecutionMetaData); } }