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.workflow.modules.actionsbatch.task;
35
36 import java.util.List;
37 import java.util.Locale;
38
39 import javax.servlet.http.HttpServletRequest;
40
41 import org.apache.commons.collections.CollectionUtils;
42 import org.apache.commons.lang3.StringUtils;
43
44 import fr.paris.lutece.api.user.User;
45 import fr.paris.lutece.plugins.workflow.modules.actionsbatch.service.ActionsBatchService;
46 import fr.paris.lutece.plugins.workflowcore.business.resource.ResourceHistory;
47 import fr.paris.lutece.plugins.workflowcore.service.config.ITaskConfigService;
48 import fr.paris.lutece.plugins.workflowcore.service.resource.IResourceHistoryService;
49 import fr.paris.lutece.plugins.workflowcore.service.resource.ResourceHistoryService;
50 import fr.paris.lutece.portal.service.admin.AdminAuthenticationService;
51 import fr.paris.lutece.portal.service.i18n.I18nService;
52 import fr.paris.lutece.portal.service.progressmanager.ProgressManagerService;
53 import fr.paris.lutece.portal.service.spring.SpringContextService;
54 import fr.paris.lutece.portal.service.workflow.WorkflowService;
55
56
57 public class ActionsBatchTask extends AsynchronousSimpleTask
58 {
59 private static final String PARAMETER_USER_ID = "userId";
60
61
62 private static final String TASK_TITLE = "module.workflow.actionsbatch.title";
63
64
65 private static final IResourceHistoryService _resourceHistoryService = SpringContextService.getBean( ResourceHistoryService.BEAN_SERVICE );
66 private static final ITaskConfigService _taskConfigService = SpringContextService.getBean( "workflow-actionsbatch.actionsBatchTaskConfigService" );
67 private static final WorkflowService _workflowService = WorkflowService.getInstance( );
68 private static final ProgressManagerService _progressManagerService = ProgressManagerService.getInstance( );
69
70
71 private static final String PARAMETER_FEED_TOKEN = "FEED_TOKEN";
72
73 @Override
74 public void processAsynchronousTask( int nIdResourceHistory, HttpServletRequest request, Locale locale )
75 {
76
77 final ResourceHistory resourceHistory = _resourceHistoryService.findByPrimaryKey( nIdResourceHistory );
78 int parentId = resourceHistory.getId( );
79
80
81 ActionsBatchTaskConfig config = _taskConfigService.findByPrimaryKey( getId( ) );
82
83 if ( config != null && config.getIdAction( ) > 0 && config.getIdState( ) > 0 && !StringUtils.isBlank( config.getResourceType( ) ) )
84 {
85
86
87 List<Integer> listResourceIds = _workflowService.getResourceIdListByIdState( config.getIdState( ), config.getResourceType( ) );
88
89
90 User adminUser = AdminAuthenticationService.getInstance( ).getRegisteredUser( request );
91
92
93
94
95 String strFeedToken = (String) request.getSession( ).getAttribute ( getFeedToken( ) );
96 _progressManagerService.initFeed( strFeedToken, listResourceIds.size( ) );
97
98 if ( CollectionUtils.isNotEmpty( listResourceIds ) )
99 {
100 ActionsBatchService.doProcessMassActions( request, config.getResourceType( ), config.getIdAction( ), resourceHistory.getIdResource( ), locale,
101 adminUser, listResourceIds, true, strFeedToken );
102 }
103 else
104 {
105
106 _progressManagerService.unRegisterFeed( strFeedToken );
107 }
108 }
109
110 }
111
112 @Override
113 public String getTitle( Locale pLocale )
114 {
115 return I18nService.getLocalizedString( TASK_TITLE, pLocale );
116 }
117
118
119
120
121
122 private String getFeedToken( )
123 {
124 return new StringBuilder( "FEED-")
125 .append( getAction( ).getResourceTypeCode( ) ).append( "-" )
126 .append( getAction( ).getResourceId( ) ).append( "-" )
127 .append( getAction( ).getWorkflow( ).getId( ) ).append( "-" )
128 .append( getAction( ).getId( ) )
129 .toString( );
130 }
131 }