Removed EventDistributor
This commit is contained in:
parent
728ed23077
commit
1de76f789f
|
@ -18,7 +18,6 @@ import java.util.concurrent.CountDownLatch;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import de.danoeh.antennapod.core.event.QueueEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
|
@ -106,18 +105,8 @@ public class PlaybackServiceTaskManagerTest {
|
|||
assertNotNull(testQueue);
|
||||
assertTrue(testQueue.isEmpty());
|
||||
|
||||
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(1);
|
||||
EventDistributor.EventListener queueListener = new EventDistributor.EventListener() {
|
||||
@Override
|
||||
public void update(EventDistributor eventDistributor, Integer arg) {
|
||||
countDownLatch.countDown();
|
||||
}
|
||||
};
|
||||
EventDistributor.getInstance().register(queueListener);
|
||||
List<FeedItem> queue = writeTestQueue("a");
|
||||
EventBus.getDefault().post(QueueEvent.setQueue(queue));
|
||||
countDownLatch.await(5000, TimeUnit.MILLISECONDS);
|
||||
|
||||
assertNotNull(queue);
|
||||
testQueue = pstm.getQueue();
|
||||
|
|
|
@ -19,7 +19,6 @@ import java.util.List;
|
|||
|
||||
import de.danoeh.antennapod.activity.MainActivity;
|
||||
import de.danoeh.antennapod.core.event.QueueEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
|
|
|
@ -10,7 +10,6 @@ import com.joanzapata.iconify.fonts.MaterialModule;
|
|||
|
||||
import de.danoeh.antennapod.core.ApCoreEventBusIndex;
|
||||
import de.danoeh.antennapod.core.ClientConfig;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.spa.SPAUtil;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
|
@ -55,7 +54,6 @@ public class PodcastApp extends Application {
|
|||
|
||||
ClientConfig.initialize(this);
|
||||
|
||||
EventDistributor.getInstance();
|
||||
Iconify.with(new FontAwesomeModule());
|
||||
Iconify.with(new MaterialModule());
|
||||
|
||||
|
|
|
@ -50,7 +50,6 @@ import de.danoeh.antennapod.core.asynctask.FeedRemover;
|
|||
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
|
||||
import de.danoeh.antennapod.core.event.MessageEvent;
|
||||
import de.danoeh.antennapod.core.event.QueueEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
|
|
|
@ -38,7 +38,6 @@ import de.danoeh.antennapod.core.asynctask.FeedRemover;
|
|||
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
|
||||
import de.danoeh.antennapod.core.event.FeedListUpdateEvent;
|
||||
import de.danoeh.antennapod.core.event.MessageEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
|
|
|
@ -37,8 +37,6 @@ import org.apache.commons.lang3.StringUtils;
|
|||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -50,7 +48,6 @@ import de.danoeh.antennapod.R;
|
|||
import de.danoeh.antennapod.adapter.FeedItemlistDescriptionAdapter;
|
||||
import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator;
|
||||
import de.danoeh.antennapod.core.event.DownloadEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedPreferences;
|
||||
|
|
|
@ -20,7 +20,6 @@ import java.util.List;
|
|||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.adapter.DownloadLogAdapter;
|
||||
import de.danoeh.antennapod.core.event.DownloadLogEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.service.download.DownloadStatus;
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.widget.Toast;
|
|||
|
||||
import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration;
|
||||
|
||||
import de.danoeh.antennapod.core.event.DownloadLogEvent;
|
||||
import de.danoeh.antennapod.core.event.FeedListUpdateEvent;
|
||||
import de.danoeh.antennapod.core.event.PlaybackPositionEvent;
|
||||
import de.danoeh.antennapod.core.event.PlayerStatusEvent;
|
||||
|
@ -43,7 +42,6 @@ import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
|
|||
import de.danoeh.antennapod.core.event.DownloadEvent;
|
||||
import de.danoeh.antennapod.core.event.DownloaderUpdate;
|
||||
import de.danoeh.antennapod.core.event.FeedItemEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.service.download.DownloadRequest;
|
||||
|
|
|
@ -48,7 +48,6 @@ import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator;
|
|||
import de.danoeh.antennapod.core.event.DownloadEvent;
|
||||
import de.danoeh.antennapod.core.event.DownloaderUpdate;
|
||||
import de.danoeh.antennapod.core.event.FeedItemEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedEvent;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
|
|
|
@ -50,7 +50,6 @@ import de.danoeh.antennapod.adapter.actionbutton.ItemActionButton;
|
|||
import de.danoeh.antennapod.core.event.DownloadEvent;
|
||||
import de.danoeh.antennapod.core.event.DownloaderUpdate;
|
||||
import de.danoeh.antennapod.core.event.FeedItemEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.glide.ApGlideSettings;
|
||||
|
|
|
@ -26,7 +26,6 @@ import de.danoeh.antennapod.adapter.FeedItemlistAdapter;
|
|||
import de.danoeh.antennapod.core.event.DownloadEvent;
|
||||
import de.danoeh.antennapod.core.event.DownloaderUpdate;
|
||||
import de.danoeh.antennapod.core.event.FeedItemEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.service.download.Downloader;
|
||||
|
|
|
@ -43,7 +43,6 @@ import de.danoeh.antennapod.core.event.DownloadEvent;
|
|||
import de.danoeh.antennapod.core.event.DownloaderUpdate;
|
||||
import de.danoeh.antennapod.core.event.FeedItemEvent;
|
||||
import de.danoeh.antennapod.core.event.QueueEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
||||
|
|
|
@ -21,7 +21,6 @@ import de.danoeh.antennapod.R;
|
|||
import de.danoeh.antennapod.activity.MainActivity;
|
||||
import de.danoeh.antennapod.adapter.SearchlistAdapter;
|
||||
import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedComponent;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
|
@ -33,7 +32,6 @@ import io.reactivex.disposables.Disposable;
|
|||
import io.reactivex.schedulers.Schedulers;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
/**
|
||||
* Performs a search operation on all feeds or one specific feed and displays the search result.
|
||||
|
|
|
@ -30,7 +30,6 @@ import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
|
|||
import de.danoeh.antennapod.core.event.DownloadEvent;
|
||||
import de.danoeh.antennapod.core.event.FeedListUpdateEvent;
|
||||
import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
||||
import de.danoeh.antennapod.core.service.download.DownloadService;
|
||||
|
|
|
@ -1,87 +0,0 @@
|
|||
package de.danoeh.antennapod.core.feed;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.AbstractQueue;
|
||||
import java.util.Observable;
|
||||
import java.util.Observer;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
/**
|
||||
* Notifies its observers about changes in the feed database. Observers can
|
||||
* register by retrieving an instance of this class and registering an
|
||||
* EventListener. When new events arrive, the EventDistributor will process the
|
||||
* event queue in a handler that runs on the main thread. The observers will only
|
||||
* be notified once if the event queue contains multiple elements.
|
||||
*
|
||||
* Events can be sent with the send* methods.
|
||||
*/
|
||||
public class EventDistributor extends Observable {
|
||||
private static final String TAG = "EventDistributor";
|
||||
|
||||
private final Handler handler;
|
||||
private final AbstractQueue<Integer> events;
|
||||
|
||||
private static EventDistributor instance;
|
||||
|
||||
private EventDistributor() {
|
||||
this.handler = new Handler();
|
||||
events = new ConcurrentLinkedQueue<>();
|
||||
}
|
||||
|
||||
public static synchronized EventDistributor getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new EventDistributor();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void register(EventListener el) {
|
||||
addObserver(el);
|
||||
}
|
||||
|
||||
public void unregister(EventListener el) {
|
||||
deleteObserver(el);
|
||||
}
|
||||
|
||||
private void addEvent(Integer i) {
|
||||
events.offer(i);
|
||||
handler.post(EventDistributor.this::processEventQueue);
|
||||
}
|
||||
|
||||
private void processEventQueue() {
|
||||
Integer result = 0;
|
||||
Log.d(TAG, "Processing event queue. Number of events: " + events.size());
|
||||
for (Integer current = events.poll(); current != null; current = events
|
||||
.poll()) {
|
||||
result |= current;
|
||||
}
|
||||
if (result != 0) {
|
||||
Log.d(TAG, "Notifying observers. Data: " + result);
|
||||
setChanged();
|
||||
notifyObservers(result);
|
||||
} else {
|
||||
Log.d(TAG, "Event queue didn't contain any new events. Observers will not be notified.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addObserver(Observer observer) {
|
||||
super.addObserver(observer);
|
||||
}
|
||||
|
||||
public abstract static class EventListener implements Observer {
|
||||
|
||||
@Override
|
||||
public void update(Observable observable, Object data) {
|
||||
if (observable instanceof EventDistributor
|
||||
&& data instanceof Integer) {
|
||||
update((EventDistributor) observable, (Integer) data);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void update(EventDistributor eventDistributor,
|
||||
Integer arg);
|
||||
}
|
||||
}
|
|
@ -6,7 +6,6 @@ import android.preference.PreferenceManager;
|
|||
|
||||
import android.util.Log;
|
||||
import de.danoeh.antennapod.core.event.PlayerStatusEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
|
||||
|
|
|
@ -31,7 +31,6 @@ import de.danoeh.antennapod.core.util.comparator.PlaybackCompletionDateComparato
|
|||
* Provides methods for reading data from the AntennaPod database.
|
||||
* In general, all database calls in DBReader-methods are executed on the caller's thread.
|
||||
* This means that the caller should make sure that DBReader-methods are not executed on the GUI-thread.
|
||||
* This class will use the {@link de.danoeh.antennapod.core.feed.EventDistributor} to notify listeners about changes in the database.
|
||||
*/
|
||||
public final class DBReader {
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||
|
||||
import de.danoeh.antennapod.core.ClientConfig;
|
||||
import de.danoeh.antennapod.core.event.FeedListUpdateEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
|
|
|
@ -28,7 +28,6 @@ import de.danoeh.antennapod.core.event.FavoritesEvent;
|
|||
import de.danoeh.antennapod.core.event.FeedItemEvent;
|
||||
import de.danoeh.antennapod.core.event.MessageEvent;
|
||||
import de.danoeh.antennapod.core.event.QueueEvent;
|
||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedEvent;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
|
@ -51,8 +50,6 @@ import de.danoeh.antennapod.core.util.SortOrder;
|
|||
* In general, DBWriter-methods will be executed on an internal ExecutorService.
|
||||
* Some methods return a Future-object which the caller can use for waiting for the method's completion. The returned Future's
|
||||
* will NOT contain any results.
|
||||
* The caller can also use the {@link EventDistributor} in order to be notified about the method's completion asynchronously.
|
||||
* This class will use the {@link EventDistributor} to notify listeners about changes in the database.
|
||||
*/
|
||||
public class DBWriter {
|
||||
|
||||
|
|
Loading…
Reference in New Issue