View Javadoc
1 package net.sf.flock.impl; 2 3 import java.net.URL; 4 import java.util.ArrayList; 5 import java.util.Collection; 6 import java.util.Collections; 7 import java.util.HashMap; 8 import java.util.Iterator; 9 import java.util.List; 10 import java.util.Map; 11 12 import net.sf.flock.FeedFactoryI; 13 import net.sf.flock.FeedI; 14 import net.sf.flock.FilterI; 15 import net.sf.flock.FlockResourceException; 16 import net.sf.flock.SubscriptionI; 17 import net.sf.flock.SubscriptionInfoI; 18 import net.sf.flock.support.AbstractSubscriptionManager; 19 20 import org.apache.log4j.LogManager; 21 import org.apache.log4j.Logger; 22 23 /*** 24 * @version $Revision: 1.4 $ 25 * @author $Author: phraktle $ 26 */ 27 public class SimpleSubscriptionManager extends AbstractSubscriptionManager implements FeedFactoryI { 28 29 private final static Logger LOGGER = LogManager.getLogger(SimpleSubscriptionManager.class); 30 31 /*** Subscriptions hashed by location */ 32 private final Map subscriptions = new HashMap(); 33 34 public FeedI createFeed(SubscriptionInfoI subscriptionInfoI) { 35 return new Feed(subscriptionInfoI); 36 } 37 38 protected synchronized void addSubscription(SubscriptionI subscription) throws FlockResourceException { 39 if ( this.subscriptions.containsKey(subscription.getLocation()) ) { 40 throw new FlockResourceException("Feed "+subscription.getLocation()+" already exists in store"); 41 } 42 this.subscriptions.put(subscription.getLocation(), subscription); 43 } 44 45 public SubscriptionI getSubscription(URL location) throws FlockResourceException { 46 return (SubscriptionI)this.subscriptions.get(location); 47 } 48 49 protected Collection getSubscriptions() { 50 return Collections.unmodifiableCollection(this.subscriptions.values()); 51 } 52 53 public Collection getSubscriptionInfos() throws FlockResourceException { 54 return this.getSubscriptions(); 55 } 56 57 public void unsubscribe(URL location) throws FlockResourceException { 58 if (this.subscriptions.remove(location)==null) { 59 throw new FlockResourceException("No subscription for location "+location); 60 } 61 } 62 63 public void refresh(URL location) throws FlockResourceException { 64 Subscription subscription = (Subscription)this.subscriptions.get(location); 65 if ( subscription==null ) { 66 throw new FlockResourceException("No subscription for location "+location); 67 } 68 69 this.refresh(subscription); 70 } 71 72 public Collection findItems(FilterI[] filters) throws FlockResourceException { 73 List items = new ArrayList(); 74 for (Iterator i=this.getSubscriptions().iterator(); i.hasNext();) { 75 SubscriptionI subscription = (SubscriptionI) i.next(); 76 items.addAll( subscription.getFeed().getItems() ); 77 } 78 79 for (int i=0; i<filters.length; i++) { 80 items = filters[i].filter(items); 81 } 82 83 return items; 84 } 85 /*** 86 * @see net.sf.flock.support.AbstractSubscriptionManager#createSubscription(net.sf.flock.SubscriptionInfoI) 87 */ 88 protected SubscriptionI createSubscription(SubscriptionInfoI subscriptionInfo) throws FlockResourceException { 89 return new Subscription(subscriptionInfo.getLocation(), subscriptionInfo.getMetaData()); 90 } 91 92 93 /*** 94 * @see net.sf.flock.SubscriptionManagerI#subscribe(net.sf.flock.SubscriptionInfoI, boolean) 95 */ 96 public SubscriptionI[] subscribe(SubscriptionInfoI subscriptionInfo, boolean load) throws FlockResourceException { 97 SubscriptionI[] subs = super.subscribe(subscriptionInfo, load); 98 for (int i=0; i<subs.length; i++){ 99 this.addSubscription(subs[i]); 100 } 101 return subs; 102 } 103 /*** 104 * @see net.sf.flock.support.AbstractSubscriptionManager#getFeedFactory() 105 */ 106 protected FeedFactoryI getFeedFactory() { 107 return this; 108 } 109 110 }

This page was automatically generated by Maven