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.announce.modules.workflow.service.prerequisite;
35
36 import fr.paris.lutece.plugins.announce.business.Announce;
37 import fr.paris.lutece.plugins.announce.business.AnnounceHome;
38 import fr.paris.lutece.plugins.announce.modules.workflow.business.prerequisite.PublicationDatePrerequisiteConfig;
39 import fr.paris.lutece.plugins.workflowcore.business.prerequisite.IPrerequisiteConfig;
40 import fr.paris.lutece.plugins.workflowcore.service.prerequisite.IAutomaticActionPrerequisiteService;
41 import fr.paris.lutece.portal.service.template.AppTemplateService;
42 import fr.paris.lutece.util.html.HtmlTemplate;
43
44 import org.apache.commons.lang.StringUtils;
45
46 import java.util.Calendar;
47 import java.util.GregorianCalendar;
48 import java.util.HashMap;
49 import java.util.Locale;
50 import java.util.Map;
51
52 import javax.servlet.http.HttpServletRequest;
53
54
55
56
57 public class PublicationDatePrerequisite implements IAutomaticActionPrerequisiteService
58 {
59 private static final String CONFIGURATION_DAO_BEAN_NAME = "announce-workflow.publicationDatePrerequisiteConfigDAO";
60
61 private static final String TEMPLATE_PULICATION_DATE_PREREQUISITE_CONFIG = "admin/plugins/announce/modules/workflow/prerequisite_publication_date_config.html";
62
63 private static final String MESSAGE_PREREQUISITE_PUBLICATION_DATE = "module.announce.workflow.publication_date_prerequisite.title";
64
65 private static final String MARK_CONFIG = "config";
66
67
68
69
70 @Override
71 public String getPrerequisiteType( )
72 {
73 return PublicationDatePrerequisiteConfig.PREREQUISITE_TYPE;
74 }
75
76
77
78
79 @Override
80 public String getTitleI18nKey( )
81 {
82 return MESSAGE_PREREQUISITE_PUBLICATION_DATE;
83 }
84
85
86
87
88 @Override
89 public boolean hasConfiguration( )
90 {
91 return true;
92 }
93
94
95
96
97 @Override
98 public IPrerequisiteConfig getEmptyConfiguration( )
99 {
100 return new PublicationDatePrerequisiteConfig( );
101 }
102
103
104
105
106 @Override
107 public String getConfigurationDaoBeanName( )
108 {
109 return CONFIGURATION_DAO_BEAN_NAME;
110 }
111
112
113
114
115 @Override
116 public String getConfigHtml( IPrerequisiteConfig config, HttpServletRequest request, Locale locale )
117 {
118 Map<String, Object> model = new HashMap<String, Object>( );
119 model.put( MARK_CONFIG, config );
120
121 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_PULICATION_DATE_PREREQUISITE_CONFIG, locale, model );
122
123 return template.getHtml( );
124 }
125
126
127
128
129 @Override
130 public boolean canActionBePerformed( int nIdResource, String strResourceType, IPrerequisiteConfig config, int nIdAction )
131 {
132 if ( StringUtils.equals( Announce.RESOURCE_TYPE, strResourceType ) )
133 {
134 Announce announce = AnnounceHome.findByPrimaryKey( nIdResource );
135 if ( announce.getTimePublication( ) <= 0 )
136 {
137 return false;
138 }
139 Calendar calendar = new GregorianCalendar( );
140 calendar.add( Calendar.DATE, -1 * ( (PublicationDatePrerequisiteConfig) config ).getNbDays( ) );
141
142 if ( announce.getTimePublication( ) > calendar.getTimeInMillis( ) )
143 {
144 return false;
145 }
146 }
147 return true;
148 }
149
150 }