diff options
Diffstat (limited to 'src/provider/CompositeResultListener.java')
-rw-r--r-- | src/provider/CompositeResultListener.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/provider/CompositeResultListener.java b/src/provider/CompositeResultListener.java new file mode 100644 index 0000000..3db91da --- /dev/null +++ b/src/provider/CompositeResultListener.java @@ -0,0 +1,56 @@ +package provider; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; +import org.json.JSONObject; + +/** + * ResultListener that can contain multiple registrations. + * + * @author Peter Wu + */ +public class CompositeResultListener implements ResultListener { + + private final List<ResultListener> listeners; + + public CompositeResultListener() { + this.listeners = new ArrayList<>(); + } + + public void register(ResultListener rl) { + listeners.add(rl); + } + + public void unregister(ResultListener rl) { + listeners.remove(rl); + } + + public List<ResultListener> getRegistered() { + return new ArrayList<>(listeners); + } + + public ResultListener findListener(Class<? extends ResultListener> rlCls) { + for (ResultListener rl : listeners) { + if (rlCls.isInstance(rl)) { + return rl; + } + } + return null; + } + + @Override + public void tweetGenerated(JSONObject obj) { + for (ResultListener rl : listeners) { + rl.tweetGenerated(obj); + } + } + + @Override + public void profileGenerated(JSONObject obj) { + for (ResultListener rl : listeners) { + rl.profileGenerated(obj); + } + } +} |