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.directory.modules.multiview.web.record.filter.display.impl;
35
36 import java.util.ArrayList;
37 import java.util.LinkedHashMap;
38 import java.util.List;
39 import java.util.Map;
40
41 import javax.servlet.http.HttpServletRequest;
42
43 import org.apache.commons.lang.StringUtils;
44 import org.apache.commons.lang3.math.NumberUtils;
45
46 import fr.paris.lutece.plugins.directory.business.Directory;
47 import fr.paris.lutece.plugins.directory.business.DirectoryHome;
48 import fr.paris.lutece.plugins.directory.modules.multiview.service.DirectoryMultiviewPlugin;
49 import fr.paris.lutece.plugins.directory.modules.multiview.util.RecordDirectoryNameConstants;
50 import fr.paris.lutece.plugins.directory.modules.multiview.util.RecordWorkflowStateNameConstants;
51 import fr.paris.lutece.plugins.directory.modules.multiview.util.ReferenceListFactory;
52 import fr.paris.lutece.plugins.workflowcore.business.state.State;
53 import fr.paris.lutece.portal.service.admin.AdminUserService;
54 import fr.paris.lutece.portal.service.workflow.WorkflowService;
55 import fr.paris.lutece.util.ReferenceList;
56
57
58
59
60 public class RecordFilterDisplayWorkflowState extends AbstractRecordFilterDisplay
61 {
62
63 private static final String PARAMETER_ID_WORKFLOW_STATE = "multiview_id_state_workflow";
64 private static final String WORKFLOW_STATE_CODE_ATTRIBUTE = "id";
65 private static final String WORKFLOW_STATE_NAME_ATTRIBUTE = "name";
66 private static final int DEFAULT_DIRECTORY_VALUE = NumberUtils.INTEGER_MINUS_ONE;
67 private static final int DEFAULT_PREVIOUS_DIRECTORY_VALUE = NumberUtils.INTEGER_MINUS_ONE;
68 private static final int ID_WORKFLOW_UNSET = NumberUtils.INTEGER_ZERO;
69
70
71
72
73 @Override
74 public String getParameterName( )
75 {
76 return PARAMETER_ID_WORKFLOW_STATE;
77 }
78
79
80
81
82 @Override
83 public Map<String, Object> getFilterDisplayMapValues( HttpServletRequest request )
84 {
85 Map<String, Object> mapFilterNameValues = new LinkedHashMap<>( );
86
87 int nIdDirectory = NumberUtils.toInt( request.getParameter( RecordDirectoryNameConstants.PARAMETER_ID_DIRECTORY ), DEFAULT_DIRECTORY_VALUE );
88 int nIdPreviousDirectory = NumberUtils.toInt( request.getParameter( RecordDirectoryNameConstants.PARAMETER_PREVIOUS_ID_DIRECTORY ),
89 DEFAULT_PREVIOUS_DIRECTORY_VALUE );
90 String strIdWorkflowState = request.getParameter( PARAMETER_ID_WORKFLOW_STATE );
91
92 if ( nIdDirectory != nIdPreviousDirectory && request.getParameter( RecordDirectoryNameConstants.PARAMETER_PREVIOUS_ID_DIRECTORY ) != null )
93 {
94 strIdWorkflowState = StringUtils.EMPTY;
95 }
96
97 if ( StringUtils.isNotBlank( strIdWorkflowState ) )
98 {
99 mapFilterNameValues.put( RecordWorkflowStateNameConstants.FILTER_ID_WORKFLOW_STATE, strIdWorkflowState );
100 }
101
102 setValue( strIdWorkflowState );
103
104 return mapFilterNameValues;
105 }
106
107
108
109
110 @Override
111 public void buildTemplate( HttpServletRequest request )
112 {
113
114 ReferenceList referenceList = new ReferenceList( );
115
116 int nIdDirectory = NumberUtils.toInt( request.getParameter( RecordDirectoryNameConstants.PARAMETER_ID_DIRECTORY ), DEFAULT_DIRECTORY_VALUE );
117 if ( nIdDirectory != DEFAULT_DIRECTORY_VALUE )
118 {
119 referenceList = createReferenceList( request, nIdDirectory );
120 }
121
122 manageFilterTemplate( request, referenceList, PARAMETER_ID_WORKFLOW_STATE );
123 }
124
125
126
127
128
129
130
131
132
133
134 private ReferenceList createReferenceList( HttpServletRequest request, int nIdDirectory )
135 {
136 List<State> listWorkflowState = getDirectoryWorkflowStateList( request, nIdDirectory );
137
138 ReferenceList referenceList = new ReferenceList( );
139
140 if ( listWorkflowState != null && !listWorkflowState.isEmpty( ) )
141 {
142 ReferenceListFactory referenceListFactory = new ReferenceListFactory( listWorkflowState, WORKFLOW_STATE_CODE_ATTRIBUTE,
143 WORKFLOW_STATE_NAME_ATTRIBUTE );
144 referenceList = referenceListFactory.createReferenceList( );
145 }
146
147 return referenceList;
148 }
149
150
151
152
153
154
155
156
157
158
159 private List<State> getDirectoryWorkflowStateList( HttpServletRequest request, int nIdDirectory )
160 {
161 List<State> listWorkflowState = new ArrayList<>( );
162 Directory directory = DirectoryHome.findByPrimaryKey( nIdDirectory, DirectoryMultiviewPlugin.getPlugin( ) );
163
164 if ( directory != null && directory.getIdWorkflow( ) > ID_WORKFLOW_UNSET )
165 {
166 listWorkflowState.addAll( WorkflowService.getInstance( )
167 .getAllStateByWorkflow( directory.getIdWorkflow( ), AdminUserService.getAdminUser( request ) ) );
168 }
169
170 return listWorkflowState;
171 }
172 }