/*
* 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 <http://www.gnu.org/licenses/>.
*/
package mediathek.gui;
import com.jidesoft.utils.SystemInfo;
import mSearch.Const;
import mSearch.daten.DatenFilm;
import mSearch.daten.ListeFilme;
import mSearch.filmlisten.FilmlisteLesen;
import mSearch.tool.Duration;
import mSearch.tool.Functions;
import mSearch.tool.Listener;
import mSearch.tool.Log;
import mediathek.config.Daten;
import mediathek.config.MVConfig;
import mediathek.gui.dialogEinstellungen.PanelFilmlisten;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.HashSet;
import java.util.Iterator;
@SuppressWarnings("serial")
public class GuiDebug extends JPanel {
private final JButton[] buttonSender;
private final String[] sender;
private final Daten daten;
public GuiDebug(Daten d) {
super();
initComponents();
daten = d;
sender = daten.getFilmeLaden().getSenderNamen();
buttonSender = new JButton[sender.length];
jPanelFilmlisteLaden.setLayout(new GridLayout(1, 1));
jPanelFilmlisteLaden.add(new PanelFilmlisten(d, daten.getMediathekGui()));
jPanelStarts.setLayout(new GridLayout(1, 1));
jPanelStarts.add(new PanelInfoStarts());
//Tab1 Sender löschen Panel füllen
for (int i = 0; i < daten.getFilmeLaden().getSenderNamen().length; ++i) {
buttonSender[i] = new JButton(sender[i]);
buttonSender[i].addActionListener(new BeobSenderLoeschen(sender[i]));
}
addSender();
jButtonNeuLaden.addActionListener(ae
-> {
daten.getListeFilme().clear();
Duration.staticPing("Start");
new FilmlisteLesen().readFilmListe(Daten.getDateiFilmliste(), daten.getListeFilme(), Integer.parseInt(MVConfig.get(MVConfig.Configs.SYSTEM_ANZ_TAGE_FILMLISTE)));
Duration.staticPing("Fertig");
daten.getListeFilme().themenLaden();
daten.getListeAbo().setAboFuerFilm(daten.getListeFilme(), false /*aboLoeschen*/);
daten.getListeBlacklist().filterListe();
Listener.notify(Listener.EREIGNIS_BLACKLIST_GEAENDERT, GuiDebug.class.getSimpleName());
});
jButtonAllesSpeichern.addActionListener(e
-> {
daten.allesSpeichern();
daten.filmlisteSpeichern();
});
jButtonFilmlisteLoeschen.addActionListener(e
-> {
daten.getListeFilme().clear();
daten.getListeBlacklist().filterListe();
Listener.notify(Listener.EREIGNIS_BLACKLIST_GEAENDERT, GuiDebug.class.getSimpleName());
});
jButtonFehler.addActionListener(e -> Log.endMsg());
jButtonCheck.addActionListener(e -> daten.getListeFilme().check());
jButtonClean.addActionListener(ae -> cleanList());
btnPathDiff.addActionListener(new BeobPfad());
btnDiff.addActionListener((ActionEvent e)
-> {
ListeFilme listeFilme = new ListeFilme();
final HashSet<String> hash = new HashSet<>(listeFilme.size() + 1, 1);
new FilmlisteLesen().readFilmListe(txtDiff.getText(), listeFilme, 0);
// ==========================================
for (DatenFilm f : listeFilme) {
if (f.arr[DatenFilm.FILM_SENDER].equals(Const.KIKA)) {
// beim KIKA ändern sich die URLs laufend
hash.add(f.arr[DatenFilm.FILM_THEMA] + f.arr[DatenFilm.FILM_TITEL]);
} else if (!cbkUrl.isSelected()) {
hash.add(f.getIndex());
} else {
hash.add(DatenFilm.getUrl(f));
}
}
System.out.println("---------------------");
System.out.println("vorher: " + daten.getListeFilme().size());
Iterator<DatenFilm> it = daten.getListeFilme().iterator();
while (it.hasNext()) {
DatenFilm f = it.next();
if (f.arr[DatenFilm.FILM_SENDER].equals(Const.KIKA)) {
// beim KIKA ändern sich die URLs laufend
if (hash.contains(f.arr[DatenFilm.FILM_THEMA] + f.arr[DatenFilm.FILM_TITEL])) {
it.remove();
}
} else if (!cbkUrl.isSelected()) {
if (hash.contains(f.getIndex())) {
it.remove();
}
} else if (hash.contains(DatenFilm.getUrl(f))) {
it.remove();
}
}
System.out.println("danach: " + daten.getListeFilme().size());
daten.filmlisteSpeichern();
Listener.notify(Listener.EREIGNIS_BLACKLIST_GEAENDERT, GuiDebug.class.getSimpleName());
hash.clear();
});
addComponentListener(new java.awt.event.ComponentAdapter() {
@Override
public void componentShown(java.awt.event.ComponentEvent evt) {
// daten.getMediathekGui().setTabShown(MediathekGui.TABS.TAB_NIX);
daten.getMediathekGui().getStatusBar().setIndexForLeftDisplay(MVStatusBar.StatusbarIndex.NONE);
}
});
btnDelDoppelteUrls.addActionListener(e
-> {
System.out.println("---------------------");
System.out.println("vorher: " + daten.getListeFilme().size());
ListeFilme listeFilme = new ListeFilme();
HashSet<String> hash = new HashSet<>();
daten.getListeFilme().stream().filter(film -> !hash.contains(film.arr[DatenFilm.FILM_URL]))
.forEach(film
-> {
hash.add(film.arr[DatenFilm.FILM_URL]);
listeFilme.add(film);
});
hash.clear();
// ==========================================
daten.setListeFilme(listeFilme);
System.out.println("danach: " + daten.getListeFilme().size());
daten.filmlisteSpeichern();
});
btnNurDoppelte.addActionListener(e
-> {
ListeFilme listeFilme = new ListeFilme();
HashSet<String> hash = new HashSet<>();
HashSet<String> hashDoppelt = new HashSet<>();
for (DatenFilm film : daten.getListeFilme()) {
if (hash.contains(film.arr[DatenFilm.FILM_URL])) {
hashDoppelt.add(film.arr[DatenFilm.FILM_URL]);
} else {
hash.add(film.arr[DatenFilm.FILM_URL]);
}
}
hash.clear();
for (DatenFilm film : daten.getListeFilme()) {
if (hashDoppelt.contains(film.arr[DatenFilm.FILM_URL])) {
listeFilme.add(film);
}
}
hashDoppelt.clear();
saveNewListeFilme(listeFilme);
});
jButtonHashOlddoppelt.addActionListener(e
-> {
ListeFilme listeFilme = new ListeFilme();
HashSet<String> hash = new HashSet<>();
HashSet<String> hashDoppelt = new HashSet<>();
for (DatenFilm film : daten.getListeFilme()) {
String tt = film.getIndexAddOld();
if (hash.contains(tt)) {
hashDoppelt.add(tt);
} else {
hash.add(tt);
}
}
hash.clear();
for (DatenFilm film : daten.getListeFilme()) {
String tt = film.getIndexAddOld();
if (hashDoppelt.contains(tt)) {
listeFilme.add(film);
}
}
hashDoppelt.clear();
saveNewListeFilme(listeFilme);
});
jButtonTTUrl.addActionListener(e
-> {
ListeFilme listeFilme = new ListeFilme();
HashSet<String> hash = new HashSet<>();
HashSet<String> hashDoppelt = new HashSet<>();
for (DatenFilm film : daten.getListeFilme()) {
String tt = film.arr[DatenFilm.FILM_THEMA].toLowerCase() + film.arr[DatenFilm.FILM_TITEL].toLowerCase() + film.arr[DatenFilm.FILM_URL];
if (hash.contains(tt)) {
hashDoppelt.add(tt);
} else {
hash.add(tt);
}
}
hash.clear();
for (DatenFilm film : daten.getListeFilme()) {
String tt = film.arr[DatenFilm.FILM_THEMA].toLowerCase() + film.arr[DatenFilm.FILM_TITEL].toLowerCase() + film.arr[DatenFilm.FILM_URL];
if (hashDoppelt.contains(tt)) {
listeFilme.add(film);
}
}
hashDoppelt.clear();
saveNewListeFilme(listeFilme);
});
jButtonOldList.addActionListener(new BeobPfadOldUrl());
//FIXME unten auskommentierten Block an mSearch anpassen wenn stable...
//bis dahin bleibt der Button erst mal disabled.
jButtonAddOld.setEnabled(false);
// jButtonAddOld.addActionListener((ActionEvent e) ->
// {
// String url = jTextFieldOld.getText();
// ListeFilme listeEinsortieren = new ListeFilme();
// new FilmlisteLesen().readFilmListe(url, listeEinsortieren, 0 /*all days*/);
//
// HashSet<String> hash = new HashSet<>(listeEinsortieren.size() + 1, 1);
// HashSet<String> hash2 = new HashSet<>(listeEinsortieren.size() + 1, 1);
//
// // ==============================================
// // nach "Thema-Titel" suchen
// daten.getListeFilme().forEach((f) -> hash.add(f.getIndexAddOld_()));
// listeEinsortieren.removeIf((f) -> hash.contains(f.getIndexAddOld_()));
// DbgMsg.print("Anzahl Filme: " + daten.getListeFilme().size());
//
// hash.clear();
// ListeFilme lf = new ListeFilme();
// listeEinsortieren.forEach((f) ->
// {
// if (hash2.contains(f.getIndexAddOld())) {
// lf.add(f);
// } else {
// hash2.add(f.getIndexAddOld());
// }
// });
// daten.setListeFilme(lf);
// hash.clear();
// DbgMsg.print("Anzahl Filme: " + daten.getListeFilme().size());
//
// daten.getListeFilme().sort();
// daten.getListeBlacklist().filterListe();
// Listener.notify(Listener.EREIGNIS_BLACKLIST_GEAENDERT, GuiDebug.class.getSimpleName());
// });
jButtonLiveStreams.addActionListener(e
-> {
String url = jTextFieldLiveStreams.getText();
ListeFilme tmpListe = new ListeFilme();
new FilmlisteLesen().readFilmListe(url, tmpListe, 0 /*all days*/);
addLive(tmpListe);
tmpListe.clear();
System.gc();
daten.getListeFilme().sort();
daten.getListeBlacklist().filterListe();
Listener.notify(Listener.EREIGNIS_BLACKLIST_GEAENDERT, GuiDebug.class.getSimpleName());
});
jButtonDelLive.addActionListener(e
-> {
daten.getListeFilme().removeIf(f -> f.arr[DatenFilm.FILM_THEMA].equals(ListeFilme.THEMA_LIVE));
daten.getListeBlacklist().filterListe();
Listener.notify(Listener.EREIGNIS_BLACKLIST_GEAENDERT, GuiDebug.class.getSimpleName());
});
}
public synchronized void addLive(ListeFilme listeEinsortieren) {
// live-streams einfügen, es werde die vorhandenen ersetzt!
if (listeEinsortieren.size() <= 0) {
//dann wars wohl nix
return;
}
daten.getListeFilme().removeIf(f -> f.arr[DatenFilm.FILM_THEMA].equals(ListeFilme.THEMA_LIVE));
listeEinsortieren.forEach(daten.getListeFilme()::add);
}
private void saveNewListeFilme(final ListeFilme listeFilme) {
System.out.println("---------------------");
System.out.println("vorher: " + daten.getListeFilme().size());
daten.setListeFilme(listeFilme);
System.out.println("danach: " + daten.getListeFilme().size());
daten.filmlisteSpeichern();
}
private void addSender() {
jPanelLoeschen.removeAll();
jPanelLoeschen.setLayout(new GridLayout(0, 5));
int nr = 0;
for (String aSender : sender) {
JButton btn = buttonSender[nr];
btn.setText(aSender);
jPanelLoeschen.add(btn);
++nr;
}
jPanelLoeschen.repaint();
}
// clean list
public void cleanList() {
int count = 0;
final String DATUM_ZEIT_FORMAT = "dd.MM.yyyy, HH:mm";
final SimpleDateFormat sdfClean = new SimpleDateFormat(DATUM_ZEIT_FORMAT);
Log.sysLog("cleanList start: " + sdfClean.format(System.currentTimeMillis()));
daten.getListeFilme().forEach(Functions::unescape);
daten.filmlisteSpeichern();
Listener.notify(Listener.EREIGNIS_BLACKLIST_GEAENDERT, GuiDebug.class.getSimpleName());
Log.sysLog("cleanList stop: " + sdfClean.format(System.currentTimeMillis()));
Log.sysLog("cleanList count: " + count);
}
// private void urlTauschen(DatenFilm film, String urlSeite) {
// // manuell die Auflösung hochsetzen
//
// //große URL verbessern
// changeUrl("2256k_p14v11.mp4", "2328k_p35v11.mp4", film, urlSeite);
// changeUrl("2256k_p14v12.mp4", "2328k_p35v12.mp4", film, urlSeite);
// changeUrl("2296k_p14v13.mp4", "2328k_p35v13.mp4", film, urlSeite);
//
// //klein nach groß
// changeUrl("1456k_p13v11.mp4", "2328k_p35v11.mp4", film, urlSeite);
// changeUrl("1456k_p13v11.mp4", "2256k_p14v11.mp4", film, urlSeite); //wenns nicht geht, dann vielleicht so
//
// changeUrl("1456k_p13v12.mp4", "2328k_p35v12.mp4", film, urlSeite);
// changeUrl("1456k_p13v12.mp4", "2256k_p14v12.mp4", film, urlSeite); //wenns nicht geht, dann vielleicht so
//
// changeUrl("1496k_p13v13.mp4", "2328k_p35v13.mp4", film, urlSeite);
// changeUrl("1496k_p13v13.mp4", "2296k_p14v13.mp4", film, urlSeite); //wenns nicht geht, dann vielleicht so
//
// // manuell die Auflösung für HD setzen, 2 Versuche
// updateHd("1456k_p13v12.mp4", "3328k_p36v12.mp4", film, urlSeite);
// updateHd("2256k_p14v12.mp4", "3328k_p36v12.mp4", film, urlSeite);
// updateHd("2328k_p35v12.mp4", "3328k_p36v12.mp4", film, urlSeite);
//
// updateHd("1456k_p13v12.mp4", "3256k_p15v12.mp4", film, urlSeite);
// updateHd("2256k_p14v12.mp4", "3256k_p15v12.mp4", film, urlSeite);
// updateHd("2328k_p35v12.mp4", "3256k_p15v12.mp4", film, urlSeite);
//
// updateHd("1496k_p13v13.mp4", "3296k_p15v13.mp4", film, urlSeite);
// updateHd("2296k_p14v13.mp4", "3296k_p15v13.mp4", film, urlSeite);
// updateHd("2328k_p35v13.mp4", "3296k_p15v13.mp4", film, urlSeite);
//
// updateHd("1496k_p13v13.mp4", "3328k_p36v13.mp4", film, urlSeite);
// updateHd("2296k_p14v13.mp4", "3328k_p36v13.mp4", film, urlSeite);
// updateHd("2328k_p35v13.mp4", "3328k_p36v13.mp4", film, urlSeite);
// }
//
// private void changeUrl(String from, String to, DatenFilm film, String urlSeite) {
// if (film.arr[DatenFilm.FILM_URL].endsWith(from)) {
// String url_ = film.arr[DatenFilm.FILM_URL].substring(0, film.arr[DatenFilm.FILM_URL].lastIndexOf(from)) + to;
// String l = daten.getListeFilme().getFileSizeUrl(url_, film.arr[DatenFilm.FILM_SENDER]);
// // zum Testen immer machen!!
// if (!l.isEmpty()) {
// film.arr[DatenFilm.FILM_GROESSE] = l;
// film.arr[DatenFilm.FILM_URL] = url_;
// } else if (urlExists(url_)) {
// // dann wars wohl nur ein "403er"
// film.arr[DatenFilm.FILM_URL] = url_;
// } else {
// Log.errorLog(945120369, "urlTauschen: " + urlSeite);
// }
// }
// }
//
// private void updateHd(String from, String to, DatenFilm film, String urlSeite) {
// if (film.arr[DatenFilm.FILM_URL_HD].isEmpty() && film.arr[DatenFilm.FILM_URL].endsWith(from)) {
// String url_ = film.arr[DatenFilm.FILM_URL].substring(0, film.arr[DatenFilm.FILM_URL].lastIndexOf(from)) + to;
// // zum Testen immer machen!!
// if (urlExists(url_)) {
// addUrlHd(film, url_, "");
// } else {
// Log.errorLog(945120147, "urlTauschen: " + urlSeite);
// }
// }
// }
//
// private String getKlein(String url1, String url2) {
// String ret = "";
// boolean diff = false;
// for (int i = 0; i < url2.length(); ++i) {
// if (url1.length() > i) {
// if (url1.charAt(i) != url2.charAt(i)) {
// if (!diff) {
// ret = i + "|";
// }
// diff = true;
// }
// } else {
// diff = true;
// }
// if (diff) {
// ret += url2.charAt(i);
// }
// }
// return ret;
// }
//
// private void addUrlHd(DatenFilm film, String url, String urlRtmp) {
// film.arr[DatenFilm.FILM_URL_HD] = url.isEmpty() ? "" : getKlein(film.arr[DatenFilm.FILM_URL], url);
// film.arr[DatenFilm.FILM_URL_RTMP_HD] = urlRtmp.isEmpty() ? "" : getKlein(film.arr[DatenFilm.FILM_URL_RTMP], urlRtmp);
// }
//
// final int TIMEOUT = 3000; // ms //ToDo evtl. wieder kürzen!!
//
// private boolean urlExists(String url) {
// // liefert liefert true, wenn es die URL gibt
// // brauchts, um Filmurls zu prüfen
// int retCode;
// if (!url.toLowerCase().startsWith("http")) {
// return false;
// }
// try {
// HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
// conn.setRequestProperty("User-Agent", Config.getUserAgent());
// conn.setReadTimeout(TIMEOUT);
// conn.setConnectTimeout(TIMEOUT);
// if ((retCode = conn.getResponseCode()) < 400) {
// return true;
// } else if (retCode == 403) {
// // aber sie gibt es :)
// return true;
// }
// conn.disconnect();
// } catch (Exception ignored) {
// }
// return false;
// }
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
javax.swing.JTabbedPane jTabbedSender = new javax.swing.JTabbedPane();
jPanelFilmlisteLaden = new javax.swing.JPanel();
javax.swing.JPanel jPanelFilmliste = new javax.swing.JPanel();
javax.swing.JPanel jPanelSender = new javax.swing.JPanel();
jPanelLoeschen = new javax.swing.JPanel();
jButtonFilmlisteLoeschen = new javax.swing.JButton();
jButtonNeuLaden = new javax.swing.JButton();
jButtonCheck = new javax.swing.JButton();
jButtonClean = new javax.swing.JButton();
javax.swing.JPanel jPanelTools = new javax.swing.JPanel();
jButtonFehler = new javax.swing.JButton();
jButtonAllesSpeichern = new javax.swing.JButton();
btnDiff = new javax.swing.JButton();
txtDiff = new javax.swing.JTextField();
btnPathDiff = new javax.swing.JButton();
btnDelDoppelteUrls = new javax.swing.JButton();
jButtonAddOld = new javax.swing.JButton();
jTextFieldOld = new javax.swing.JTextField();
btnNurDoppelte = new javax.swing.JButton();
jButtonHashOlddoppelt = new javax.swing.JButton();
jButtonTTUrl = new javax.swing.JButton();
jButtonLiveStreams = new javax.swing.JButton();
jTextFieldLiveStreams = new javax.swing.JTextField();
jButtonDelLive = new javax.swing.JButton();
jButtonOldList = new javax.swing.JButton();
cbkUrl = new javax.swing.JCheckBox();
jPanelStarts = new javax.swing.JPanel();
javax.swing.GroupLayout jPanelFilmlisteLadenLayout = new javax.swing.GroupLayout(jPanelFilmlisteLaden);
jPanelFilmlisteLaden.setLayout(jPanelFilmlisteLadenLayout);
jPanelFilmlisteLadenLayout.setHorizontalGroup(
jPanelFilmlisteLadenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 725, Short.MAX_VALUE)
);
jPanelFilmlisteLadenLayout.setVerticalGroup(
jPanelFilmlisteLadenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 419, Short.MAX_VALUE)
);
jTabbedSender.addTab("Filmliste laden", jPanelFilmlisteLaden);
jPanelSender.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Sender löschen"));
javax.swing.GroupLayout jPanelLoeschenLayout = new javax.swing.GroupLayout(jPanelLoeschen);
jPanelLoeschen.setLayout(jPanelLoeschenLayout);
jPanelLoeschenLayout.setHorizontalGroup(
jPanelLoeschenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
jPanelLoeschenLayout.setVerticalGroup(
jPanelLoeschenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
javax.swing.GroupLayout jPanelSenderLayout = new javax.swing.GroupLayout(jPanelSender);
jPanelSender.setLayout(jPanelSenderLayout);
jPanelSenderLayout.setHorizontalGroup(
jPanelSenderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelSenderLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanelLoeschen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanelSenderLayout.setVerticalGroup(
jPanelSenderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelSenderLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanelLoeschen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(285, Short.MAX_VALUE))
);
jButtonFilmlisteLoeschen.setText("gesamte Filmliste löschen");
jButtonNeuLaden.setText("gespeicherte Filmliste neu laden");
jButtonCheck.setText("Check Filmliste");
jButtonClean.setText("Clean Filmliste (unescape)");
javax.swing.GroupLayout jPanelFilmlisteLayout = new javax.swing.GroupLayout(jPanelFilmliste);
jPanelFilmliste.setLayout(jPanelFilmlisteLayout);
jPanelFilmlisteLayout.setHorizontalGroup(
jPanelFilmlisteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelFilmlisteLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelFilmlisteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanelSender, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanelFilmlisteLayout.createSequentialGroup()
.addGroup(jPanelFilmlisteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(jPanelFilmlisteLayout.createSequentialGroup()
.addComponent(jButtonFilmlisteLoeschen)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonNeuLaden))
.addGroup(jPanelFilmlisteLayout.createSequentialGroup()
.addComponent(jButtonCheck)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonClean, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanelFilmlisteLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButtonCheck, jButtonFilmlisteLoeschen, jButtonNeuLaden});
jPanelFilmlisteLayout.setVerticalGroup(
jPanelFilmlisteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelFilmlisteLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelFilmlisteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonFilmlisteLoeschen)
.addComponent(jButtonNeuLaden))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanelFilmlisteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonCheck)
.addComponent(jButtonClean))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanelSender, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jTabbedSender.addTab("Filmliste", jPanelFilmliste);
jButtonFehler.setText("Fehler ausgeben");
jButtonAllesSpeichern.setText("alles speichern");
btnDiff.setText("was fehlt in der Liste:");
txtDiff.setText("/home/emil/Desktop/thschüss/filmlisten/alex/filme.json-summe");
btnPathDiff.setText(":::");
btnDelDoppelteUrls.setText("doppelte URLs löschen");
jButtonAddOld.setText("Alte Filmliste");
jTextFieldOld.setText("/tmp/usb/2016-09-10-filme.xz");
btnNurDoppelte.setText("NUR doppelte URLs");
jButtonHashOlddoppelt.setText("NUR doppelte HashOld");
jButtonTTUrl.setText("NUR doppelte Th+Ti+Url");
jButtonLiveStreams.setText("Live-Streams einfügen");
jTextFieldLiveStreams.setText("http://zdfmediathk.sourceforge.net/live-streams.json");
jButtonDelLive.setText("live löschen");
jButtonOldList.setText(":::");
cbkUrl.setText("nur URL");
javax.swing.GroupLayout jPanelToolsLayout = new javax.swing.GroupLayout(jPanelTools);
jPanelTools.setLayout(jPanelToolsLayout);
jPanelToolsLayout.setHorizontalGroup(
jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelToolsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelToolsLayout.createSequentialGroup()
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jButtonLiveStreams, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButtonAddOld, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jButtonAllesSpeichern, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 154, Short.MAX_VALUE)
.addComponent(btnDiff, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jTextFieldLiveStreams, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE)
.addComponent(jTextFieldOld, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtDiff, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButtonOldList)
.addGroup(jPanelToolsLayout.createSequentialGroup()
.addComponent(btnPathDiff)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(cbkUrl))
.addComponent(jButtonDelLive)))
.addGroup(jPanelToolsLayout.createSequentialGroup()
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelToolsLayout.createSequentialGroup()
.addComponent(btnNurDoppelte)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonHashOlddoppelt)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonTTUrl))
.addComponent(btnDelDoppelteUrls, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButtonFehler))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanelToolsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btnDelDoppelteUrls, btnDiff, btnNurDoppelte, jButtonAllesSpeichern, jButtonFehler, jButtonHashOlddoppelt, jButtonTTUrl});
jPanelToolsLayout.setVerticalGroup(
jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelToolsLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jButtonAllesSpeichern)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonFehler)
.addGap(18, 18, 18)
.addComponent(btnDelDoppelteUrls)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnNurDoppelte)
.addComponent(jButtonHashOlddoppelt)
.addComponent(jButtonTTUrl))
.addGap(76, 76, 76)
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelToolsLayout.createSequentialGroup()
.addComponent(jButtonLiveStreams)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonAddOld)
.addComponent(jTextFieldOld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonOldList))
.addGap(18, 18, 18)
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnDiff)
.addComponent(txtDiff, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnPathDiff)
.addComponent(cbkUrl)))
.addGroup(jPanelToolsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextFieldLiveStreams, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonDelLive)))
.addContainerGap(102, Short.MAX_VALUE))
);
jPanelToolsLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {btnPathDiff, txtDiff});
jPanelToolsLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonAddOld, jTextFieldOld});
jPanelToolsLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonLiveStreams, jTextFieldLiveStreams});
jTabbedSender.addTab("Tool", jPanelTools);
javax.swing.GroupLayout jPanelStartsLayout = new javax.swing.GroupLayout(jPanelStarts);
jPanelStarts.setLayout(jPanelStartsLayout);
jPanelStartsLayout.setHorizontalGroup(
jPanelStartsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 725, Short.MAX_VALUE)
);
jPanelStartsLayout.setVerticalGroup(
jPanelStartsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 419, Short.MAX_VALUE)
);
jTabbedSender.addTab("Starts", jPanelStarts);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTabbedSender)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTabbedSender)
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnDelDoppelteUrls;
private javax.swing.JButton btnDiff;
private javax.swing.JButton btnNurDoppelte;
private javax.swing.JButton btnPathDiff;
private javax.swing.JCheckBox cbkUrl;
private javax.swing.JButton jButtonAddOld;
private javax.swing.JButton jButtonAllesSpeichern;
private javax.swing.JButton jButtonCheck;
private javax.swing.JButton jButtonClean;
private javax.swing.JButton jButtonDelLive;
private javax.swing.JButton jButtonFehler;
private javax.swing.JButton jButtonFilmlisteLoeschen;
private javax.swing.JButton jButtonHashOlddoppelt;
private javax.swing.JButton jButtonLiveStreams;
private javax.swing.JButton jButtonNeuLaden;
private javax.swing.JButton jButtonOldList;
private javax.swing.JButton jButtonTTUrl;
private javax.swing.JPanel jPanelFilmlisteLaden;
private javax.swing.JPanel jPanelLoeschen;
private javax.swing.JPanel jPanelStarts;
private javax.swing.JTextField jTextFieldLiveStreams;
private javax.swing.JTextField jTextFieldOld;
private javax.swing.JTextField txtDiff;
// End of variables declaration//GEN-END:variables
private class BeobSenderLoeschen implements ActionListener {
private final String sender;
public BeobSenderLoeschen(String ssender) {
sender = ssender;
}
@Override
public void actionPerformed(ActionEvent e) {
daten.getListeFilme().deleteAllFilms(sender);
daten.getListeBlacklist().filterListe();
Listener.notify(Listener.EREIGNIS_BLACKLIST_GEAENDERT, GuiDebug.class.getSimpleName());
}
}
private class BeobPfad implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//we can use native chooser on Mac...
if (SystemInfo.isMacOSX()) {
FileDialog chooser = new FileDialog(daten.getMediathekGui(), "Pfad");
chooser.setMode(FileDialog.SAVE);
chooser.setVisible(true);
if (chooser.getFile() != null) {
try {
File destination = new File(chooser.getDirectory() + chooser.getFile());
txtDiff.setText(destination.getAbsolutePath());
} catch (Exception ex) {
Log.errorLog(679890147, ex);
}
}
} else {
int returnVal;
JFileChooser chooser = new JFileChooser();
if (!txtDiff.getText().equals("")) {
chooser.setCurrentDirectory(new File(txtDiff.getText()));
}
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setFileHidingEnabled(false);
returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
txtDiff.setText(chooser.getSelectedFile().getAbsolutePath());
} catch (Exception ex) {
Log.errorLog(911025463, ex);
}
}
}
}
}
private class BeobPfadOldUrl implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//we can use native chooser on Mac...
if (SystemInfo.isMacOSX()) {
FileDialog chooser = new FileDialog(daten.getMediathekGui(), "Pfad");
chooser.setMode(FileDialog.SAVE);
chooser.setVisible(true);
if (chooser.getFile() != null) {
try {
File destination = new File(chooser.getDirectory() + chooser.getFile());
jTextFieldOld.setText(destination.getAbsolutePath());
} catch (Exception ex) {
Log.errorLog(679890147, ex);
}
}
} else {
int returnVal;
JFileChooser chooser = new JFileChooser();
if (!jTextFieldOld.getText().equals("")) {
chooser.setCurrentDirectory(new File(jTextFieldOld.getText()));
}
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setFileHidingEnabled(false);
returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
jTextFieldOld.setText(chooser.getSelectedFile().getAbsolutePath());
} catch (Exception ex) {
Log.errorLog(911025463, ex);
}
}
}
}
}
}