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
25
26 private AnnounceSubscriptionService( )
27 {
28
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 }