View Javadoc
1   package fr.paris.lutece.plugins.module.announce.subscribe.service;
2   
3   import fr.paris.lutece.plugins.module.announce.subscribe.business.AnnounceSubscribtionDTO;
4   import fr.paris.lutece.plugins.module.announce.subscribe.business.IAnnounceSubscribtionDAO;
5   import fr.paris.lutece.plugins.subscribe.business.Subscription;
6   import fr.paris.lutece.plugins.subscribe.business.SubscriptionFilter;
7   import fr.paris.lutece.plugins.subscribe.service.ISubscriptionProviderService;
8   import fr.paris.lutece.portal.service.security.LuteceUser;
9   import fr.paris.lutece.portal.service.security.LuteceUserService;
10  import fr.paris.lutece.portal.service.spring.SpringContextService;
11  import org.apache.commons.lang.StringUtils;
12  
13  import java.util.Collection;
14  import java.util.HashSet;
15  import java.util.List;
16  import java.util.Set;
17  
18  public class AnnounceSubscriptionService {
19  
20      private static AnnounceSubscriptionService _instance = new AnnounceSubscriptionService( );
21      private IAnnounceSubscribtionDAO _dao = SpringContextService.getBean( "subscribe.announceSubscriptionDAO" );
22  
23      /**
24       * Private constructor
25       */
26      private AnnounceSubscriptionService( )
27      {
28          // Do nothing
29      }
30  
31      public static AnnounceSubscriptionService getInstance( )
32      {
33          return _instance;
34      }
35  
36      public void createSubscription(AnnounceSubscribtionDTO subscription, LuteceUser user )
37      {
38          createSubscription( subscription, user.getName( ));
39      }
40  
41      public void createSubscription(AnnounceSubscribtionDTO subscription, String strLuteceUserName)
42      {
43          subscription.setUserId( strLuteceUserName);
44          createSubscription( subscription );
45      }
46  
47      public void createSubscription( AnnounceSubscribtionDTO subscription )
48      {
49          _dao.insert( subscription, AnnounceSubscribePlugin.getPlugin( ) );
50      }
51  
52      public Subscription findBySubscriptionId(int nIdSubscription )
53      {
54          return _dao.load( nIdSubscription, AnnounceSubscribePlugin.getPlugin( ) );
55      }
56  
57      public List<AnnounceSubscribtionDTO> findByFilter(SubscriptionFilter filter )
58      {
59          return _dao.findByFilter( filter );
60      }
61  
62      public List<AnnounceSubscribtionDTO> findByFilterOr(String userId, String categoryId, String limitRows)
63      {
64          return _dao.findByFilterOr( userId, categoryId, limitRows );
65      }
66  
67      public void removeSubscription( int nIdSubscription, boolean bNotifySubscriptionProvider )
68      {
69          if ( bNotifySubscriptionProvider )
70          {
71              removeSubscription( findBySubscriptionId( nIdSubscription ), bNotifySubscriptionProvider );
72          }
73          else
74          {
75              _dao.delete( nIdSubscription, AnnounceSubscribePlugin.getPlugin( ) );
76          }
77      }
78  
79      public void removeSubscription( Subscription subscription, boolean bNotifySubscriptionProvider )
80      {
81          if ( bNotifySubscriptionProvider )
82          {
83              List<ISubscriptionProviderService> listProviders = SpringContextService
84                      .getBeansOfType( ISubscriptionProviderService.class );
85              for ( ISubscriptionProviderService provider : listProviders )
86              {
87                  if ( StringUtils.equals( subscription.getSubscriptionProvider( ), provider.getProviderName( ) ) )
88                  {
89                      provider.notifySubscriptionRemoval( subscription );
90                  }
91              }
92          }
93          _dao.delete( subscription.getIdSubscription( ), AnnounceSubscribePlugin.getPlugin( ) );
94      }
95  
96      public LuteceUser getLuteceUserFromSubscription( Subscription subscription )
97      {
98          return LuteceUserService.getLuteceUserFromName( subscription.getUserId( ) );
99      }
100 
101     public Collection<LuteceUser> getSubscriberList(String strSubscriptionProvider, String strSubscriptionKey,
102                                                     String strIdSubscribedResource )
103     {
104         SubscriptionFilter filter = new SubscriptionFilter( );
105         filter.setSubscriptionProvider( strSubscriptionProvider );
106         filter.setSubscriptionKey( strSubscriptionKey );
107         filter.setIdSubscribedResource( strIdSubscribedResource );
108         List<AnnounceSubscribtionDTO> listSubscription = findByFilter( filter );
109         Set<LuteceUser> usersFound = new HashSet<LuteceUser>( );
110         for ( Subscription subscription : listSubscription )
111         {
112             LuteceUser user = LuteceUserService.getLuteceUserFromName( subscription.getUserId( ) );
113             if ( user != null )
114             {
115                 usersFound.add( user );
116             }
117         }
118         return usersFound;
119     }
120 
121 }