1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.elasticdata.modules.workflow.service.listener;
35
36 import java.util.ArrayList;
37 import java.util.Arrays;
38 import java.util.List;
39
40 import fr.paris.lutece.plugins.elasticdata.business.IndexerAction;
41 import fr.paris.lutece.plugins.elasticdata.modules.workflow.business.WorkflowDataSource;
42 import fr.paris.lutece.portal.business.event.EventRessourceListener;
43 import fr.paris.lutece.portal.business.event.ResourceEvent;
44 import fr.paris.lutece.portal.service.util.AppLogService;
45 import fr.paris.lutece.portal.service.util.AppPropertiesService;
46
47 public class WorkflowEventListener implements EventRessourceListener
48 {
49 private static final String CONSTANT_FORM_RESPONSE_LISTENER_NAME = "WorkflowEventListener";
50 WorkflowDataSourcedules/workflow/business/WorkflowDataSource.html#WorkflowDataSource">WorkflowDataSource _WorkflowDataSource = new WorkflowDataSource( );
51 List<String> WorkflowResourceType = new ArrayList<>(
52 Arrays.asList( AppPropertiesService.getProperty( "elasticdata-workflow.workflow.ressource.type.list" ) ) );
53
54 @Override
55 public String getName( )
56 {
57 return CONSTANT_FORM_RESPONSE_LISTENER_NAME;
58 }
59
60
61
62
63 @Override
64 public void addedResource( ResourceEvent event )
65 {
66 new Thread( ( ) -> {
67 indexResource( event, IndexerAction.TASK_CREATE );
68 } ).start( );
69 }
70
71
72
73
74 @Override
75 public void deletedResource( ResourceEvent event )
76 {
77 new Thread( ( ) -> {
78 indexResource( event, IndexerAction.TASK_DELETE );
79 } ).start( );
80 }
81
82
83
84
85 @Override
86 public void updatedResource( ResourceEvent event )
87 {
88 new Thread( ( ) -> {
89 indexResource( event, IndexerAction.TASK_CREATE );
90 } ).start( );
91 }
92
93 private void indexResource( ResourceEvent event, int nIdTask )
94 {
95 if ( !checkResourceType( event ) )
96 {
97 return;
98 }
99 try
100 {
101 int nIdResource = Integer.parseInt( event.getIdResource( ) );
102 _WorkflowDataSource.indexDocument( nIdResource, nIdTask );
103 }
104 catch( NumberFormatException e )
105 {
106 AppLogService.error( "Unable to parse given event id resource to integer " + event.getIdResource( ), e );
107 }
108 }
109
110 private boolean checkResourceType( ResourceEvent event )
111 {
112 return WorkflowResourceType.contains( event.getTypeResource( ) );
113 }
114 }