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.duration.service;
35
36 import fr.paris.lutece.plugins.workflow.modules.duration.business.PrerequisiteDurationConfig;
37 import fr.paris.lutece.plugins.workflowcore.business.prerequisite.IPrerequisiteConfig;
38 import fr.paris.lutece.plugins.workflowcore.business.resource.ResourceHistory;
39 import fr.paris.lutece.plugins.workflowcore.service.action.IActionService;
40 import fr.paris.lutece.plugins.workflowcore.service.prerequisite.IAutomaticActionPrerequisiteService;
41 import fr.paris.lutece.plugins.workflowcore.service.resource.IResourceHistoryService;
42 import fr.paris.lutece.portal.service.template.AppTemplateService;
43 import fr.paris.lutece.util.html.HtmlTemplate;
44
45 import java.sql.Timestamp;
46
47 import java.util.HashMap;
48 import java.util.Locale;
49 import java.util.Map;
50
51 import javax.inject.Inject;
52
53 import javax.servlet.http.HttpServletRequest;
54
55 public class PrerequisiteDuration implements IAutomaticActionPrerequisiteService
56 {
57 public static final String PREREQUISITE_TITLE_I18N = "module.workflow.duration.prerequisite_title";
58 public static final String CONFIG_DAO_BEAN_NAME = "workflow.PrerequisiteDurationConfigDAO";
59 private static final String TEMPLATE_DURATION_PREREQUISITE_CONFIG = "admin/plugins/workflow/modules/duration/prerequisite_duration_config.html";
60 private static final String MARK_CONFIG = "config";
61 @Inject
62 private IResourceHistoryService _resourceHistoryService;
63 @Inject
64 private IActionService _actionService;
65
66 public String getPrerequisiteType( )
67 {
68 return PrerequisiteDurationConfig.PREREQUISITE_TYPE;
69 }
70
71 public String getTitleI18nKey( )
72 {
73 return PREREQUISITE_TITLE_I18N;
74 }
75
76 public boolean hasConfiguration( )
77 {
78 return true;
79 }
80
81 public IPrerequisiteConfig getEmptyConfiguration( )
82 {
83 return new PrerequisiteDurationConfig( );
84 }
85
86 public String getConfigurationDaoBeanName( )
87 {
88 return CONFIG_DAO_BEAN_NAME;
89 }
90
91 public String getConfigHtml( IPrerequisiteConfig config, HttpServletRequest request, Locale locale )
92 {
93 Map<String, Object> model = new HashMap<>( );
94 model.put( MARK_CONFIG, config );
95
96 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_DURATION_PREREQUISITE_CONFIG, locale, model );
97
98 return template.getHtml( );
99 }
100
101
102
103
104 @Override
105 public boolean canActionBePerformed( int nIdResource, String strResourceType, IPrerequisiteConfig config, int nIdAction )
106 {
107 int idWorkflow = _actionService.findByPrimaryKeyWithoutIcon( nIdAction ).getWorkflow( ).getId( );
108 ResourceHistory resourceHistory = _resourceHistoryService.getLastHistoryResource( nIdResource, strResourceType, idWorkflow );
109
110 if ( resourceHistory == null )
111 {
112
113
114
115
116
117
118
119
120 return true;
121 }
122
123 long configNbMinutes = ( (PrerequisiteDurationConfig) config ).getDuration( );
124 long configNbMillis = configNbMinutes * 1000;
125 Timestamp timestampInState = resourceHistory.getCreationDate( );
126 long nowMillis = System.currentTimeMillis( );
127 long millisInState = nowMillis - timestampInState.getTime( );
128
129 return millisInState >= configNbMillis;
130 }
131 }