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.state.service;
35
36 import javax.inject.Inject;
37 import javax.inject.Named;
38
39 import fr.paris.lutece.plugins.workflow.modules.state.business.ChooseStateTaskConfig;
40 import fr.paris.lutece.plugins.workflow.modules.state.business.ChooseStateTaskInformation;
41 import fr.paris.lutece.plugins.workflow.modules.state.business.ChooseStateTaskInformationHome;
42 import fr.paris.lutece.plugins.workflowcore.business.state.State;
43 import fr.paris.lutece.plugins.workflowcore.service.config.ITaskConfigService;
44 import fr.paris.lutece.plugins.workflowcore.service.task.ITask;
45
46
47
48
49 public class ChooseStateTaskService extends AbstractStateTaskService implements IChooseStateTaskService
50 {
51
52 @Inject
53 @Named( "workflow.chooseStateTaskConfigService" )
54 private ITaskConfigService _taskConfigService;
55
56 @Override
57 public ChooseStateTaskConfig loadConfig( ITask task )
58 {
59 ChooseStateTaskConfig config = _taskConfigService.findByPrimaryKey( task.getId( ) );
60 if ( config == null )
61 {
62 config = new ChooseStateTaskConfig( );
63 config.setIdTask( task.getId( ) );
64 _taskConfigService.create( config );
65 }
66 return config;
67 }
68
69 @Override
70 public IChooseStateController getController( ChooseStateTaskConfig config )
71 {
72 for ( IChooseStateController controller : getControllerList( ) )
73 {
74 if ( controller.getName( ).equals( config.getControllerName( ) ) )
75 {
76 return controller;
77 }
78 }
79 return null;
80 }
81
82 @Override
83 public void chooseNewState( int nIdResource, String strResourceType, ITask task, ChooseStateTaskConfig config, int nIdWorkflow, int oldState )
84 {
85 IChooseStateController controller = getController( config );
86 if ( controller == null )
87 {
88 return;
89 }
90
91 int newState = -1;
92 if ( controller.control( task, nIdResource, strResourceType ) )
93 {
94 newState = config.getIdStateOK( );
95 }
96 else
97 {
98 newState = config.getIdStateKO( );
99 }
100
101 if ( newState != -1 && newState != oldState )
102 {
103 doChangeState( task, nIdResource, strResourceType, nIdWorkflow, newState );
104 }
105 }
106
107 @Override
108 protected void saveTaskInformation( int nIdResourceHistory, ITask task, State state )
109 {
110 ChooseStateTaskInformatione/business/ChooseStateTaskInformation.html#ChooseStateTaskInformation">ChooseStateTaskInformation taskInformation = new ChooseStateTaskInformation( );
111 taskInformation.setIdHistory( nIdResourceHistory );
112 taskInformation.setIdTask( task.getId( ) );
113 taskInformation.setNewState( state.getName( ) );
114
115 ChooseStateTaskInformationHome.create( taskInformation );
116 }
117 }