View Javadoc
1   /*
2    * Copyright (c) 2002-2021, City of 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.announce.business;
35  
36  import java.io.Serializable;
37  import java.sql.Timestamp;
38  import java.util.Collection;
39  import java.util.List;
40  
41  import org.apache.commons.collections.CollectionUtils;
42  
43  import fr.paris.lutece.plugins.announce.service.AnnounceResponseImageResourceProvider;
44  import fr.paris.lutece.plugins.genericattributes.business.Response;
45  import fr.paris.lutece.plugins.workflowcore.business.action.Action;
46  import fr.paris.lutece.portal.service.rbac.RBACResource;
47  import fr.paris.lutece.portal.service.resource.IExtendableResource;
48  import fr.paris.lutece.portal.service.util.AppLogService;
49  
50  /**
51   * This is the business class for the object Announce
52   */
53  public class Announce implements Serializable, IExtendableResource, RBACResource, Cloneable
54  {
55      /**
56       * Announce resource type
57       */
58      public static final String RESOURCE_TYPE = "announce";
59      private static final long serialVersionUID = 4717207701123679302L;
60  
61      // Variables declarations
62      private String _strTitle;
63      private String _strDescription;
64      private String _strContactInformation;
65      private int _nIdAnnounce;
66      private Category _category;
67      private boolean _bPublished;
68      private boolean _bSuspended;
69      private boolean _bSuspendedByUser;
70      private String _strUserName;
71      private String _strUserLastName;
72      private String _strUserSecondName;
73      private boolean _bHasPictures;
74      private List<Integer> _listIdImageResponse;
75      private Timestamp _dateCreation;
76      private Timestamp _dateModification;
77      private Timestamp _datePublication;
78      private long _lTimePublication;
79      private Double _nPrice;
80      private String _strTags;
81      private List<Response> _listResponse;
82      private transient Collection<Action> _listActions;
83      private int _nHasNotify;
84  
85      /**
86       * Get the list of responses of this announce
87       * 
88       * @return The list of responses of this announce
89       */
90      public List<Response> getListResponse( )
91      {
92          return _listResponse;
93      }
94  
95      /**
96       * Set the list of responses of this announce
97       * 
98       * @param listResponse
99       *            The list of responses of this announce
100      */
101     public void setListResponse( List<Response> listResponse )
102     {
103         this._listResponse = listResponse;
104     }
105 
106     /**
107      * Returns the IdAnnounce
108      * 
109      * @return The IdAnnounce
110      */
111     public int getId( )
112     {
113         return _nIdAnnounce;
114     }
115 
116     /**
117      * Sets the IdAnnounce
118      * 
119      * @param nIdAnnounce
120      *            The IdAnnounce
121      */
122     public void setId( int nIdAnnounce )
123     {
124         _nIdAnnounce = nIdAnnounce;
125     }
126 
127     /**
128      * Returns the Published state
129      * 
130      * @return The Published state
131      */
132     public boolean getPublished( )
133     {
134         return _bPublished;
135     }
136 
137     /**
138      * Sets the Published state
139      * 
140      * @param bPublished
141      *            the published state
142      */
143     public void setPublished( boolean bPublished )
144     {
145         _bPublished = bPublished;
146     }
147 
148     /**
149      * gets the suspended state
150      * 
151      * @return the suspended state of announce
152      */
153     public boolean getSuspended( )
154     {
155         return _bSuspended;
156     }
157 
158     /**
159      * sets the suspended state
160      * 
161      * @param bSuspended
162      *            the suspended state
163      */
164     public void setSuspended( boolean bSuspended )
165     {
166         _bSuspended = bSuspended;
167     }
168 
169     /**
170      * gets the title
171      * 
172      * @return the title of announce
173      */
174     public String getTitle( )
175     {
176         return _strTitle;
177     }
178 
179     /**
180      * gets the description
181      * 
182      * @return the description of announce
183      */
184     public String getDescription( )
185     {
186         return _strDescription;
187     }
188 
189     /**
190      * gets the title
191      * 
192      * @param strTitle
193      *            gets the suspended state
194      */
195     public void setTitle( String strTitle )
196     {
197         _strTitle = strTitle;
198     }
199 
200     /**
201      * sets the description
202      * 
203      * @param strDescription
204      *            the description
205      */
206     public void setDescription( String strDescription )
207     {
208         _strDescription = strDescription;
209     }
210 
211     /**
212      * gets the category
213      * 
214      * @return the announce category
215      */
216     public Category getCategory( )
217     {
218         return _category;
219     }
220 
221     /**
222      * sets the announce category
223      * 
224      * @param category
225      *            the announce category
226      */
227     public void setCategory( Category category )
228     {
229         _category = category;
230     }
231 
232     /**
233      * gets the user name
234      * 
235      * @return the username
236      */
237     public String getUserName( )
238     {
239         return _strUserName;
240     }
241 
242     /**
243      * sets the announce user name
244      * 
245      * @param strUserName
246      *            the user name
247      */
248     public void setUserName( String strUserName )
249     {
250         _strUserName = strUserName;
251     }
252 
253     /**
254      * gets the user name
255      * 
256      * @return the username
257      */
258     public String getUserLastName( )
259     {
260         return _strUserLastName;
261     }
262 
263     /**
264      * sets the announce user name
265      * 
266      * @param strUserName
267      *            the user name
268      */
269     public void setUserLastName( String strUserLastName )
270     {
271         _strUserLastName = strUserLastName;
272     }
273 
274     /**
275      * gets the user name
276      * 
277      * @return the username
278      */
279     public String getUserSecondName( )
280     {
281         return _strUserSecondName;
282     }
283 
284     /**
285      * sets the announce user name
286      * 
287      * @param strUserName
288      *            the user name
289      */
290     public void setUserSecondName( String strUserSecondName )
291     {
292         _strUserSecondName = strUserSecondName;
293     }
294 
295     /**
296      * weather or not the announce has pictures in slideshow
297      * 
298      * @return weather or not the announce has pictures in slideshow
299      */
300     public boolean getHasPictures( )
301     {
302         return _bHasPictures;
303     }
304 
305     /**
306      * set weather or not the announce has pictures
307      * 
308      * @param bHasPictures
309      *            weather or not the announce has pictures
310      */
311     public void setHasPictures( boolean bHasPictures )
312     {
313         _bHasPictures = bHasPictures;
314     }
315 
316     /**
317      * Gets the list of ids of images responses of this announce
318      * 
319      * @return The list of ids of images responses of this announce
320      */
321     public List<Integer> getListIdImageResponse( )
322     {
323         return _listIdImageResponse;
324     }
325 
326     /**
327      * Sets the list of ids of images responses of this announce
328      * 
329      * @param listIdImageResponse
330      *            the list of ids of image responses of this announce
331      */
332     public void setListIdImageResponse( List<Integer> listIdImageResponse )
333     {
334         this._listIdImageResponse = listIdImageResponse;
335     }
336 
337     /**
338      * gets the creation date
339      * 
340      * @return the creation date
341      */
342     public Timestamp getDateCreation( )
343     {
344         return _dateCreation;
345     }
346 
347     /**
348      * sets the creation date
349      * 
350      * @param time
351      *            the creation date
352      */
353     public void setDateCreation( Timestamp time )
354     {
355         this._dateCreation = time;
356     }
357 
358     /**
359      * Get the modification date
360      * 
361      * @return The modification date
362      */
363     public Timestamp getDateModification( )
364     {
365         return _dateModification;
366     }
367 
368     /**
369      * Set the modification date
370      * 
371      * @param dateModification
372      *            The modification date
373      */
374     public void setDateModification( Timestamp dateModification )
375     {
376         this._dateModification = dateModification;
377     }
378 
379     /**
380      * gets the publication time
381      * 
382      * @return the publication time
383      */
384     public long getTimePublication( )
385     {
386         return _lTimePublication;
387     }
388 
389     /**
390      * sets the publication time
391      * 
392      * @param lTime
393      *            the publication time
394      */
395     public void setTimePublication( long lTime )
396     {
397         this._lTimePublication = lTime;
398     }
399 
400     /**
401      * gets the contact information
402      * 
403      * @return the contact information
404      */
405     public String getContactInformation( )
406     {
407         return _strContactInformation;
408     }
409 
410     /**
411      * sets the contact information
412      * 
413      * @param strContactInformation
414      *            the contact information
415      */
416     public void setContactInformation( String strContactInformation )
417     {
418         this._strContactInformation = strContactInformation;
419     }
420 
421     /**
422      * gets the price of the announce
423      * 
424      * @return the price of announce
425      */
426     public Double getPrice( )
427     {
428         return _nPrice;
429     }
430 
431     /**
432      * sets the price of the announce
433      * 
434      * @param price
435      *            the price of the announce
436      */
437     public void setPrice( Double price )
438     {
439         this._nPrice = price;
440     }
441 
442     /**
443      * Check if the announce was suspended by the user or not
444      * 
445      * @return True if the announce was suspended by the user or not, false otherwise
446      */
447     public boolean getSuspendedByUser( )
448     {
449         return _bSuspendedByUser;
450     }
451 
452     /**
453      * Set the announce was suspended by the user or not
454      * 
455      * @param bSuspendedByUser
456      *            True to set the announce was suspended by the user or not, false otherwise
457      */
458     public void setSuspendedByUser( boolean bSuspendedByUser )
459     {
460         this._bSuspendedByUser = bSuspendedByUser;
461     }
462 
463     /**
464      * gets the tags of announce
465      * 
466      * @return gets the tags of announce
467      */
468     public String getTags( )
469     {
470         return _strTags;
471     }
472 
473     /**
474      * sets the Tags of announce
475      * 
476      * @param strTags
477      *            the Tags of announce
478      */
479     public void setTags( String strTags )
480     {
481         _strTags = strTags;
482     }
483 
484     /**
485      * {@inheritDoc}
486      */
487     @Override
488     public String getIdExtendableResource( )
489     {
490         return Integer.toString( getId( ) );
491     }
492 
493     /**
494      * {@inheritDoc}
495      */
496     @Override
497     public String getExtendableResourceType( )
498     {
499         return RESOURCE_TYPE;
500     }
501 
502     /**
503      * {@inheritDoc}
504      */
505     @Override
506     public String getExtendableResourceName( )
507     {
508         return getTitle( );
509     }
510 
511     /**
512      * {@inheritDoc}
513      */
514     @Override
515     public String getExtendableResourceDescription( )
516     {
517         return getDescription( );
518     }
519 
520     /**
521      * {@inheritDoc}
522      */
523     @Override
524     public String getExtendableResourceImageUrl( )
525     {
526         if ( getHasPictures( ) && CollectionUtils.isNotEmpty( getListIdImageResponse( ) ) )
527         {
528             return AnnounceResponseImageResourceProvider.getUrlDownloadImageResponse( getListIdImageResponse( ).get( 0 ) );
529         }
530 
531         return null;
532     }
533 
534     /**
535      * Get the list of workflow actions of this announce
536      * 
537      * @return The list of workflow announce of this announce
538      */
539     public Collection<Action> getListWorkflowActions( )
540     {
541         return _listActions;
542     }
543 
544     /**
545      * Set the list of workflow actions of this announce
546      * 
547      * @param listActions
548      *            The list of workflow actions of this announce
549      */
550     public void setListWorkflowActions( Collection<Action> listActions )
551     {
552         this._listActions = listActions;
553     }
554 
555     /**
556      * {@inheritDoc}
557      */
558     @Override
559     public String getResourceTypeCode( )
560     {
561         return getExtendableResourceType( );
562     }
563 
564     /**
565      * {@inheritDoc}
566      */
567     @Override
568     public String getResourceId( )
569     {
570         return getIdExtendableResource( );
571     }
572 
573     /**
574      * {@inheritDoc}
575      */
576     @Override
577     public Object clone( )
578     {
579         try
580         {
581             return super.clone( );
582         }
583         catch( CloneNotSupportedException e )
584         {
585             AppLogService.error( e.getMessage( ), e );
586         }
587 
588         return this;
589     }
590 
591     /**
592      * @return the _datePublication
593      */
594     public Timestamp getDatePublication( )
595     {
596         return new Timestamp( this.getTimePublication( ) );
597     }
598 
599     /**
600      * @param _datePublication
601      *            the _datePublication to set
602      */
603     public void setDatePublication( )
604     {
605         this._datePublication = new Timestamp( this.getTimePublication( ) );
606     }
607 
608     /**
609      * @return the _nHasNotify
610      */
611     public int getHasNotify( )
612     {
613         return _nHasNotify;
614     }
615 
616     /**
617      * @param nHasNotify
618      *            the _nHasNotify to set
619      */
620     public void setHasNotify( int nHasNotify )
621     {
622         this._nHasNotify = nHasNotify;
623     }
624 
625 }