View Javadoc

1   /*
2    * Copyright (c) 2002-2014, Mairie de Paris
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions
7    * are met:
8    *
9    *  1. Redistributions of source code must retain the above copyright notice
10   *     and the following disclaimer.
11   *
12   *  2. Redistributions in binary form must reproduce the above copyright notice
13   *     and the following disclaimer in the documentation and/or other materials
14   *     provided with the distribution.
15   *
16   *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
17   *     contributors may be used to endorse or promote products derived from
18   *     this software without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30   * POSSIBILITY OF SUCH DAMAGE.
31   *
32   * License 1.0
33   */
34  package fr.paris.lutece.plugins.digglike.business;
35  
36  import java.sql.Timestamp;
37  import java.util.ArrayList;
38  import java.util.HashMap;
39  import java.util.List;
40  import java.util.Map;
41  
42  import fr.paris.lutece.plugins.digglike.utils.DiggUtils;
43  import fr.paris.lutece.portal.business.style.Theme;
44  import fr.paris.lutece.portal.business.style.ThemeHome;
45  import fr.paris.lutece.portal.service.plugin.Plugin;
46  import fr.paris.lutece.util.sql.DAOUtil;
47  
48  
49  /**
50   * class DiggDAO
51   */
52  public final class DiggDAO implements IDiggDAO
53  {
54      // Constants
55      private static final String SQL_QUERY_NEW_PK = "SELECT max( id_digg ) FROM digglike_digg";
56      private static final String SQL_QUERY_FIND_BY_PRIMARY_KEY = "SELECT id_digg,title," +
57          "unavailability_message,workgroup," +
58          "id_vote_type,number_vote_required,number_day_required,active_digg_submit_authentification, " +
59          "active_vote_authentification,active_comment_authentification,disable_new_digg_submit, " +
60          "authorized_comment, disable_new_comment ,id_mailing_list_digg_submit, " +
61          "active_captcha,active, date_creation, libelle_validate_button,active_digg_proposition_state,libelle_contribution, " +
62          "number_digg_submit_in_top_score,number_digg_submit_in_top_comment,limit_number_vote,number_digg_submit_caracters_shown, " +
63          "show_category_block,show_top_score_block,show_top_comment_block,active_digg_submit_paginator,number_digg_submit_per_page,role, " +
64          "enable_new_digg_submit_mail,header,sort_field,code_theme,confirmation_message,active_editor_bbcode, " +
65          "default_digg,id_default_sort,notification_new_comment_sender,notification_new_comment_title,notification_new_comment_body,notification_new_digg_submit_sender,notification_new_digg_submit_title,notification_new_digg_submit_body " + "FROM digglike_digg WHERE id_digg = ?";
66      private static final String SQL_QUERY_INSERT = "INSERT INTO digglike_digg ( id_digg,title," +
67          "unavailability_message,workgroup," +
68          "id_vote_type,number_vote_required,number_day_required,active_digg_submit_authentification, " +
69          "active_vote_authentification,active_comment_authentification,disable_new_digg_submit, " +
70          "authorized_comment, disable_new_comment ,id_mailing_list_digg_submit, " +
71          "active_captcha,active, date_creation, libelle_validate_button,active_digg_proposition_state, " +
72          "libelle_contribution,number_digg_submit_in_top_score,number_digg_submit_in_top_comment,limit_number_vote, " +
73          "number_digg_submit_caracters_shown,show_category_block,show_top_score_block,show_top_comment_block ,active_digg_submit_paginator,number_digg_submit_per_page,role," +
74          "enable_new_digg_submit_mail,header,sort_field,code_theme,confirmation_message,active_editor_bbcode,default_digg,id_default_sort,notification_new_comment_sender,notification_new_comment_title,notification_new_comment_body,notification_new_digg_submit_sender,notification_new_digg_submit_title,notification_new_digg_submit_body)" +
75          "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
76      private static final String SQL_QUERY_DELETE = "DELETE FROM digglike_digg WHERE id_digg = ? ";
77      private static final String SQL_QUERY_UPDATE = "UPDATE digglike_digg SET  id_digg=?,title=?," +
78          "unavailability_message=?,workgroup=?," +
79          "id_vote_type=?,number_vote_required=?,number_day_required=?,active_digg_submit_authentification=?, " +
80          "active_vote_authentification=?,active_comment_authentification=?,disable_new_digg_submit=?, " +
81          "authorized_comment=?, disable_new_comment=? ,id_mailing_list_digg_submit=?, " +
82          "active_captcha=?,active=?, date_creation=?, libelle_validate_button=? ,active_digg_proposition_state=?," +
83          "libelle_contribution=? ,number_digg_submit_in_top_score=?,number_digg_submit_in_top_comment=?," +
84          "limit_number_vote=?,number_digg_submit_caracters_shown=?,  " +
85          "show_category_block=?,show_top_score_block=?,show_top_comment_block=?  ," +
86          "active_digg_submit_paginator=?,number_digg_submit_per_page=? ,role=? ," +
87          "enable_new_digg_submit_mail=?,header=? ,sort_field=? ,code_theme=?, confirmation_message=?,active_editor_bbcode=? ," +
88          "default_digg=?,id_default_sort=?,notification_new_comment_sender=?,notification_new_comment_title=?,"+
89          "notification_new_comment_body=?,notification_new_digg_submit_sender=?,notification_new_digg_submit_title=?"+
90          ",notification_new_digg_submit_body=? " + "WHERE id_digg=?";
91      private static final String SQL_QUERY_SELECT_DIGG_BY_FILTER = "SELECT id_digg,title," +
92          "unavailability_message,workgroup," +
93          "id_vote_type,number_vote_required,number_day_required,active_digg_submit_authentification, " +
94          "active_vote_authentification,active_comment_authentification,disable_new_digg_submit, " +
95          "authorized_comment, disable_new_comment ,id_mailing_list_digg_submit, " +
96          "active_captcha,active, date_creation, libelle_validate_button,active_digg_proposition_state,libelle_contribution, " +
97          "number_digg_submit_in_top_score,number_digg_submit_in_top_comment,limit_number_vote,number_digg_submit_caracters_shown, " +
98          "show_category_block,show_top_score_block,show_top_comment_block, active_digg_submit_paginator,number_digg_submit_per_page,role,  " +
99          "enable_new_digg_submit_mail,header, sort_field, code_theme, confirmation_message,active_editor_bbcode, " +
100         "default_digg,id_default_sort,notification_new_comment_sender,notification_new_comment_title,notification_new_comment_body,notification_new_digg_submit_sender,notification_new_digg_submit_title,notification_new_digg_submit_body " + " FROM digglike_digg ";
101     private static final String SQL_QUERY_SELECT_ALL_THEMES = "SELECT id_digg, code_theme FROM digglike_digg";
102     private static final String SQL_FILTER_WORKGROUP = " workgroup = ? ";
103     private static final String SQL_FILTER_ROLE = " role = ? ";
104     private static final String SQL_FILTER_STATE = " active = ? ";
105     private static final String SQL_FILTER_DEFAULT_DIGG = " default_digg = ? ";
106     private static final String SQL_ORDER_BY_DATE_CREATION = " ORDER BY date_creation  DESC ";
107     private static final String SQL_QUERY_UPDATE_DIGG_ORDER = "UPDATE digglike_digg SET sort_field = ? WHERE id_digg = ?";
108 
109     /**
110      * Generates a new primary key
111      *
112      * @param plugin the plugin
113      * @return The new primary key
114      */
115     public int newPrimaryKey( Plugin plugin )
116     {
117         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_NEW_PK, plugin );
118         daoUtil.executeQuery(  );
119 
120         int nKey;
121 
122         if ( !daoUtil.next(  ) )
123         {
124             // if the table is empty
125             nKey = 1;
126         }
127 
128         nKey = daoUtil.getInt( 1 ) + 1;
129         daoUtil.free(  );
130 
131         return nKey;
132     }
133 
134     /**
135      * Insert a new record in the table.
136      *
137      * @param digg instance of the Digg to insert
138      * @param plugin the plugin
139      * @return the new digg create
140      */
141     public int insert( Digg digg, Plugin plugin )
142     {
143         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT, plugin );
144         Timestamp timestamp = new java.sql.Timestamp( new java.util.Date(  ).getTime(  ) );
145 
146         digg.setIdDigg( newPrimaryKey( plugin ) );
147 
148         int ncpt = 1;
149         daoUtil.setInt( ncpt++, digg.getIdDigg(  ) );
150         daoUtil.setString( ncpt++, digg.getTitle(  ) );
151         daoUtil.setString( ncpt++, digg.getUnavailabilityMessage(  ) );
152         daoUtil.setString( ncpt++, digg.getWorkgroup(  ) );
153         daoUtil.setInt( ncpt++, digg.getVoteType(  ).getIdVoteType(  ) );
154         daoUtil.setInt( ncpt++, digg.getNumberVoteRequired(  ) );
155         daoUtil.setInt( ncpt++, digg.getNumberDayRequired(  ) );
156         daoUtil.setBoolean( ncpt++, digg.isActiveDiggSubmitAuthentification(  ) );
157         daoUtil.setBoolean( ncpt++, digg.isActiveVoteAuthentification(  ) );
158         daoUtil.setBoolean( ncpt++, digg.isActiveCommentAuthentification(  ) );
159         daoUtil.setBoolean( ncpt++, digg.isDisableNewDiggSubmit(  ) );
160         daoUtil.setBoolean( ncpt++, digg.isAuthorizedComment(  ) );
161         daoUtil.setBoolean( ncpt++, digg.isDisableNewComment(  ) );
162         daoUtil.setInt( ncpt++, digg.getIdMailingListDiggSubmit(  ) );
163         daoUtil.setBoolean( ncpt++, digg.isActiveCaptcha(  ) );
164         daoUtil.setBoolean( ncpt++, digg.isActive(  ) );
165         daoUtil.setTimestamp( ncpt++, timestamp );
166         daoUtil.setString( ncpt++, digg.getLibelleValidateButton(  ) );
167         daoUtil.setBoolean( ncpt++, digg.isActiveDiggPropositionState(  ) );
168         daoUtil.setString( ncpt++, digg.getLibelleContribution(  ) );
169         daoUtil.setInt( ncpt++, digg.getNumberDiggSubmitInTopScore(  ) );
170         daoUtil.setInt( ncpt++, digg.getNumberDiggSubmitInTopComment(  ) );
171         daoUtil.setBoolean( ncpt++, digg.isLimitNumberVote(  ) );
172         daoUtil.setInt( ncpt++, digg.getNumberDiggSubmitCaractersShown(  ) );
173         daoUtil.setBoolean( ncpt++, digg.isShowCategoryBlock(  ) );
174         daoUtil.setBoolean( ncpt++, digg.isShowTopScoreBlock(  ) );
175         daoUtil.setBoolean( ncpt++, digg.isShowTopCommentBlock(  ) );
176         daoUtil.setBoolean( ncpt++, digg.isActiveDiggSubmitPaginator(  ) );
177         daoUtil.setInt( ncpt++, digg.getNumberDiggSubmitPerPage(  ) );
178         daoUtil.setString( ncpt++, digg.getRole(  ) );
179         daoUtil.setBoolean( ncpt++, digg.isEnableMailNewDiggSubmit(  ) );
180         daoUtil.setString( ncpt++, digg.getHeader(  ) );
181         daoUtil.setInt( ncpt++, digg.getSortField(  ) );
182         daoUtil.setString( ncpt++, digg.getCodeTheme(  ) );
183         daoUtil.setString( ncpt++, digg.getConfirmationMessage(  ) );
184         daoUtil.setBoolean( ncpt++, digg.isActiveEditorBbcode(  ) );
185         daoUtil.setBoolean( ncpt++, digg.isDefaultDigg(  ) );
186         daoUtil.setInt( ncpt++, digg.getIdDefaultSort(  ) );
187         daoUtil.setString( ncpt++, digg.getNotificationNewCommentSenderName());
188         daoUtil.setString( ncpt++, digg.getNotificationNewCommentTitle());
189         daoUtil.setString( ncpt++, digg.getNotificationNewCommentBody());
190         daoUtil.setString( ncpt++, digg.getNotificationNewDiggSubmitSenderName());
191         daoUtil.setString( ncpt++, digg.getNotificationNewDiggSubmitTitle());
192         daoUtil.setString( ncpt++, digg.getNotificationNewDiggSubmitBody());
193         daoUtil.executeUpdate(  );
194         daoUtil.free(  );
195 
196         return digg.getIdDigg(  );
197     }
198 
199     /**
200      * Load the data of the digg from the table
201      *
202      * @param nId The identifier of the digg
203      * @param plugin the plugin
204      * @return the instance of the Digg
205      */
206     public Digg load( int nId, Plugin plugin )
207     {
208         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_FIND_BY_PRIMARY_KEY, plugin );
209         daoUtil.setInt( 1, nId );
210         daoUtil.executeQuery(  );
211 
212         VoteType voteType = null;
213         Digg digg = null;
214 
215         if ( daoUtil.next(  ) )
216         {
217             int ncpt = 1;
218             digg = new Digg(  );
219             digg.setIdDigg( daoUtil.getInt( ncpt++ ) );
220             digg.setTitle( daoUtil.getString( ncpt++ ) );
221             digg.setUnavailabilityMessage( daoUtil.getString( ncpt++ ) );
222             digg.setWorkgroup( daoUtil.getString( ncpt++ ) );
223 
224             voteType = new VoteType(  );
225             voteType.setIdVoteType( daoUtil.getInt( ncpt++ ) );
226             digg.setVoteType( voteType );
227 
228             digg.setNumberVoteRequired( daoUtil.getInt( ncpt++ ) );
229             digg.setNumberDayRequired( daoUtil.getInt( ncpt++ ) );
230             digg.setActiveDiggSubmitAuthentification( daoUtil.getBoolean( ncpt++ ) );
231             digg.setActiveVoteAuthentification( daoUtil.getBoolean( ncpt++ ) );
232             digg.setActiveCommentAuthentification( daoUtil.getBoolean( ncpt++ ) );
233             digg.setDisableNewDiggSubmit( daoUtil.getBoolean( ncpt++ ) );
234             digg.setAuthorizedComment( daoUtil.getBoolean( ncpt++ ) );
235             digg.setDisableNewComment( daoUtil.getBoolean( ncpt++ ) );
236             digg.setIdMailingListDiggSubmit( daoUtil.getInt( ncpt++ ) );
237             digg.setActiveCaptcha( daoUtil.getBoolean( ncpt++ ) );
238             digg.setActive( daoUtil.getBoolean( ncpt++ ) );
239             digg.setDateCreation( daoUtil.getTimestamp( ncpt++ ) );
240             digg.setLibelleValidateButton( daoUtil.getString( ncpt++ ) );
241             digg.setActiveDiggPropositionState( daoUtil.getBoolean( ncpt++ ) );
242             digg.setLibelleContribution( daoUtil.getString( ncpt++ ) );
243             digg.setNumberDiggSubmitInTopScore( daoUtil.getInt( ncpt++ ) );
244             digg.setNumberDiggSubmitInTopComment( daoUtil.getInt( ncpt++ ) );
245             digg.setLimitNumberVote( daoUtil.getBoolean( ncpt++ ) );
246             digg.setNumberDiggSubmitCaractersShown( daoUtil.getInt( ncpt++ ) );
247             digg.setShowCategoryBlock( daoUtil.getBoolean( ncpt++ ) );
248             digg.setShowTopScoreBlock( daoUtil.getBoolean( ncpt++ ) );
249             digg.setShowTopCommentBlock( daoUtil.getBoolean( ncpt++ ) );
250             digg.setActiveDiggSubmitPaginator( daoUtil.getBoolean( ncpt++ ) );
251             digg.setNumberDiggSubmitPerPage( daoUtil.getInt( ncpt++ ) );
252             digg.setRole( daoUtil.getString( ncpt++ ) );
253             digg.setEnableMailNewDiggSubmit( daoUtil.getBoolean( ncpt++ ) );
254             digg.setHeader( daoUtil.getString( ncpt++ ) );
255             digg.setSortField( daoUtil.getInt( ncpt++ ) );
256             digg.setCodeTheme( daoUtil.getString( ncpt++ ) );
257             digg.setConfirmationMessage( daoUtil.getString( ncpt++ ) );
258             digg.setActiveEditorBbcode( daoUtil.getBoolean( ncpt++ ) );
259             digg.setDefaultDigg( daoUtil.getBoolean( ncpt++ ) );
260             digg.setIdDefaultSort( daoUtil.getInt( ncpt++ ) );
261             digg.setNotificationNewCommentSenderName(daoUtil.getString(ncpt++));
262             digg.setNotificationNewCommentTitle(daoUtil.getString(ncpt++));
263             digg.setNotificationNewCommentBody(daoUtil.getString(ncpt++));
264             digg.setNotificationNewDiggSubmitSenderName(daoUtil.getString(ncpt++));
265             digg.setNotificationNewDiggSubmitTitle(daoUtil.getString(ncpt++));
266             digg.setNotificationNewDiggSubmitBody(daoUtil.getString(ncpt++));
267         }
268 
269         daoUtil.free(  );
270 
271         return digg;
272     }
273 
274     /**
275      * Delete a record from the table
276      *
277      * @param nIdDigg The identifier of the digg
278      * @param plugin the plugin
279      */
280     public void delete( int nIdDigg, Plugin plugin )
281     {
282         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE, plugin );
283         daoUtil.setInt( 1, nIdDigg );
284         daoUtil.executeUpdate(  );
285         daoUtil.free(  );
286     }
287 
288     /**
289      * Update the digg in the table
290      *
291      * @param digg instance of the digg object to update
292      * @param plugin the plugin
293      */
294     public void store( Digg digg, Plugin plugin )
295     {
296         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE, plugin );
297         int ncpt = 1;
298         digg.setIdDigg( digg.getIdDigg(  ) );
299         daoUtil.setInt( ncpt++, digg.getIdDigg(  ) );
300         daoUtil.setString( ncpt++, digg.getTitle(  ) );
301         daoUtil.setString( ncpt++, digg.getUnavailabilityMessage(  ) );
302         daoUtil.setString( ncpt++, digg.getWorkgroup(  ) );
303         daoUtil.setInt( ncpt++, digg.getVoteType(  ).getIdVoteType(  ) );
304         daoUtil.setInt( ncpt++, digg.getNumberVoteRequired(  ) );
305         daoUtil.setInt( ncpt++, digg.getNumberDayRequired(  ) );
306         daoUtil.setBoolean( ncpt++, digg.isActiveDiggSubmitAuthentification(  ) );
307         daoUtil.setBoolean( ncpt++, digg.isActiveVoteAuthentification(  ) );
308         daoUtil.setBoolean( ncpt++, digg.isActiveCommentAuthentification(  ) );
309         daoUtil.setBoolean( ncpt++, digg.isDisableNewDiggSubmit(  ) );
310         daoUtil.setBoolean( ncpt++, digg.isAuthorizedComment(  ) );
311         daoUtil.setBoolean( ncpt++, digg.isDisableNewComment(  ) );
312         daoUtil.setInt( ncpt++, digg.getIdMailingListDiggSubmit(  ) );
313         daoUtil.setBoolean( ncpt++, digg.isActiveCaptcha(  ) );
314         daoUtil.setBoolean( ncpt++, digg.isActive(  ) );
315         daoUtil.setTimestamp( ncpt++, digg.getDateCreation(  ) );
316         daoUtil.setString( ncpt++, digg.getLibelleValidateButton(  ) );
317         daoUtil.setBoolean( ncpt++, digg.isActiveDiggPropositionState(  ) );
318         daoUtil.setString( ncpt++, digg.getLibelleContribution(  ) );
319         daoUtil.setInt( ncpt++, digg.getNumberDiggSubmitInTopScore(  ) );
320         daoUtil.setInt( ncpt++, digg.getNumberDiggSubmitInTopComment(  ) );
321         daoUtil.setBoolean( ncpt++, digg.isLimitNumberVote(  ) );
322         daoUtil.setInt( ncpt++, digg.getNumberDiggSubmitCaractersShown(  ) );
323         daoUtil.setBoolean( ncpt++, digg.isShowCategoryBlock(  ) );
324         daoUtil.setBoolean( ncpt++, digg.isShowTopScoreBlock(  ) );
325         daoUtil.setBoolean( ncpt++, digg.isShowTopCommentBlock(  ) );
326         daoUtil.setBoolean( ncpt++, digg.isActiveDiggSubmitPaginator(  ) );
327         daoUtil.setInt( ncpt++, digg.getNumberDiggSubmitPerPage(  ) );
328         daoUtil.setString( ncpt++, digg.getRole(  ) );
329         daoUtil.setBoolean( ncpt++, digg.isEnableMailNewDiggSubmit(  ) );
330         daoUtil.setString( ncpt++, digg.getHeader(  ) );
331         daoUtil.setInt( ncpt++, digg.getSortField(  ) );
332         daoUtil.setString( ncpt++, digg.getCodeTheme(  ) );
333         daoUtil.setString( ncpt++, digg.getConfirmationMessage(  ) );
334         daoUtil.setBoolean( ncpt++, digg.isActiveEditorBbcode(  ) );
335         daoUtil.setBoolean( ncpt++, digg.isDefaultDigg(  ) );
336         daoUtil.setInt( ncpt++, digg.getIdDefaultSort(  ) );
337         daoUtil.setString( ncpt++, digg.getNotificationNewCommentSenderName());
338         daoUtil.setString( ncpt++, digg.getNotificationNewCommentTitle());
339         daoUtil.setString( ncpt++, digg.getNotificationNewCommentBody());
340         daoUtil.setString( ncpt++, digg.getNotificationNewDiggSubmitSenderName());
341         daoUtil.setString( ncpt++, digg.getNotificationNewDiggSubmitTitle());
342         daoUtil.setString( ncpt++, digg.getNotificationNewDiggSubmitBody());
343         
344         daoUtil.setInt( ncpt++, digg.getIdDigg(  ) );
345 
346         daoUtil.executeUpdate(  );
347         daoUtil.free(  );
348     }
349 
350     /**
351      * Load the data of all the digg who verify the filter and returns them in a  list
352      * @param filter the filter
353      * @param plugin the plugin
354      * @return  the list of digg
355      */
356     public List<Digg> selectDiggList( DiggFilter filter, Plugin plugin )
357     {
358         List<Digg> diggList = new ArrayList<Digg>(  );
359         Digg digg = null;
360         VoteType voteType = null;
361         List<String> listStrFilter = new ArrayList<String>(  );
362         int ncpt = 1;
363 
364         if ( filter.containsWorkgroupCriteria(  ) )
365         {
366             listStrFilter.add( SQL_FILTER_WORKGROUP );
367         }
368 
369         if ( filter.containsRoleCriteria(  ) )
370         {
371             listStrFilter.add( SQL_FILTER_ROLE );
372         }
373 
374         if ( filter.containsIdState(  ) )
375         {
376             listStrFilter.add( SQL_FILTER_STATE );
377         }
378 
379         if ( filter.containsIdDefaultDigg(  ) )
380         {
381             listStrFilter.add( SQL_FILTER_DEFAULT_DIGG );
382         }
383 
384         String strSQL = DiggUtils.buildRequestWithFilter( SQL_QUERY_SELECT_DIGG_BY_FILTER, listStrFilter,
385                 SQL_ORDER_BY_DATE_CREATION );
386         DAOUtil daoUtil = new DAOUtil( strSQL, plugin );
387         int nIndex = 1;
388 
389         if ( filter.containsWorkgroupCriteria(  ) )
390         {
391             daoUtil.setString( nIndex, filter.getWorkgroup(  ) );
392             nIndex++;
393         }
394 
395         if ( filter.containsRoleCriteria(  ) )
396         {
397             daoUtil.setString( nIndex, filter.getRole(  ) );
398             nIndex++;
399         }
400 
401         if ( filter.containsIdState(  ) )
402         {
403             daoUtil.setInt( nIndex, filter.getIdState(  ) );
404             nIndex++;
405         }
406 
407         if ( filter.containsIdDefaultDigg(  ) )
408         {
409             daoUtil.setInt( nIndex, filter.getIdDefaultDigg(  ) );
410             nIndex++;
411         }
412 
413         daoUtil.executeQuery(  );
414 
415         while ( daoUtil.next(  ) )
416         {
417             ncpt = 1;
418             digg = new Digg(  );
419             digg.setIdDigg( daoUtil.getInt( ncpt++ ) );
420             digg.setTitle( daoUtil.getString( ncpt++ ) );
421             digg.setUnavailabilityMessage( daoUtil.getString( ncpt++ ) );
422             digg.setWorkgroup( daoUtil.getString( ncpt++ ) );
423 
424             voteType = new VoteType(  );
425             voteType.setIdVoteType( daoUtil.getInt( ncpt++ ) );
426             digg.setVoteType( voteType );
427 
428             digg.setNumberVoteRequired( daoUtil.getInt( ncpt++ ) );
429             digg.setNumberDayRequired( daoUtil.getInt( ncpt++ ) );
430             digg.setActiveDiggSubmitAuthentification( daoUtil.getBoolean( ncpt++ ) );
431             digg.setActiveVoteAuthentification( daoUtil.getBoolean( ncpt++ ) );
432             digg.setActiveCommentAuthentification( daoUtil.getBoolean( ncpt++ ) );
433             digg.setDisableNewDiggSubmit( daoUtil.getBoolean( ncpt++ ) );
434             digg.setAuthorizedComment( daoUtil.getBoolean( ncpt++ ) );
435             digg.setDisableNewComment( daoUtil.getBoolean( ncpt++ ) );
436             digg.setIdMailingListDiggSubmit( daoUtil.getInt( ncpt++ ) );
437             digg.setActiveCaptcha( daoUtil.getBoolean( ncpt++ ) );
438             digg.setActive( daoUtil.getBoolean( ncpt++ ) );
439             digg.setDateCreation( daoUtil.getTimestamp( ncpt++ ) );
440             digg.setLibelleValidateButton( daoUtil.getString( ncpt++ ) );
441             digg.setActiveDiggPropositionState( daoUtil.getBoolean( ncpt++ ) );
442             digg.setLibelleContribution( daoUtil.getString( ncpt++ ) );
443             digg.setNumberDiggSubmitInTopScore( daoUtil.getInt( ncpt++ ) );
444             digg.setNumberDiggSubmitInTopComment( daoUtil.getInt( ncpt++ ) );
445             digg.setLimitNumberVote( daoUtil.getBoolean( ncpt++ ) );
446             digg.setNumberDiggSubmitCaractersShown( daoUtil.getInt( ncpt++ ) );
447             digg.setShowCategoryBlock( daoUtil.getBoolean( ncpt++ ) );
448             digg.setShowTopScoreBlock( daoUtil.getBoolean( ncpt++ ) );
449             digg.setShowTopCommentBlock( daoUtil.getBoolean( ncpt++ ) );
450             digg.setActiveDiggSubmitPaginator( daoUtil.getBoolean( ncpt++ ) );
451             digg.setNumberDiggSubmitPerPage( daoUtil.getInt( ncpt++ ) );
452             digg.setRole( daoUtil.getString( ncpt++ ) );
453             digg.setEnableMailNewDiggSubmit( daoUtil.getBoolean( ncpt++ ) );
454             digg.setHeader( daoUtil.getString( ncpt++ ) );
455             digg.setSortField( daoUtil.getInt( ncpt++ ) );
456             digg.setCodeTheme( daoUtil.getString( ncpt++ ) );
457             digg.setConfirmationMessage( daoUtil.getString( ncpt++ ) );
458             digg.setActiveEditorBbcode( daoUtil.getBoolean( ncpt++ ) );
459             digg.setDefaultDigg( daoUtil.getBoolean( ncpt++ ) );
460             digg.setIdDefaultSort( daoUtil.getInt( ncpt++ ) );
461             digg.setNotificationNewCommentSenderName(daoUtil.getString(ncpt++));
462             digg.setNotificationNewCommentTitle(daoUtil.getString(ncpt++));
463             digg.setNotificationNewCommentBody(daoUtil.getString(ncpt++));
464             digg.setNotificationNewDiggSubmitSenderName(daoUtil.getString(ncpt++));
465             digg.setNotificationNewDiggSubmitTitle(daoUtil.getString(ncpt++));
466             digg.setNotificationNewDiggSubmitBody(daoUtil.getString(ncpt++));
467 
468             diggList.add( digg );
469         }
470 
471         daoUtil.free(  );
472 
473         return diggList;
474     }
475 
476     /**
477      * Modify the order of a diggsubmit
478      * @param nSortField The reference field to sort
479      * @param nId The digg identifier
480      * @param plugin The plugin
481      */
482     public void storeDiggOrderField( int nId, int nSortField, Plugin plugin )
483     {
484         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE_DIGG_ORDER, plugin );
485         daoUtil.setInt( 1, nSortField );
486         daoUtil.setInt( 2, nId );
487         daoUtil.executeUpdate(  );
488         daoUtil.free(  );
489     }
490 
491     /**
492      * Load all the themes for form xpages
493      * @param plugin the plugin
494      * @return a map containing the themes by form id
495      */
496     public Map<Integer, Theme> getXPageThemesMap( Plugin plugin )
497     {
498         Map<Integer, Theme> xPageThemesMap = new HashMap<Integer, Theme>(  );
499 
500         String strSQL = SQL_QUERY_SELECT_ALL_THEMES;
501         DAOUtil daoUtil = new DAOUtil( strSQL, plugin );
502         daoUtil.executeQuery(  );
503 
504         while ( daoUtil.next(  ) )
505         {
506             int nIndex = 1;
507             int nIdForm = daoUtil.getInt( nIndex++ );
508             String strCodeTheme = daoUtil.getString( nIndex++ );
509             Theme theme = ThemeHome.findByPrimaryKey( strCodeTheme );
510             xPageThemesMap.put( nIdForm, theme );
511         }
512 
513         daoUtil.free(  );
514 
515         return xPageThemesMap;
516     }
517 }