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.extend.modules.follow.business;
35
36 import fr.paris.lutece.util.sql.DAOUtil;
37
38
39 import java.io.Serializable;
40
41 import org.apache.commons.lang3.StringUtils;
42
43
44
45
46
47
48 public class FollowFilter implements Serializable
49 {
50
51 public static final int ALL = -1;
52 private static final long serialVersionUID = -3449479672496815070L;
53
54
55 private static final String SQL_WHERE = " WHERE ";
56 private static final String SQL_AND = " AND ";
57 private static final String SQL_OR = " OR ";
58
59
60 private static final String SQL_FILTER_ID_FOLLOW = " id_follow = ? ";
61 private static final String SQL_FILTER_ID_RESOURCE = " id_resource = ? ";
62 private static final String SQL_FILTER_RESOURCE_TYPE = " resource_type = ? ";
63 private int _nIdFollow;
64 private String _strIdExtendableResource;
65 private String _strExtendableResourceType;
66 private boolean _bIsWideSearch;
67
68
69
70
71 public FollowFilter( )
72 {
73 _nIdFollow = ALL;
74 _strIdExtendableResource = StringUtils.EMPTY;
75 _strExtendableResourceType = StringUtils.EMPTY;
76 _bIsWideSearch = false;
77 }
78
79
80
81
82
83
84 public String getIdExtendableResource( )
85 {
86 return _strIdExtendableResource;
87 }
88
89
90
91
92
93
94
95 public void setIdExtendableResource( String strIdExtendableResource )
96 {
97 this._strIdExtendableResource = strIdExtendableResource;
98 }
99
100
101
102
103
104
105 public String getExtendableResourceType( )
106 {
107 return _strExtendableResourceType;
108 }
109
110
111
112
113
114
115
116 public void setExtendableResourceType( String strExtendableResourceType )
117 {
118 this._strExtendableResourceType = strExtendableResourceType;
119 }
120
121
122
123
124
125
126 public int getIdFollow( )
127 {
128 return _nIdFollow;
129 }
130
131
132
133
134
135
136
137 public void setIdFollow( int nIdFollow )
138 {
139 this._nIdFollow = nIdFollow;
140 }
141
142
143
144
145
146
147
148
149
150
151
152 public boolean isWideSearch( )
153 {
154 return _bIsWideSearch;
155 }
156
157
158
159
160
161
162
163
164
165
166
167
168 public void setIsWideSearch( boolean bIsWideSearch )
169 {
170 this._bIsWideSearch = bIsWideSearch;
171 }
172
173
174
175
176
177
178 public boolean containsIdFollow( )
179 {
180 return _nIdFollow != ALL;
181 }
182
183
184
185
186
187
188 public boolean containsIdExtendableResource( )
189 {
190 return StringUtils.isNotBlank( _strIdExtendableResource );
191 }
192
193
194
195
196
197
198 public boolean containsExtendableResourceType( )
199 {
200 return StringUtils.isNotBlank( _strExtendableResourceType );
201 }
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216 private int buildFilter( StringBuilder sbSQL, boolean bAddFilter, String strSQL, int nIndex )
217 {
218 int nIndexTmp = nIndex;
219
220 if ( bAddFilter )
221 {
222 nIndexTmp = addSQLWhereOr( isWideSearch( ), sbSQL, nIndex );
223 sbSQL.append( strSQL );
224 }
225
226 return nIndexTmp;
227 }
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244 private int addSQLWhereOr( boolean bIsWideSearch, StringBuilder sbSQL, int nIndex )
245 {
246 if ( nIndex == 1 )
247 {
248 sbSQL.append( SQL_WHERE );
249 }
250 else
251 {
252 sbSQL.append( bIsWideSearch ? SQL_OR : SQL_AND );
253 }
254
255 return nIndex + 1;
256 }
257
258
259
260
261
262
263
264
265 public String buildSQLQuery( String strSQL )
266 {
267 StringBuilder sbSQL = new StringBuilder( strSQL );
268 int nIndex = 1;
269
270 nIndex = buildFilter( sbSQL, containsIdFollow( ), SQL_FILTER_ID_FOLLOW, nIndex );
271 nIndex = buildFilter( sbSQL, containsIdExtendableResource( ), SQL_FILTER_ID_RESOURCE, nIndex );
272 buildFilter( sbSQL, containsExtendableResourceType( ), SQL_FILTER_RESOURCE_TYPE, nIndex );
273
274 return sbSQL.toString( );
275 }
276
277
278
279
280
281
282
283 public void setFilterValues( DAOUtil daoUtil )
284 {
285 int nIndex = 1;
286
287 if ( containsIdFollow( ) )
288 {
289 daoUtil.setInt( nIndex++, getIdFollow( ) );
290 }
291
292 if ( containsIdExtendableResource( ) )
293 {
294 daoUtil.setString( nIndex++, getIdExtendableResource( ) );
295 }
296
297 if ( containsExtendableResourceType( ) )
298 {
299 daoUtil.setString( nIndex++, getExtendableResourceType( ) );
300 }
301 }
302 }