1 /*
2 * Copyright (c) 2002-2014, Mairie de Paris
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright notice
10 * and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright notice
13 * and the following disclaimer in the documentation and/or other materials
14 * provided with the distribution.
15 *
16 * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 *
32 * License 1.0
33 */
34 package fr.paris.lutece.portal.service.workflow;
35
36 import fr.paris.lutece.plugins.workflowcore.business.action.Action;
37 import fr.paris.lutece.plugins.workflowcore.business.state.State;
38 import fr.paris.lutece.portal.business.user.AdminUser;
39 import fr.paris.lutece.util.ReferenceList;
40
41 import java.util.Collection;
42 import java.util.List;
43 import java.util.Locale;
44 import java.util.Map;
45
46 import javax.servlet.http.HttpServletRequest;
47
48
49 /**
50 * IWorkflowProvider.
51 */
52 public interface IWorkflowProvider
53 {
54 // GET
55
56 /**
57 * returns a list of actions possible for a given document based on the status
58 * of the document in the workflow and the user role.
59 *
60 * @param listActions the list actions
61 * @param user the adminUser
62 * @return a list of Action
63 */
64 Collection<Action> getActions( Collection<Action> listActions, AdminUser user );
65
66 /**
67 * returns a list of actions possible for a given document based on the status
68 * of the document in the workflow and the user role.
69 *
70 * @param mapActions the map actions
71 * @param user the adminUser
72 * @return a list of Action
73 */
74 Map<Integer, List<Action>> getActions( Map<Integer, List<Action>> mapActions, AdminUser user );
75
76 /**
77 * returns the actions history performed on a resource.
78 *
79 * @param nIdResource the resource id
80 * @param strResourceType the resource type
81 * @param nIdWorkflow the workflow id
82 * @param request the request
83 * @param locale the locale
84 * @return the history of actions performed on a resource
85 */
86 String getDisplayDocumentHistory( int nIdResource, String strResourceType, int nIdWorkflow,
87 HttpServletRequest request, Locale locale );
88
89 /**
90 * returns the actions history performed on a resource.
91 *
92 * @param nIdResource the resource id
93 * @param strResourceType the resource type
94 * @param nIdWorkflow the workflow id
95 * @param request the request
96 * @param locale the locale
97 * @param strTemplate The template
98 * @return the history of actions performed on a resource
99 */
100 @Deprecated
101 String getDisplayDocumentHistory( int nIdResource, String strResourceType, int nIdWorkflow,
102 HttpServletRequest request, Locale locale, String strTemplate );
103
104 /**
105 * returns the actions history performed on a resource.
106 *
107 * @param nIdResource the resource id
108 * @param strResourceType the resource type
109 * @param nIdWorkflow the workflow id
110 * @param request the request
111 * @param locale the locale
112 * @param model The model to add to the default model
113 * @param strTemplate The template
114 * @return the history of actions performed on a resource
115 */
116 String getDisplayDocumentHistory( int nIdResource, String strResourceType, int nIdWorkflow,
117 HttpServletRequest request, Locale locale, Map<String, Object> model, String strTemplate );
118
119 /**
120 * returns a xml wich contains the actions history performed on a resource.
121 *
122 * @param nIdResource the resource id
123 * @param strResourceType the resource type
124 * @param nIdWorkflow the workflow id
125 * @param request the request
126 * @param locale the locale
127 * @return a xml wich contains the history of actions performed on a resource
128 */
129 String getDocumentHistoryXml( int nIdResource, String strResourceType, int nIdWorkflow, HttpServletRequest request,
130 Locale locale );
131
132 /**
133 * returns the tasks form.
134 *
135 * @param nIdResource the resource id
136 * @param strResourceType the resource type
137 * @param nIdAction the action id
138 * @param request the request
139 * @param locale the locale
140 * @return the tasks form associated to the action
141 */
142 String getDisplayTasksForm( int nIdResource, String strResourceType, int nIdAction, HttpServletRequest request,
143 Locale locale );
144
145 /**
146 * Get all authorized resource Id.
147 *
148 * @param strResourceType the resource type
149 * @param nIdWorkflow the workflow id
150 * @param nIdWorkflowState The workflow state id
151 * @param nExternalParentId The external parent id
152 * @param user the AdminUser
153 * @return The list
154 */
155 List<Integer> getAuthorizedResourceList( String strResourceType, int nIdWorkflow, int nIdWorkflowState,
156 Integer nExternalParentId, AdminUser user );
157
158 /**
159 * Get all authorized resource Id.
160 *
161 * @param strResourceType the resource type
162 * @param nIdWorkflow the workflow id
163 * @param lListIdWorkflowState The list workflow state id
164 * @param nExternalParentId he external parent id
165 * @param user the AdminUser
166 * @return The list
167 */
168 List<Integer> getAuthorizedResourceList( String strResourceType, int nIdWorkflow,
169 List<Integer> lListIdWorkflowState, Integer nExternalParentId, AdminUser user );
170
171 /**
172 * return a referencelist wich contains a list enabled workflow.
173 *
174 * @param user the AdminUser
175 * @param locale the locale
176 * @return a referencelist wich contains a list enabled workflow
177 */
178 ReferenceList getWorkflowsEnabled( AdminUser user, Locale locale );
179
180 /**
181 * returns all state of a given workflow.
182 *
183 * @param listStates the list states
184 * @param user the adminUser
185 * @return the state of a given document
186 */
187 Collection<State> getAllStateByWorkflow( Collection<State> listStates, AdminUser user );
188
189 /**
190 * The user access code.
191 *
192 * @param request the HTTP request
193 * @return the user access code
194 */
195 String getUserAccessCode( HttpServletRequest request );
196
197 // CHECK
198
199 /**
200 * Check that a given user is allowed to view a resource depending the state of the resource.
201 *
202 * @param nIdResource the document id
203 * @param strResourceType the document type
204 * @param nIdWorkflow the workflow id*
205 * @param user the user
206 * @return a list of Action
207 */
208 boolean isAuthorized( int nIdResource, String strResourceType, int nIdWorkflow, AdminUser user );
209
210 /**
211 * Check if the action can be proceed for the given resource.
212 *
213 * @param nIdAction the id action
214 * @param request the HTTP request
215 * @return true if the action can proceed, false otherwise
216 */
217 boolean canProcessAction( int nIdAction, HttpServletRequest request );
218
219 // DO
220
221 /**
222 * Test if the information relating to various tasks associated with action are validated.
223 *
224 * @param nIdResource the resource id
225 * @param strResourceType the resource type
226 * @param nIdAction the action id
227 * @param request the request
228 * @param locale the locale
229 * @return null if there is no error in the tasks form, return the error message otherwise
230 */
231 String doValidateTasksForm( int nIdResource, String strResourceType, int nIdAction, HttpServletRequest request,
232 Locale locale );
233
234 /**
235 * Perform the information on the various tasks associated with the given
236 * action specified in parameter.
237 *
238 * @param nIdResource the resource id
239 * @param strResourceType the resource type
240 * @param nIdAction the action id
241 * @param nExternalParentId the external parent id
242 * @param request the request
243 * @param locale the locale
244 * @param strUserAccessCode the user access code
245 * @deprecated This method should not be used. Use
246 * {@link WorkflowService#doProcessAction(int, String, int, Integer, HttpServletRequest, Locale, boolean)
247 * WorkflowService.doProcessAction } instead.
248 */
249 @Deprecated
250 void doSaveTasksForm( int nIdResource, String strResourceType, int nIdAction, Integer nExternalParentId,
251 HttpServletRequest request, Locale locale, String strUserAccessCode );
252 }