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.mailinglist;
35
36 import fr.paris.lutece.util.sql.DAOUtil;
37
38 import org.apache.commons.lang.StringUtils;
39
40 import java.io.Serializable;
41
42
43
44
45
46
47
48 public class MailingListFilter implements Serializable
49 {
50 private static final long serialVersionUID = -2176789297248798592L;
51 private static final String SQL_FILTER_NAME = " name LIKE ? ";
52 private static final String SQL_FILTER_DESCRIPTION = " description LIKE ? ";
53 private static final String SQL_FILTER_WORKGROUP = " workgroup = ? ";
54 private static final String SQL_WHERE = " WHERE ";
55 private static final String SQL_AND = " AND ";
56 private static final String SQL_OR = " OR ";
57 private static final String PERCENT = "%";
58 private String _strName;
59 private String _strDescription;
60 private String _strWorkgroup;
61 private boolean _bIsWideSearch;
62
63
64
65
66 public MailingListFilter( )
67 {
68 }
69
70
71
72
73
74
75 public MailingListFilter( MailingListFilter filter )
76 {
77 _strName = filter.getName( );
78 _strDescription = filter.getDescription( );
79 _strWorkgroup = filter.getWorkgroup( );
80 _bIsWideSearch = filter.isWideSearch( );
81 }
82
83
84
85
86
87
88 public String getName( )
89 {
90 return _strName;
91 }
92
93
94
95
96
97
98 public void setName( String strName )
99 {
100 _strName = strName;
101 }
102
103
104
105
106
107
108 public boolean containsName( )
109 {
110 return StringUtils.isNotBlank( _strName );
111 }
112
113
114
115
116
117
118 public String getDescription( )
119 {
120 return _strDescription;
121 }
122
123
124
125
126
127
128 public void setDescription( String strDescription )
129 {
130 _strDescription = strDescription;
131 }
132
133
134
135
136
137
138 public boolean containsDescription( )
139 {
140 return StringUtils.isNotBlank( _strDescription );
141 }
142
143
144
145
146
147
148 public String getWorkgroup( )
149 {
150 return _strWorkgroup;
151 }
152
153
154
155
156
157
158 public void setWorkgroup( String strWorkgroup )
159 {
160 _strWorkgroup = strWorkgroup;
161 }
162
163
164
165
166
167
168 public boolean containsWorkgroup( )
169 {
170 return StringUtils.isNotBlank( _strWorkgroup );
171 }
172
173
174
175
176
177 public void setWideSearch( boolean isWideSearch )
178 {
179 _bIsWideSearch = isWideSearch;
180 }
181
182
183
184
185
186 public boolean isWideSearch( )
187 {
188 return _bIsWideSearch;
189 }
190
191
192
193
194
195
196
197 public String buildSQLQuery( String strSQL )
198 {
199 StringBuilder sbSQL = new StringBuilder( strSQL );
200 int nIndex = 1;
201
202 nIndex = buildFilter( sbSQL, containsName( ), SQL_FILTER_NAME, nIndex );
203 nIndex = buildFilter( sbSQL, containsDescription( ), SQL_FILTER_DESCRIPTION, nIndex );
204 buildFilter( sbSQL, containsWorkgroup( ), SQL_FILTER_WORKGROUP, nIndex );
205
206 return sbSQL.toString( );
207 }
208
209
210
211
212
213
214 public void setFilterValues( DAOUtil daoUtil )
215 {
216 int nIndex = 1;
217
218 if ( containsName( ) )
219 {
220 daoUtil.setString( nIndex++, PERCENT + getName( ) + PERCENT );
221 }
222
223 if ( containsDescription( ) )
224 {
225 daoUtil.setString( nIndex++, PERCENT + getDescription( ) + PERCENT );
226 }
227
228 if ( containsWorkgroup( ) )
229 {
230 daoUtil.setString( nIndex, getWorkgroup( ) );
231 }
232 }
233
234
235
236
237
238
239
240
241
242
243 private int buildFilter( StringBuilder sbSQL, boolean bAddFilter, String strSQL, int nIndex )
244 {
245 int nIndexTmp = nIndex;
246
247 if ( bAddFilter )
248 {
249 nIndexTmp = addSQLWhereOr( isWideSearch( ), sbSQL, nIndex );
250 sbSQL.append( strSQL );
251 }
252
253 return nIndexTmp;
254 }
255
256
257
258
259
260
261
262
263
264
265
266
267
268 private int addSQLWhereOr( boolean bIsWideSearch, StringBuilder sbSQL, int nIndex )
269 {
270 if ( nIndex == 1 )
271 {
272 sbSQL.append( SQL_WHERE );
273 }
274 else
275 {
276 sbSQL.append( bIsWideSearch ? SQL_OR : SQL_AND );
277 }
278
279 return nIndex + 1;
280 }
281 }