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.portal.business.user.attribute;
35
36 import fr.paris.lutece.portal.business.user.AdminUser;
37 import fr.paris.lutece.portal.service.message.AdminMessage;
38 import fr.paris.lutece.portal.service.message.AdminMessageService;
39 import fr.paris.lutece.portal.service.user.attribute.AttributeService;
40 import fr.paris.lutece.portal.web.constants.Messages;
41
42 import org.apache.commons.lang.StringUtils;
43
44 import java.util.ArrayList;
45 import java.util.List;
46 import java.util.Locale;
47
48 import javax.servlet.http.HttpServletRequest;
49
50
51
52
53
54
55
56 public class AttributeText extends AbstractAttribute implements ISimpleValuesAttributes
57 {
58
59 private static final String EMPTY_STRING = "";
60 private static final String CONSTANT_UNDERSCORE = "_";
61
62
63 private static final String PARAMETER_TITLE = "title";
64 private static final String PARAMETER_HELP_MESSAGE = "help_message";
65 private static final String PARAMETER_MANDATORY = "mandatory";
66 private static final String PARAMETER_WIDTH = "width";
67 private static final String PARAMETER_MAX_SIZE_ENTER = "max_size_enter";
68 private static final String PARAMETER_VALUE = "value";
69 private static final String PARAMETER_IS_SHOWN_IN_SEARCH = "is_shown_in_search";
70 private static final String PARAMETER_IS_SHOWN_IN_RESULT_LIST = "is_shown_in_result_list";
71 private static final String PARAMETER_ATTRIBUTE = "attribute";
72
73
74 private static final String PROPERTY_TYPE_TEXT = "portal.users.attribute.type.text";
75 private static final String PROPERTY_CREATE_TEXT_PAGETITLE = "portal.users.create_attribute.pageTitleAttributeText";
76 private static final String PROPERTY_MODIFY_TEXT_PAGETITLE = "portal.users.modify_attribute.pageTitleAttributeText";
77 private static final String PROPERTY_MESSAGE_NO_ARITHMETICAL_CHARACTERS = "portal.users.message.noArithmeticalCharacters";
78
79
80 private static final String TEMPLATE_CREATE_ATTRIBUTE = "admin/user/attribute/text/create_attribute_text.html";
81 private static final String TEMPLATE_MODIFY_ATTRIBUTE = "admin/user/attribute/text/modify_attribute_text.html";
82 private static final String TEMPLATE_HTML_FORM_ATTRIBUTE = "admin/user/attribute/text/html_code_form_attribute_text.html";
83 private static final String TEMPLATE_HTML_FORM_SEARCH_ATTRIBUTE = "admin/user/attribute/text/html_code_form_search_attribute_text.html";
84 private static final String TEMPLATE_HTML_VALUE = "admin/user/attribute/text/html_code_value_attribute_text.html";
85 private static final String REGEX_ID = "-?[0-9]+";
86
87
88
89
90 public AttributeText( )
91 {
92 }
93
94
95
96
97
98 @Override
99 public String getTemplateCreateAttribute( )
100 {
101 return TEMPLATE_CREATE_ATTRIBUTE;
102 }
103
104
105
106
107
108 @Override
109 public String getTemplateModifyAttribute( )
110 {
111 return TEMPLATE_MODIFY_ATTRIBUTE;
112 }
113
114
115
116
117
118 @Override
119 public String getTemplateHtmlFormAttribute( )
120 {
121 return TEMPLATE_HTML_FORM_ATTRIBUTE;
122 }
123
124
125
126
127
128 @Override
129 public String getTemplateHtmlFormSearchAttribute( )
130 {
131 return TEMPLATE_HTML_FORM_SEARCH_ATTRIBUTE;
132 }
133
134
135
136
137
138 @Override
139 public String getTemplateHtmlValue( )
140 {
141 return TEMPLATE_HTML_VALUE;
142 }
143
144
145
146
147
148 @Override
149 public String getPropertyCreatePageTitle( )
150 {
151 return PROPERTY_CREATE_TEXT_PAGETITLE;
152 }
153
154
155
156
157
158 @Override
159 public String getPropertyModifyPageTitle( )
160 {
161 return PROPERTY_MODIFY_TEXT_PAGETITLE;
162 }
163
164
165
166
167
168
169 @Override
170 public String setAttributeData( HttpServletRequest request )
171 {
172 String strTitle = request.getParameter( PARAMETER_TITLE );
173 String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null )
174 ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
175 String strIsShownInSearch = request.getParameter( PARAMETER_IS_SHOWN_IN_SEARCH );
176 String strIsShownInResultList = request.getParameter( PARAMETER_IS_SHOWN_IN_RESULT_LIST );
177 String strMandatory = request.getParameter( PARAMETER_MANDATORY );
178 String strWidth = request.getParameter( PARAMETER_WIDTH );
179 String strMaxSizeEnter = request.getParameter( PARAMETER_MAX_SIZE_ENTER );
180 String strValue = request.getParameter( PARAMETER_VALUE );
181
182 String strError;
183
184 if ( StringUtils.isNotBlank( strTitle ) && StringUtils.isNotBlank( strWidth ) )
185 {
186 if ( strWidth.matches( REGEX_ID ) )
187 {
188 int nWidth = Integer.parseInt( strWidth );
189
190 int nMaxSizeEnter;
191
192 if ( StringUtils.isNotBlank( strMaxSizeEnter ) && !strMaxSizeEnter.matches( REGEX_ID ) )
193 {
194 return AdminMessageService.getMessageUrl( request, PROPERTY_MESSAGE_NO_ARITHMETICAL_CHARACTERS,
195 AdminMessage.TYPE_STOP );
196 }
197 else if ( ( strMaxSizeEnter == null ) || strMaxSizeEnter.equals( EMPTY_STRING ) )
198 {
199 nMaxSizeEnter = -1;
200 }
201 else
202 {
203 nMaxSizeEnter = Integer.parseInt( strMaxSizeEnter );
204 }
205
206 setTitle( strTitle );
207 setHelpMessage( strHelpMessage );
208 setMandatory( strMandatory != null );
209 setShownInSearch( strIsShownInSearch != null );
210 setShownInResultList( strIsShownInResultList != null );
211
212 if ( getListAttributeFields( ) == null )
213 {
214 List<AttributeField> listAttributeFields = new ArrayList<AttributeField>( );
215 AttributeField attributeField = new AttributeField( );
216 listAttributeFields.add( attributeField );
217 setListAttributeFields( listAttributeFields );
218 }
219
220 getListAttributeFields( ).get( 0 ).setValue( strValue );
221 getListAttributeFields( ).get( 0 ).setWidth( nWidth );
222 getListAttributeFields( ).get( 0 ).setMaxSizeEnter( nMaxSizeEnter );
223
224 return null;
225 }
226 else
227 {
228 strError = PROPERTY_MESSAGE_NO_ARITHMETICAL_CHARACTERS;
229 }
230 }
231 else
232 {
233 strError = Messages.MANDATORY_FIELDS;
234 }
235
236 return AdminMessageService.getMessageUrl( request, strError, AdminMessage.TYPE_STOP );
237 }
238
239
240
241
242
243 @Override
244 public void setAttributeType( Locale locale )
245 {
246 AttributeType attributeType = new AttributeType( );
247 attributeType.setLocale( locale );
248 attributeType.setClassName( this.getClass( ).getName( ) );
249 attributeType.setLabelType( PROPERTY_TYPE_TEXT );
250 setAttributeType( attributeType );
251 }
252
253
254
255
256
257
258
259 @Override
260 public List<AdminUserField> getUserFieldsData( HttpServletRequest request, AdminUser user )
261 {
262 String[] strValues = request.getParameterValues( PARAMETER_ATTRIBUTE + CONSTANT_UNDERSCORE +
263 getIdAttribute( ) );
264
265 return getUserFieldsData( strValues, user );
266 }
267
268
269
270
271
272
273
274 @Override
275 public List<AdminUserField> getUserFieldsData( String[] strValues, AdminUser user )
276 {
277 List<AdminUserField> listUserFields = new ArrayList<AdminUserField>( );
278 AdminUserField userField = new AdminUserField( );
279 AttributeService.getInstance( ).setAttributeField( this );
280
281 if ( strValues != null )
282 {
283 for ( String strValue : strValues )
284 {
285 if ( strValue == null )
286 {
287 strValue = EMPTY_STRING;
288 }
289
290 userField.setUser( user );
291 userField.setAttribute( this );
292
293 if ( ( getListAttributeFields( ) != null ) && ( getListAttributeFields( ).size( ) > 0 ) )
294 {
295 userField.setAttributeField( getListAttributeFields( ).get( 0 ) );
296 }
297
298 userField.setValue( strValue );
299
300 listUserFields.add( userField );
301 }
302 }
303
304 return listUserFields;
305 }
306
307
308
309
310
311 @Override
312 public boolean isAnonymizable( )
313 {
314 return true;
315 }
316 }