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.genericattributes.service.entrytype;
35
36 import java.util.List;
37 import java.util.Locale;
38
39 import javax.servlet.http.HttpServletRequest;
40
41 import org.apache.commons.lang3.StringUtils;
42
43 import fr.paris.lutece.plugins.genericattributes.business.Entry;
44 import fr.paris.lutece.plugins.genericattributes.business.Field;
45 import fr.paris.lutece.plugins.genericattributes.business.FieldHome;
46 import fr.paris.lutece.plugins.genericattributes.business.GenericAttributeError;
47 import fr.paris.lutece.plugins.genericattributes.business.MandatoryError;
48 import fr.paris.lutece.plugins.genericattributes.business.Response;
49 import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
50 import fr.paris.lutece.portal.service.i18n.I18nService;
51 import fr.paris.lutece.portal.service.message.AdminMessage;
52 import fr.paris.lutece.portal.service.message.AdminMessageService;
53
54
55
56
57 public abstract class AbstractEntryTypeNumber extends EntryTypeService
58 {
59
60 private static final String PARAMETER_SUFFIX = "suffix";
61
62
63
64
65 @Override
66 public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
67 {
68 initCommonRequestData( entry, request );
69 String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
70 String strTitle = request.getParameter( PARAMETER_TITLE );
71 String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
72 String strComment = request.getParameter( PARAMETER_COMMENT );
73 String strValue = request.getParameter( PARAMETER_VALUE );
74 String strMandatory = request.getParameter( PARAMETER_MANDATORY );
75 String strMin = request.getParameter( PARAMETER_MIN );
76 String strMax = request.getParameter( PARAMETER_MAX );
77 String strUnique = request.getParameter( PARAMETER_UNIQUE );
78 String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
79 String strOnlyDisplayInBack = request.getParameter( PARAMETER_ONLY_DISPLAY_IN_BACK );
80 String strErrorMessage = request.getParameter( PARAMETER_ERROR_MESSAGE );
81 String strIndexed = request.getParameter( PARAMETER_INDEXED );
82 String strSuffix = request.getParameter( PARAMETER_SUFFIX );
83 String strPlaceholder = request.getParameter( PARAMETER_PLACEHOLDER );
84
85 String strFieldError = StringUtils.EMPTY;
86
87 if ( StringUtils.isBlank( strTitle ) )
88 {
89 strFieldError = ERROR_FIELD_TITLE;
90 }
91
92 if ( StringUtils.isNotBlank( strFieldError ) )
93 {
94 Object [ ] tabRequiredFields = {
95 I18nService.getLocalizedString( strFieldError, locale )
96 };
97
98 return AdminMessageService.getMessageUrl( request, MESSAGE_MANDATORY_FIELD, tabRequiredFields, AdminMessage.TYPE_STOP );
99 }
100
101 Integer defaultValue = null;
102 if ( StringUtils.isNumeric( strValue ) )
103 {
104 defaultValue = Integer.parseInt( strValue );
105 }
106
107 Integer maxValue = null;
108 if ( StringUtils.isNumeric( strMax ) )
109 {
110 maxValue = Integer.parseInt( strMax );
111 }
112
113 Integer minValue = null;
114 if ( StringUtils.isNumeric( strMin ) )
115 {
116 minValue = Integer.parseInt( strMin );
117 }
118
119 entry.setTitle( strTitle );
120 entry.setHelpMessage( strHelpMessage );
121 entry.setComment( strComment );
122 entry.setCSSClass( strCSSClass );
123 entry.setIndexed( strIndexed != null );
124 entry.setErrorMessage( strErrorMessage );
125 entry.setCode( strCode );
126 entry.setUnique( strUnique != null );
127
128 GenericAttributesUtils.createOrUpdateField( entry, FIELD_TEXT_CONF, null, defaultValue == null ? null : String.valueOf( defaultValue ) );
129 GenericAttributesUtils.createOrUpdateField( entry, FIELD_MIN, null, minValue == null ? null : String.valueOf( minValue ) );
130 GenericAttributesUtils.createOrUpdateField( entry, FIELD_MAX, null, maxValue == null ? null : String.valueOf( maxValue ) );
131 GenericAttributesUtils.createOrUpdateField( entry, FIELD_SUFFIX, null, StringUtils.isNotEmpty( strSuffix ) ? strSuffix : StringUtils.EMPTY );
132 GenericAttributesUtils.createOrUpdateField( entry, FIELD_PLACEHOLDER, null, strPlaceholder != null ? strPlaceholder : StringUtils.EMPTY );
133
134 entry.setMandatory( strMandatory != null );
135 entry.setOnlyDisplayInBack( strOnlyDisplayInBack != null );
136 return null;
137 }
138
139
140
141
142 @Override
143 public GenericAttributeError getResponseData( Entry entry, HttpServletRequest request, List<Response> listResponse, Locale locale )
144 {
145 String strValueEntry = request.getParameter( PREFIX_ATTRIBUTE + entry.getIdEntry( ) ).trim( );
146
147 Response/genericattributes/business/Response.html#Response">Response response = new Response( );
148 response.setEntry( entry );
149 response.setResponseValue( strValueEntry );
150 if ( strValueEntry == null )
151 {
152 return null;
153 }
154
155 if ( StringUtils.isNotBlank( response.getResponseValue( ) ) )
156 {
157 response.setToStringValueResponse( getResponseValueForRecap( entry, request, response, locale ) );
158 }
159 else
160 {
161 response.setToStringValueResponse( StringUtils.EMPTY );
162 }
163
164 response.setIterationNumber( getResponseIterationValue( request ) );
165
166 listResponse.add( response );
167
168 return checkErrors( entry, strValueEntry, locale );
169 }
170
171 private GenericAttributeError checkErrors( Entry entry, String strValueEntry, Locale locale )
172 {
173 if ( entry.isMandatory( ) && StringUtils.isBlank( strValueEntry ) )
174 {
175 if ( StringUtils.isNotEmpty( entry.getErrorMessage( ) ) )
176 {
177 GenericAttributeErrortributes/business/GenericAttributeError.html#GenericAttributeError">GenericAttributeError error = new GenericAttributeError( );
178 error.setMandatoryError( true );
179 error.setErrorMessage( entry.getErrorMessage( ) );
180
181 return error;
182 }
183
184 return new MandatoryError( entry, locale );
185 }
186
187 if ( StringUtils.isNotBlank( strValueEntry ) && !StringUtils.isNumeric( strValueEntry ) )
188 {
189 GenericAttributeErrortributes/business/GenericAttributeError.html#GenericAttributeError">GenericAttributeError error = new GenericAttributeError( );
190 error.setMandatoryError( false );
191 error.setTitleQuestion( entry.getTitle( ) );
192 error.setErrorMessage( I18nService.getLocalizedString( MESSAGE_NUMERIC_FIELD, locale ) );
193
194 return error;
195 }
196
197 return null;
198 }
199
200
201
202
203 @Override
204 public String getResponseValueForExport( Entry entry, HttpServletRequest request, Response response, Locale locale )
205 {
206 return getResponseValue( entry, response );
207 }
208
209
210
211
212 @Override
213 public String getResponseValueForRecap( Entry entry, HttpServletRequest request, Response response, Locale locale )
214 {
215 return getResponseValue( entry, response );
216 }
217
218
219
220
221
222
223
224
225
226
227 private String getResponseValue( Entry entry, Response response )
228 {
229 if ( entry.getFields( ) == null )
230 {
231 entry.setFields( FieldHome.getFieldListByIdEntry( entry.getIdEntry( ) ) );
232 }
233
234 StringBuilder sb = new StringBuilder( );
235 sb.append( response.getResponseValue( ) );
236
237 Field field = entry.getFieldByCode( FIELD_SUFFIX );
238 if ( field != null && StringUtils.isNotBlank( field.getValue( ) ) )
239 {
240 if ( !field.getValue( ).startsWith( StringUtils.SPACE ) )
241 {
242 sb.append( StringUtils.SPACE );
243 }
244 sb.append( field.getValue( ) );
245 }
246 return sb.toString( );
247 }
248 }