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.tipi.service;
35
36 import java.util.List;
37 import java.util.Locale;
38
39 import javax.inject.Inject;
40
41 import org.apache.commons.lang.StringUtils;
42
43 import fr.paris.lutece.plugins.workflowcore.business.action.Action;
44 import fr.paris.lutece.plugins.workflowcore.business.resource.ResourceHistory;
45 import fr.paris.lutece.plugins.workflowcore.business.resource.ResourceWorkflow;
46 import fr.paris.lutece.plugins.workflowcore.business.state.State;
47 import fr.paris.lutece.plugins.workflowcore.business.state.StateFilter;
48 import fr.paris.lutece.plugins.workflowcore.service.action.IActionService;
49 import fr.paris.lutece.plugins.workflowcore.service.resource.IResourceHistoryService;
50 import fr.paris.lutece.plugins.workflowcore.service.resource.IResourceWorkflowService;
51 import fr.paris.lutece.plugins.workflowcore.service.state.IStateService;
52 import fr.paris.lutece.portal.service.workflow.WorkflowService;
53 import fr.paris.lutece.util.ReferenceList;
54
55
56
57
58
59
60
61
62 public class TipiWorkflowStateService implements ITipiWorkflowStateService
63 {
64
65 public static final String ID = "id";
66 public static final String NAME = "name";
67 public static final String ID_NULL = "-1";
68
69
70 @Inject
71 private IActionService _actionService;
72 @Inject
73 private IStateService _stateService;
74 @Inject
75 private IResourceWorkflowService _resourceWorkflowService;
76 @Inject
77 private IResourceHistoryService _resourceHistoryService;
78
79
80
81
82 @Override
83 public ReferenceList getListStates( int nIdAction )
84 {
85 ReferenceList referenceListStates = new ReferenceList( );
86 Action action = _actionService.findByPrimaryKey( nIdAction );
87
88 StateFilter stateFilter = new StateFilter( );
89 stateFilter.setIdWorkflow( action.getWorkflow( ).getId( ) );
90
91 List<State> listStates = _stateService.getListStateByFilter( stateFilter );
92
93 referenceListStates.addItem( ID_NULL, StringUtils.EMPTY );
94 referenceListStates.addAll( ReferenceList.convert( listStates, ID, NAME, true ) );
95
96 return referenceListStates;
97 }
98
99
100
101
102 @Override
103 public void changeState( int nIdState, int nIdResourceHistory )
104 {
105 ResourceHistory resourceHistory = _resourceHistoryService.findByPrimaryKey( nIdResourceHistory );
106 State state = _stateService.findByPrimaryKey( nIdState );
107
108 int nIdResource = resourceHistory.getIdResource( );
109 String strResourceType = resourceHistory.getResourceType( );
110 int nIdWorkflow = resourceHistory.getWorkflow( ).getId( );
111
112
113 ResourceWorkflow resourceWorkflow = _resourceWorkflowService.findByPrimaryKey( nIdResource, strResourceType, nIdWorkflow );
114 int nExternalParentId = resourceWorkflow.getExternalParentId( );
115 resourceWorkflow.setState( state );
116 _resourceWorkflowService.update( resourceWorkflow );
117
118 WorkflowService.getInstance( ).doProcessAutomaticReflexiveActions( nIdResource, strResourceType, nIdWorkflow, nExternalParentId, Locale.getDefault( ) );
119
120 WorkflowService.getInstance( ).executeActionAutomatic( nIdResource, strResourceType, nIdWorkflow, nExternalParentId );
121 }
122
123 }