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.plugin.Plugin;
38 import fr.paris.lutece.portal.service.plugin.PluginService;
39 import fr.paris.lutece.portal.service.util.AppPropertiesService;
40 import fr.paris.lutece.util.url.UrlItem;
41
42 import java.io.UnsupportedEncodingException;
43
44 import java.net.URLEncoder;
45
46 import java.util.ArrayList;
47 import java.util.List;
48 import java.util.Locale;
49
50 import javax.servlet.http.HttpServletRequest;
51
52
53
54
55
56
57 public class MyLuteceUserFieldFilter
58 {
59
60 private static final String EMPTY_STRING = "";
61 private static final String CONSTANT_ESPERLUETTE = "&";
62 private static final String CONSTANT_EQUAL = "=";
63 private static final String CONSTANT_UNDERSCORE = "_";
64
65
66 private static final String PARAMETER_SEARCH_IS_SEARCH = "search_is_search";
67 private static final String PARAMETER_ATTRIBUTE = "attribute";
68
69
70 private static final String PROPERTY_ENCODING_URL = "lutece.encoding.url";
71 private List<MyLuteceUserField> _listUserFields;
72
73
74
75
76
77
78 public List<MyLuteceUserField> getListUserFields( )
79 {
80 return _listUserFields;
81 }
82
83
84
85
86
87
88
89 public void setListUserFields( List<MyLuteceUserField> listUserFields )
90 {
91 _listUserFields = listUserFields;
92 }
93
94
95
96
97
98
99
100
101
102 public void setMyLuteceUserFieldFilter( HttpServletRequest request, Locale locale )
103 {
104 _listUserFields = new ArrayList<MyLuteceUserField>( );
105
106 String strIsSearch = request.getParameter( PARAMETER_SEARCH_IS_SEARCH );
107
108 if ( strIsSearch != null )
109 {
110 Plugin plugin = PluginService.getPlugin( MyLutecePlugin.PLUGIN_NAME );
111 List<IAttribute> listAttributes = AttributeHome.findAll( locale, plugin );
112
113 for ( IAttribute attribute : listAttributes )
114 {
115 for ( MyLuteceUserField userField : attribute.getUserFieldsData( request, 0 ) )
116 {
117 if ( ( userField != null ) && !userField.getValue( ).equals( EMPTY_STRING ) )
118 {
119 _listUserFields.add( userField );
120 }
121 }
122 }
123 }
124 }
125
126
127
128
129
130
131
132 public void setUrlAttributes( UrlItem url )
133 {
134 for ( MyLuteceUserField userField : _listUserFields )
135 {
136 try
137 {
138 url.addParameter( PARAMETER_ATTRIBUTE + CONSTANT_UNDERSCORE + userField.getAttribute( ).getIdAttribute( ),
139 URLEncoder.encode( userField.getValue( ), AppPropertiesService.getProperty( PROPERTY_ENCODING_URL ) ) );
140 }
141 catch( UnsupportedEncodingException e )
142 {
143 e.printStackTrace( );
144 }
145 }
146 }
147
148
149
150
151
152
153 public String getUrlAttributes( )
154 {
155 StringBuilder sbUrlAttributes = new StringBuilder( );
156
157 for ( MyLuteceUserField userField : _listUserFields )
158 {
159 if ( userField.getAttribute( ).getAttributeType( ).getClassName( ).equals( AttributeComboBox.class.getName( ) ) )
160 {
161 sbUrlAttributes.append( CONSTANT_ESPERLUETTE + PARAMETER_ATTRIBUTE + CONSTANT_UNDERSCORE + userField.getAttribute( ).getIdAttribute( )
162 + CONSTANT_EQUAL + userField.getAttributeField( ).getIdField( ) );
163 }
164 else
165 {
166 try
167 {
168 sbUrlAttributes.append( CONSTANT_ESPERLUETTE + PARAMETER_ATTRIBUTE + CONSTANT_UNDERSCORE + userField.getAttribute( ).getIdAttribute( )
169 + CONSTANT_EQUAL + URLEncoder.encode( userField.getValue( ), AppPropertiesService.getProperty( PROPERTY_ENCODING_URL ) ) );
170 }
171 catch( UnsupportedEncodingException e )
172 {
173 e.printStackTrace( );
174 }
175 }
176 }
177
178 return sbUrlAttributes.toString( );
179 }
180 }