
mServer.crawler.gui.MSearchLoad Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of MServer Show documentation
Show all versions of MServer Show documentation
The crawler for mediathekview/MediathekView
/*
* MediathekView
* Copyright (C) 2008 W. Xaver
* W.Xaver[at]googlemail.com
* http://zdfmediathk.sourceforge.net/
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package mServer.crawler.gui;
import javax.swing.SwingUtilities;
import javax.swing.event.EventListenerList;
import de.mediathekview.mlib.filmesuchen.ListenerFilmeLaden;
import de.mediathekview.mlib.filmesuchen.ListenerFilmeLadenEvent;
import mServer.crawler.CrawlerConfig;
import mServer.crawler.FilmeSuchen;
public class MSearchLoad {
private enum ListenerMelden {
START, PROGRESS, FINISHED
}
public FilmeSuchen msFilmeSuchen;
private final EventListenerList listeners = new EventListenerList();
private boolean istAmLaufen = false;
public MSearchLoad() {
msFilmeSuchen = new FilmeSuchen();
msFilmeSuchen.addAdListener(new ListenerFilmeLaden() {
@Override
public synchronized void start(ListenerFilmeLadenEvent event) {
notifyStart(event);
}
@Override
public synchronized void progress(ListenerFilmeLadenEvent event) {
notifyProgress(event);
}
@Override
public synchronized void fertig(ListenerFilmeLadenEvent event) {
// Ergebnisliste listeFilme eintragen -> Feierabend!
Data.listeFilme = msFilmeSuchen.listeFilmeNeu;
undEnde(event);
}
});
}
// #######################################
// Filme bei den Sendern laden
// #######################################
public void filmeBeimSenderSuchen(boolean filmlisteUpdate) {
// Filme bei allen Sender suchen
if (!istAmLaufen) {
// nicht doppelt starten
istAmLaufen = true;
CrawlerConfig.updateFilmliste = filmlisteUpdate;
msFilmeSuchen.filmeBeimSenderLaden(Data.listeFilme);
}
}
public void updateSender(String[] sender) {
// Filme nur bei EINEM Sender suchen (nur update)
if (!istAmLaufen) {
// nicht doppelt starten
istAmLaufen = true;
msFilmeSuchen.updateSender(sender, Data.listeFilme);
}
}
// #######################################
// #######################################
public String[] getSenderNamen() {
return FilmeSuchen.getNamenSender();
}
private void undEnde(ListenerFilmeLadenEvent event) {
istAmLaufen = false;
notifyFertig(event);
System.gc();
}
// ###########################
// Listener
// ###########################
public void addAdListener(ListenerFilmeLaden listener) {
listeners.add(ListenerFilmeLaden.class, listener);
}
private void notifyStart(ListenerFilmeLadenEvent event) {
for (ListenerFilmeLaden l : listeners.getListeners(ListenerFilmeLaden.class)) {
run_(new Start(l, event, ListenerMelden.START));
}
}
private void notifyProgress(ListenerFilmeLadenEvent event) {
for (ListenerFilmeLaden l : listeners.getListeners(ListenerFilmeLaden.class)) {
run_(new Start(l, event, ListenerMelden.PROGRESS));
}
}
private void notifyFertig(ListenerFilmeLadenEvent event) {
for (ListenerFilmeLaden l : listeners.getListeners(ListenerFilmeLaden.class)) {
run_(new Start(l, event, ListenerMelden.FINISHED));
}
}
private class Start implements Runnable {
private final ListenerFilmeLaden listenerFilmeLaden;
private final ListenerFilmeLadenEvent event;
private final ListenerMelden listenerMelden;
public Start(ListenerFilmeLaden llistenerFilmeLaden, ListenerFilmeLadenEvent eevent, ListenerMelden lliListenerMelden) {
listenerFilmeLaden = llistenerFilmeLaden;
event = eevent;
listenerMelden = lliListenerMelden;
}
@Override
public synchronized void run() {
switch (listenerMelden) {
case START:
listenerFilmeLaden.start(event);
break;
case PROGRESS:
listenerFilmeLaden.progress(event);
break;
case FINISHED:
listenerFilmeLaden.fertig(event);
break;
}
}
}
private void run_(Runnable r) {
try {
if (SwingUtilities.isEventDispatchThread()) {
// entweder hier
r.run();
} else {
SwingUtilities.invokeLater(r);
}
} catch (Exception ignored) {
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy