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.mylutece.business.attribute;
35
36 import fr.paris.lutece.plugins.mylutece.service.MyLutecePlugin;
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.plugin.Plugin;
40 import fr.paris.lutece.portal.service.plugin.PluginService;
41 import fr.paris.lutece.portal.web.constants.Messages;
42
43 import org.apache.commons.lang3.StringUtils;
44
45 import java.util.ArrayList;
46 import java.util.List;
47 import java.util.Locale;
48
49 import javax.servlet.http.HttpServletRequest;
50
51
52
53
54
55
56 public class AttributeComboBox extends AbstractAttribute
57 {
58
59 private static final String EMPTY_STRING = "";
60
61
62 private static final String PARAMETER_TITLE = "title";
63 private static final String PARAMETER_HELP_MESSAGE = "help_message";
64 private static final String PARAMETER_MANDATORY = "mandatory";
65 private static final String PARAMETER_MULTIPLE = "multiple";
66 private static final String PARAMETER_IS_SHOWN_IN_SEARCH = "is_shown_in_search";
67
68
69 private static final String PROPERTY_TYPE_COMBOBOX = "mylutece.attribute.type.comboBox";
70 private static final String PROPERTY_CREATE_COMBOBOX_PAGETITLE = "mylutece.create_attribute.pageTitleAttributeComboBox";
71 private static final String PROPERTY_MODIFY_COMBOBOX_PAGETITLE = "mylutece.modify_attribute.pageTitleAttributeComboBox";
72
73
74 private static final String TEMPLATE_CREATE_ATTRIBUTE = "admin/plugins/mylutece/attribute/combobox/create_attribute_combobox.html";
75 private static final String TEMPLATE_MODIFY_ATTRIBUTE = "admin/plugins/mylutece/attribute/combobox/modify_attribute_combobox.html";
76 private static final String TEMPLATE_HTML_FORM_ATTRIBUTE = "admin/plugins/mylutece/attribute/combobox/html_code_form_attribute_combobox.html";
77 private static final String TEMPLATE_HTML_FORM_SEARCH_ATTRIBUTE = "admin/plugins/mylutece/attribute/combobox/html_code_form_search_attribute_combobox.html";
78
79
80
81
82 public AttributeComboBox( )
83 {
84 }
85
86
87
88
89
90
91 public String getTemplateCreateAttribute( )
92 {
93 return TEMPLATE_CREATE_ATTRIBUTE;
94 }
95
96
97
98
99
100
101 public String getTemplateModifyAttribute( )
102 {
103 return TEMPLATE_MODIFY_ATTRIBUTE;
104 }
105
106
107
108
109
110
111 public String getTemplateHtmlFormAttribute( )
112 {
113 return TEMPLATE_HTML_FORM_ATTRIBUTE;
114 }
115
116
117
118
119
120
121 public String getTemplateHtmlFormSearchAttribute( )
122 {
123 return TEMPLATE_HTML_FORM_SEARCH_ATTRIBUTE;
124 }
125
126
127
128
129
130
131 public String getPropertyCreatePageTitle( )
132 {
133 return PROPERTY_CREATE_COMBOBOX_PAGETITLE;
134 }
135
136
137
138
139
140
141 public String getPropertyModifyPageTitle( )
142 {
143 return PROPERTY_MODIFY_COMBOBOX_PAGETITLE;
144 }
145
146
147
148
149
150
151
152
153 public String setAttributeData( HttpServletRequest request )
154 {
155 String strTitle = request.getParameter( PARAMETER_TITLE );
156 String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
157 String strIsShownInSearch = request.getParameter( PARAMETER_IS_SHOWN_IN_SEARCH );
158 String strMandatory = request.getParameter( PARAMETER_MANDATORY );
159 String strMultiple = request.getParameter( PARAMETER_MULTIPLE );
160
161 if ( ( strTitle == null ) || ( strTitle.equals( EMPTY_STRING ) ) )
162 {
163 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
164 }
165
166 setTitle( strTitle );
167 setHelpMessage( strHelpMessage );
168 setMandatory( strMandatory != null );
169 setShownInSearch( strIsShownInSearch != null );
170
171 if ( getListAttributeFields( ) == null )
172 {
173 List<AttributeField> listAttributeFields = new ArrayList<AttributeField>( );
174 AttributeFieldsiness/attribute/AttributeField.html#AttributeField">AttributeField attributeField = new AttributeField( );
175 listAttributeFields.add( attributeField );
176 setListAttributeFields( listAttributeFields );
177 }
178
179 getListAttributeFields( ).get( 0 ).setMultiple( strMultiple != null );
180
181 return null;
182 }
183
184
185
186
187
188
189
190 public void setAttributeType( Locale locale )
191 {
192 AttributeTypebusiness/attribute/AttributeType.html#AttributeType">AttributeType attributeType = new AttributeType( );
193 attributeType.setLocale( locale );
194 attributeType.setClassName( this.getClass( ).getName( ) );
195 attributeType.setLabelType( PROPERTY_TYPE_COMBOBOX );
196 setAttributeType( attributeType );
197 }
198
199
200
201
202 @Override
203 public List<MyLuteceUserField> getUserFieldsData( String [ ] values, int nIdUser )
204 {
205 List<MyLuteceUserField> listUserFields = new ArrayList<MyLuteceUserField>( );
206
207 if ( values != null )
208 {
209 for ( String strValue : values )
210 {
211 MyLuteceUserFieldbusiness/attribute/MyLuteceUserField.html#MyLuteceUserField">MyLuteceUserField userField = new MyLuteceUserField( );
212 AttributeField attributeField;
213
214 if ( ( strValue == null ) || strValue.equals( EMPTY_STRING ) )
215 {
216 strValue = EMPTY_STRING;
217 attributeField = new AttributeField( );
218 attributeField.setAttribute( this );
219 attributeField.setTitle( EMPTY_STRING );
220 attributeField.setValue( EMPTY_STRING );
221 }
222 else
223 if ( StringUtils.isNumeric( strValue ) )
224 {
225 int nIdField = Integer.parseInt( strValue );
226 Plugin plugin = PluginService.getPlugin( MyLutecePlugin.PLUGIN_NAME );
227 attributeField = AttributeFieldHome.findByPrimaryKey( nIdField, plugin );
228 }
229 else
230 {
231 attributeField = new AttributeField( );
232 attributeField.setAttribute( this );
233 attributeField.setTitle( strValue );
234 attributeField.setValue( strValue );
235 }
236
237 userField.setUserId( nIdUser );
238 userField.setAttribute( this );
239 userField.setAttributeField( attributeField );
240 userField.setValue( attributeField.getTitle( ) );
241
242 listUserFields.add( userField );
243 }
244 }
245
246 return listUserFields;
247 }
248
249
250
251
252
253
254 public boolean isAnonymizable( )
255 {
256 return false;
257 }
258 }