1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.fit.core.reference;
20
21 import org.apache.syncope.common.lib.to.SchedTaskTO;
22 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
23 import org.apache.syncope.common.lib.types.ImplementationEngine;
24 import org.apache.syncope.common.lib.types.TaskType;
25 import org.apache.syncope.common.rest.api.beans.ExecSpecs;
26 import org.apache.syncope.core.logic.TaskLogic;
27 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
28 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
29 import org.apache.syncope.core.persistence.api.entity.Implementation;
30 import org.springframework.transaction.annotation.Transactional;
31
32 public class OpenSearchInit {
33
34 private static final String ES_REINDEX = "org.apache.syncope.core.provisioning.java.job.OpenSearchReindex";
35
36 private final ImplementationDAO implementationDAO;
37
38 private final EntityFactory entityFactory;
39
40 private final TaskLogic taskLogic;
41
42 public OpenSearchInit(
43 final ImplementationDAO implementationDAO,
44 final EntityFactory entityFactory,
45 final TaskLogic taskLogic) {
46
47 this.implementationDAO = implementationDAO;
48 this.entityFactory = entityFactory;
49 this.taskLogic = taskLogic;
50 }
51
52 @Transactional
53 public void init() {
54 Implementation reindex = implementationDAO.findByType(IdRepoImplementationType.TASKJOB_DELEGATE).
55 stream().
56 filter(impl -> impl.getEngine() == ImplementationEngine.JAVA && ES_REINDEX.equals(impl.getBody())).
57 findAny().
58 orElseGet(() -> {
59 Implementation impl = entityFactory.newEntity(Implementation.class);
60 impl.setKey(ES_REINDEX);
61 impl.setEngine(ImplementationEngine.JAVA);
62 impl.setType(IdRepoImplementationType.TASKJOB_DELEGATE);
63 impl.setBody(ES_REINDEX);
64 return implementationDAO.save(impl);
65 });
66
67 SchedTaskTO task = new SchedTaskTO();
68 task.setJobDelegate(reindex.getKey());
69 task.setName("OpenSearch Reindex");
70 task = taskLogic.createSchedTask(TaskType.SCHEDULED, task);
71
72 taskLogic.execute(new ExecSpecs.Builder().key(task.getKey()).dryRun(false).build());
73 }
74 }