/* * MediathekView * Copyright (C) 2014 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.config; import com.jidesoft.utils.SystemInfo; import mSearch.Const; import mSearch.daten.DatenFilm; import mSearch.tool.Log; import mediathek.controller.MVBandwidthTokenBucket; import mediathek.gui.MVFilter; import mediathek.tool.GuiFunktionenProgramme; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.Set; public class MVConfig { public final static String TRENNER = "#=#"; public static final String SYSTEM = "system"; private static final HashMap<String, String> HASHMAP = new HashMap<>(); public static String PARAMETER_INFO = "\n" + "\t" + "\"__system-parameter__xxx\" können nur im Konfigfile geändert werden\n" + "\t" + "und sind auch nicht für ständige Änderungen gedacht.\n" + "\t" + "Wird eine Zeile gelöscht, wird der Parameter wieder mit dem Standardwert angelegt.\n" + "\n" + "\t" + Configs.SYSTEM_PARAMETER_DOWNLOAD_TIMEOUT_SEKUNDEN.cValue + "\n" + "\t" + "Timeout für direkte Downloads, Standardwert: " + Configs.SYSTEM_PARAMETER_DOWNLOAD_TIMEOUT_SEKUNDEN.initValue + "\n\n" + "\t" + Configs.SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART.cValue + "\n" + "\t" + "max. Startversuche für fehlgeschlagene Downloads, am Ende aller Downloads\n" + "\t" + "(Versuche insgesamt: DOWNLOAD_MAX_RESTART * DOWNLOAD_MAX_RESTART_HTTP), Standardwert: " + Configs.SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART.initValue + "\n\n" + "\t" + Configs.SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART_HTTP.cValue + "\n" + "\t" + "max. Startversuche für fehlgeschlagene Downloads, direkt beim Download,\n" + "\t" + "(Versuche insgesamt: DOWNLOAD_MAX_RESTART * DOWNLOAD_MAX_RESTART_HTTP), Standardwert: " + Configs.SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART_HTTP.initValue + "\n\n" + "\t" + Configs.SYSTEM_PARAMETER_DOWNLOAD_WEITERFUEHREN_IN_SEKUNDEN.cValue + "\n" + "\t" + "Beim Dialog \"Download weiterführen\" wird nach dieser Zeit der Download weitergeführt, Standardwert: " + Configs.SYSTEM_PARAMETER_DOWNLOAD_WEITERFUEHREN_IN_SEKUNDEN.initValue + "\n\n" + "\t" + Configs.SYSTEM_PARAMETER_DOWNLOAD_ERRORMSG_IN_SEKUNDEN.cValue + "\n" + "\t" + "Downloadfehlermeldung wird xx Sedunden lang angezeigt, Standardwert: " + Configs.SYSTEM_PARAMETER_DOWNLOAD_ERRORMSG_IN_SEKUNDEN.initValue + "\n\n" + "\t" + Configs.SYSTEM_PARAMETER_DOWNLOAD_PROGRESS.cValue + "\n" + "\t" + "Downloadprogress im Terminal (-auto) anzeigen: " + Configs.SYSTEM_PARAMETER_DOWNLOAD_PROGRESS.initValue + "\n\n" + "\t" + Configs.SYSTEM_PARAMETER_USERAGENT.cValue + "\n" + "\t" + "Useragent für direkte Downloads, Standardwert: " + Configs.SYSTEM_PARAMETER_USERAGENT.initValue + "\n"; public enum Configs { //============================================ //Programm-Configs, änderbar nur im Konfig-File SYSTEM_PARAMETER_DOWNLOAD_TIMEOUT_SEKUNDEN("__system-parameter__download-timeout-sekunden_250__", "250"),//250 Sekunden, wie bei Firefox SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART("__system-parameter__download-max-restart_5__", "5"),// max. Startversuche für fehlgeschlagene Downloads (insgesamt: restart * restart_http Versuche) SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART_HTTP("__system-parameter__download-max-restart-http_10__", "10"),// max. Startversuche für fehlgeschlagene Downloads, direkt beim Download SYSTEM_PARAMETER_DOWNLOAD_WEITERFUEHREN_IN_SEKUNDEN("__system-parameter__download-weiterfuehren-sekunden_60__", "60"), //Beim Dialog "Download weiterführen" wird in dieser Zeit der Download weitergeführt SYSTEM_PARAMETER_DOWNLOAD_ERRORMSG_IN_SEKUNDEN("__system-parameter__download-fehlermeldung-sekunden_120__", "120"),//Downloadfehlermeldung wird xx Sedunden lang angezeigt SYSTEM_PARAMETER_USERAGENT("__system-parameter__useragent_" + Const.VERSION + "__", Konstanten.USER_AGENT_DEFAULT),//Useragent für direkte Downloads SYSTEM_PARAMETER_DOWNLOAD_PROGRESS("__system-parameter__dl_progress_", Boolean.TRUE.toString()), //Downloadprogress im Terminal (-auto) anzeigen //============================================ //Programm-Configs, änderbar über Gui SYSTEM_BUILD_NR("BuildNr"), SYSTEM_ECHTZEITSUCHE("Echtzeitsuche", Boolean.TRUE.toString()), SYSTEM_TABS_TOP("Tabs-oben", SystemInfo.isMacOSX() ? Boolean.TRUE.toString() : Boolean.FALSE.toString()), SYSTEM_TABS_ICON("Tabs-Icon", SystemInfo.isMacOSX() ? Boolean.FALSE.toString() : Boolean.TRUE.toString()), SYSTEM_USE_TRAY("Tray-anzeigen", Boolean.FALSE.toString()), SYSTEM_LOOK("System-look", "0"), SYSTEM_UPDATE_SUCHEN("update-suchen", Boolean.TRUE.toString()), SYSTEM_UPDATE_DATUM("update-datum"), SYSTEM_ABOS_SOFORT_SUCHEN("Abos-sofort-suchen", Boolean.TRUE.toString()), SYSTEM_ZIELNAMEN_ANPASSEN("Zielnamen-anpassen"), SYSTEM_USE_REPLACETABLE("Ersetzungstabelle-verwenden", SystemInfo.isLinux() || SystemInfo.isMacOSX() ? Boolean.TRUE.toString() : Boolean.FALSE.toString()),// wegen des Problems mit ext. Programmaufrufen und Leerzeichen SYSTEM_ONLY_ASCII("nur-ascii", Boolean.FALSE.toString()), SYSTEM_HINWEIS_NR_ANGEZEIGT("Hinweis-Nr-angezeigt"), SYSTEM_ORDNER_OEFFNEN("Download-Ordner-oeffnen"), SYSTEM_URL_OEFFNEN("Programm-Url-oeffnen"), SYSTEM_LINUX_SHUTDOWN("Programm-Linux-Shutdown"), SYSTEM_NOTIFICATION("Notification-anzeigen", Boolean.TRUE.toString()), SYSTEM_PLAYER_ABSPIELEN("Player-zum-Abspielen"), SYSTEM_GEO_MELDEN("Geo-melden", Boolean.TRUE.toString()), SYSTEM_GEO_STANDORT("Geo-Standort", DatenFilm.GEO_DE), // Fenstereinstellungen SYSTEM_GROESSE_GUI("Groesse"), SYSTEM_GROESSE_EINSTELLUNGEN("Groesse-Einstellungen"), SYSTEM_GROESSE_INFODIALOG("Groesse-Infodialog"), // SYSTEM_DIVIDER_INFODIALOG("Divider-Infodialog"), SYSTEM_FENSTER_MAX("programmfenster-maximieren"), SYSTEM_PANEL_VIDEOPLAYER_ANZEIGEN("system-panel-videoplayer-anzeigen"), SYSTEM_PANEL_MELDUNGEN_ANZEIGEN("system-panel-meldungen-anzeigen"), SYSTEM_PANEL_FILME_DIVIDER("system-panel-filme-divider", Konstanten.GUIFILME_DIVIDER_LOCATION), SYSTEM_PANEL_DOWNLOAD_DIVIDER("system-panel-download-divider", Konstanten.GUIDOWNLOAD_DIVIDER_LOCATION), SYSTEM_PANEL_ABO_DIVIDER("system-panel-abo-divider", Konstanten.GUIDOWNLOAD_DIVIDER_LOCATION), SYSTEM_FONT_SIZE("system-font-size", "0"), // -5 ... 0 .... 5 SYSTEM_FILME_BESCHREIBUNG_ANZEIGEN("system-filme-beschreibung-anzeigen", Boolean.TRUE.toString()), SYSTEM_DOWNOAD_BESCHREIBUNG_ANZEIGEN("system-download-beschreibung-anzeigen", Boolean.TRUE.toString()), SYSTEM_TAB_FILME_ANZAHL_BUTTON("system-tab-filme-anzahl-button", "4"), SYSTEM_FILM_INFO_TOP("system-film-info-top", Boolean.TRUE.toString()), //immer onTop anzeigen SYSTEM_FILM_INFO_DECORATED("system-film-info-border", Boolean.TRUE.toString()), SYSTEM_DOWNLOAD_INFO_TOP("system-download-info-top", Boolean.TRUE.toString()), //immer onTop anzeigen SYSTEM_DOWNLOAD_INFO_DECORATED("system-download-info-border", Boolean.FALSE.toString()), SYSTEM_EIGENSCHAFTEN_TABELLE_FILME("Eigenschaften-Tabellen-Filme"), SYSTEM_EIGENSCHAFTEN_TABELLE_DOWNLOADS("Eigenschaften-Tabellen-Downloads"), SYSTEM_EIGENSCHAFTEN_TABELLE_ABOS("Eigenschaften-Tabellen-Abos"), SYSTEM_EIGENSCHAFTEN_TABELLE_MEDIA_DB("Eigenschaften-Tabellen-MediaDB"), SYSTEM_MEDUNGSFENSTER_UMBRECHEN_SYSTEMMELDUNGEN("Meldungsfenster-Systemmeldungen"), SYSTEM_MEDUNGSFENSTER_UMBRECHEN_PLAYERMELDUNGEN("Meldungsfenster-Playermeldungen"), SYSTEM_ANSICHT_SET_LANG("Ansicht-Set-lang"), SYSTEM_BANDWIDTH_MONITOR_VISIBLE("Bandwidthmonitor-visible"), SYSTEM_ICON_STANDARD("Icon-Standard", Boolean.TRUE.toString()), SYSTEM_ICON_PFAD("Icon-Pfad"), SYSTEM_BREITE_MELDUNGEN("breite-Meldungen"), SYSTEM_TOOLBAR_ALLES_ANZEIGEN("Toolbar-Alles-anzeigen", Boolean.TRUE.toString()), SYSTEM_TOOLBAR_ALLES("Toolbar-Alles"), SYSTEM_TOOLBAR_DOWNLOAD_EXTERN("Toolbar-Download-Extern"), SYSTEM_TOOLBAR_ABO_EXTERN("Toolbar-Abo-Extern"), SYSTEM_TOOLBAR_MELDUNGEN("Toolbar-Meldungen"), SYSTEM_ICON_KLEIN_ALLES("system-icon-groesse-alles"), SYSTEM_ICON_KLEIN_DOWNLOADS_EXTERN("system-icon-groesse-Download-Extern"), SYSTEM_ICON_KLEIN_ABOS_EXTERN("system-icon-groesse-Abos-Extern"), SYSTEM_ICON_KLEIN("system-icon-klein"), SYSTEM_TOOLBAR_FILME("Toolbar-Filme"), SYSTEM_ICON_KLEIN_FILME("system-icon-groesse-Filme"), SYSTEM_TOOLBAR_DOWNLOAD("Toolbar-Download"), SYSTEM_ICON_KLEIN_DOWNLOAD("system-icon-groesse-Download"), SYSTEM_TOOLBAR_ABO("Toolbar-Abo"), SYSTEM_ICON_KLEIN_ABO("system-icon-groesse-Abo"), SYSTEM_TAB_FILME_ICON_ANZEIGEN("system-tab-filme-icon-anzeigen", Boolean.TRUE.toString()), SYSTEM_TAB_DOWNLOAD_ICON_ANZEIGEN("system-tab-download-icon-anzeigen", Boolean.TRUE.toString()), SYSTEM_TAB_ABO_ICON_ANZEIGEN("system-tab-abo-icon-anzeigen", Boolean.TRUE.toString()), SYSTEM_TAB_FILME_ICON_KLEIN("system-tab-filme-icon-klein", Boolean.TRUE.toString()), SYSTEM_TAB_DOWNLOAD_ICON_KLEIN("system-tab-download-icon-klein", Boolean.TRUE.toString()), SYSTEM_TAB_DOWNLOAD_FILTER_VIS("system-tab-download-filter-vis", Boolean.TRUE.toString()), SYSTEM_TAB_ABO_FILTER_VIS("system-tab-abo-filter-vis", Boolean.FALSE.toString()), SYSTEM_TAB_ABO_ICON_KLEIN("system-tab-abo-icon-klein", Boolean.TRUE.toString()), SYSTEM_TAB_FILME_LINEBREAK("system-tab-filme-linebreak", Boolean.FALSE.toString()), SYSTEM_TAB_DOWNLOAD_LINEBREAK("system-tab-download-linebreak", Boolean.FALSE.toString()), SYSTEM_TAB_ABO_LINEBREAK("system-tab-abo-linebreak", Boolean.FALSE.toString()), // Extrafenster SYSTEM_FENSTER_DOWNLOAD("Fenster-Download"), SYSTEM_GROESSE_DOWNLOAD("Groesse-Download"), SYSTEM_FENSTER_ABO("Fenster-Abo"), SYSTEM_GROESSE_ABO("Groesse-Abo"), SYSTEM_FENSTER_MELDUNGEN("Fenster-Meldungen"), SYSTEM_VIS_MELDUNGEN("Vis-Meldungen"), SYSTEM_GROESSE_MELDUNGEN("Groesse-Meldungen"), SYSTEM_FENSTER_FILTER("Fenster-Filter"), SYSTEM_VIS_FILTER("Vis-Filter", Boolean.TRUE.toString()), SYSTEM_GROESSE_FILTER("Groesse-Filter"), //Einstellungen Filmliste SYSTEM_IMPORT_ART_FILME("update-filme"), // url automatisch suchen - oder nur manuell SYSTEM_URL_FILMLISTEN("system-url-filmlisten"), SYSTEM_IMPORT_URL_MANUELL("system-import-url-manuell"), SYSTEM_EXPORT_DATEI("system-export-datei"), SYSTEM_ANZ_TAGE_FILMLISTE("system-anz-tage-filmilste", "0"), // es werden nur die x letzten Tage geladen // Filter SYSTEM_FILTER_TAGE("filter-tage-start", "15"), // in Tagen SYSTEM_FILTER_DAUER("filter-dauer-start", "0"), // in Minuten SYSTEM_FILTER_DAUER_MIN("filter-dauer-min-start", Boolean.TRUE.toString()), // Dauer ist Min SYSTEM_FILTER_PROFILE__DAUER("filter-dauer", "0"), SYSTEM_FILTER_PROFILE__DAUER_MIN("filter-dauer-min", Boolean.TRUE.toString()), SYSTEM_FILTER_PROFILE__TAGE("filter-tage", "15"), // index im Array GuiFilme.COMBO_ZEIT_INT SYSTEM_FILTER_PROFILE__KEINE_ABO("filter-keineAbo"), SYSTEM_FILTER_PROFILE__KEINE_GESEHENE("filter-keineGesehen"), SYSTEM_FILTER_PROFILE__NUR_HD("filter-nurHd"), SYSTEM_FILTER_PROFILE__NUR_UT("filter-nurUt"), SYSTEM_FILTER_PROFILE__NUR_NEUE("filter-nurNeue"), SYSTEM_FILTER_PROFILE__BLACKLIST_ON("filter-blacklist-aus"), SYSTEM_FILTER_PROFILE__NAME("filter-name"), SYSTEM_FILTER_PROFILE__SENDER("filter-sender"), SYSTEM_FILTER_PROFILE__THEMA("filter-thema"), SYSTEM_FILTER_PROFILE__TITEL("filter-titel"), SYSTEM_FILTER_PROFILE__THEMA_TITEL("filter-themaTitel"), SYSTEM_FILTER_PROFILE__TT("filter-TT-oder-irgendwo", Boolean.TRUE.toString()), SYSTEM_FILTER_PROFILE__SORT_KEY("filter-sortkey"), SYSTEM_FILTER_PROFILE__SORT_KEY_UPDOWN("filter-sortkey-updown"), SYSTEM_FILTER_PROFILE__ANZAHL_FILTER("filter-anzahl"), // Programmpfade SYSTEM_PFAD_VLC("pfad-vlc", GuiFunktionenProgramme.getMusterPfadVlc()), SYSTEM_PFAD_FLVSTREAMER("pfad-flvstreamer", GuiFunktionenProgramme.getMusterPfadFlv()), SYSTEM_PFAD_FFMPEG("pfad-ffmpeg", GuiFunktionenProgramme.getMusterPfadFFmpeg()), SYSTEM_VERSION_PROGRAMMSET("Version-Programmset"), // Blacklist SYSTEM_BLACKLIST_ZUKUNFT_NICHT_ANZEIGEN("Blacklist-Zukunft-nicht-anzeigen"), SYSTEM_BLACKLIST_GEO_NICHT_ANZEIGEN("Blacklist-Geo-nicht-anzeigen"), SYSTEM_BLACKLIST_AUCH_ABO("Blacklist-auch-Abo"), SYSTEM_BLACKLIST_START_ON("Blacklist-Start-ausgeschaltet", Boolean.FALSE.toString()), SYSTEM_BLACKLIST_ON("Blacklist-ausgeschaltet", Boolean.FALSE.toString()), SYSTEM_BLACKLIST_IST_WHITELIST("Blacklist-ist-Whitelist"), SYSTEM_BLACKLIST_FILMLAENGE("Blacklist-Filmlaenge", "0"), // Download SYSTEM_DIALOG_DOWNLOAD_D_STARTEN("Dialog-Download-D-Starten", Boolean.TRUE.toString()), // DialogDownload: Download sofort starten SYSTEM_DIALOG_DOWNLOAD_STARTEN_ZEIT("Dialog-Download-Starten-Zeit"), SYSTEM_DIALOG_DOWNLOAD_SHUTDOWN("Dialog-Download-Shutdown"), SYSTEM_DOWNLOAD_SOFORT_STARTEN("Download-sofort-starten", Boolean.FALSE.toString()), SYSTEM_DOWNLOAD_BEEP("Download-Beep"), SYSTEM_DOWNLOAD_ERRORMSG("download-error-msg", Boolean.TRUE.toString()), SYSTEM_BANDBREITE_KBYTE("maxBandbreite", String.valueOf(MVBandwidthTokenBucket.BANDWIDTH_MAX_KBYTE)), SYSTEM_MAX_DOWNLOAD("maxDownload", "1"), SYSTEM_MAX_1_DOWNLOAD_PRO_SERVER("max1DownloadProServer"), // nur ein Download pro Server - sonst max 2 SYSTEM_DIALOG_DOWNLOAD__PFADE_ZUM_SPEICHERN("Pfade-zum-Speichern"), // gesammelten Downloadpfade im Downloaddialog SYSTEM_DIALOG_DOWNLOAD__LETZTEN_PFAD_ANZEIGEN("Letzen-Pfad-anzeigen"), // Abo SYSTEM_ABO_MIN_SIZE("Abo-Mindestdauer-Minuten"), // MediaDB SYSTEM_MEDIA_DB_DIALOG_GROESSE("Media_DB_Dialog-Groesse"), SYSTEM_MEDIA_DB_DIALOG_ANZEIGEN("Media_DB_Dialog-anzeigen"), SYSTEM_MEDIA_DB_ECHTZEITSUCHE("Media_DB_Echtzeitsuche", Boolean.TRUE.toString()), SYSTEM_MEDIA_DB_SUFFIX("Media_DB_Suffix"), SYSTEM_MEDIA_DB_SUFFIX_OHNE("Media_DB_ohne-Suffix"), SYSTEM_MEDIA_DB_EXPORT_DATEI("Media_DB_export-datei"), //Farben FARBE__FILM_LIVESTREAM("FARBE_FILM_LIVESTREAM"), FARBE__FILM_HISTORY("FARBE_FILM_HISTORY"), FARBE__FILM_NEU("FARBE_FILM_NEU"), FARBE__FILM_GEOBLOCK_BACKGROUND("FARBE_FILM_GEOBLOCK_BACKGROUND"), FARBE__FILM_GEOBLOCK_BACKGROUND_SEL("FARBE_FILM_GEOBLOCK_BACKGROUND_SEL"), FARBE__DOWNLOAD_IST_ABO("FARBE_DOWNLOAD_IST_ABO"), FARBE__DOWNLOAD_IST_DIREKTER_DOWNLOAD("FARBE_DOWNLOAD_IST_DIREKTER_DOWNLOAD"), FARBE__DOWNLOAD_ANSEHEN("FARBE_DOWNLOAD_ANSEHEN"), FARBE__DOWNLOAD_WAIT("FARBE_DOWNLOAD_WAIT"), FARBE__DOWNLOAD_WAIT_SEL("FARBE_DOWNLOAD_WAIT_SEL"), FARBE__DOWNLOAD_RUN("FARBE_DOWNLOAD_RUN"), FARBE__DOWNLOAD_RUN_SEL("FARBE_DOWNLOAD_RUN_SEL"), FARBE__DOWNLOAD_FERTIG("FARBE_DOWNLOAD_FERTIG"), FARBE__DOWNLOAD_FERTIG_SEL("FARBE_DOWNLOAD_FERTIG_SEL"), FARBE__DOWNLOAD_FEHLER("FARBE_DOWNLOAD_FEHLER"), FARBE__DOWNLOAD_FEHLER_SEL("FARBE_DOWNLOAD_FEHLER_SEL"), FARBE__ABO_AUSGESCHALTET("FARBE_ABO_AUSGESCHALTET"), FARBE__ABO_AUSGESCHALTET_SEL("FARBE_ABO_AUSGESCHALTET_SEL"), FARBE__FILTER_REGEX("FARBE_FILTER_REGEX"), FARBE__FILTER_REGEX_FEHLER("FARBE_FILTER_REGEX_FEHLER"), FARBE__BUTTON_SET_ABSPIELEN("FARBE_BUTTON_SET_ABSPIELEN"), FARBE__FILMLISTE_LADEN_AKTIV("FARBE_FILMLISTE_LADEN_AKTIV"), FARBE__DOWNLOAD_DATEINAME_EXISTIERT("FARBE_DOWNLOAD_DATEINAME_EXISTIERT"), FARBE__DOWNLOAD_DATEINAME_NEU("FARBE_DOWNLOAD_DATEINAME_NEU"), FARBE__DOWNLOAD_DATEINAME_ALT("FARBE_DOWNLOAD_DATEINAME_ALT"); public final String cValue; public final String initValue; Configs(String value) { cValue = value; initValue = ""; } Configs(String value, String init) { cValue = value; initValue = init; } public static boolean find(String value) { for (Configs conf : values()) { if (conf.cValue.equals(value)) { return true; } } return false; } } public static void loadSystemParameter() { //einmal die leeren mit den inits füllen for (Configs key : Configs.values()) { String s = HASHMAP.get(key.cValue); if (s == null || s.isEmpty()) { MVConfig.add(key, key.initValue); } } if (Daten.isDebug()) { MVConfig.add(MVConfig.Configs.SYSTEM_IMPORT_ART_FILME, String.valueOf(Konstanten.UPDATE_FILME_AUS)); } MVConfig.add(MVConfig.Configs.SYSTEM_BLACKLIST_ON, MVConfig.get(MVConfig.Configs.SYSTEM_BLACKLIST_START_ON)); // Zustand Blacklist beim Start setzen check(Configs.SYSTEM_PARAMETER_DOWNLOAD_TIMEOUT_SEKUNDEN, 5, 1000); check(Configs.SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART, 0, 100); check(Configs.SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART_HTTP, 0, 100); check(Configs.SYSTEM_PARAMETER_DOWNLOAD_WEITERFUEHREN_IN_SEKUNDEN, 5, 1000); check(Configs.SYSTEM_PARAMETER_DOWNLOAD_ERRORMSG_IN_SEKUNDEN, 5, 1000); Log.sysLog(""); Log.sysLog("======================================="); Log.sysLog("Systemparameter"); Log.sysLog("-----------------"); Log.sysLog("Download-Timeout [s]: " + MVConfig.getInt(MVConfig.Configs.SYSTEM_PARAMETER_DOWNLOAD_TIMEOUT_SEKUNDEN)); Log.sysLog("max. Download-Restart: " + MVConfig.getInt(MVConfig.Configs.SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART)); Log.sysLog("max. Download-Restart-Http: " + MVConfig.getInt(MVConfig.Configs.SYSTEM_PARAMETER_DOWNLOAD_MAX_RESTART_HTTP)); Log.sysLog("Download weiterführen in [s]: " + MVConfig.getInt(MVConfig.Configs.SYSTEM_PARAMETER_DOWNLOAD_WEITERFUEHREN_IN_SEKUNDEN)); Log.sysLog("Download Fehlermeldung anzeigen [s]: " + MVConfig.getInt(MVConfig.Configs.SYSTEM_PARAMETER_DOWNLOAD_ERRORMSG_IN_SEKUNDEN)); Log.sysLog("Downoadprogress anzeigen: " + MVConfig.get(MVConfig.Configs.SYSTEM_PARAMETER_DOWNLOAD_PROGRESS)); Log.sysLog("Useragent: " + MVConfig.get(MVConfig.Configs.SYSTEM_PARAMETER_USERAGENT)); Log.sysLog("======================================="); Log.sysLog(""); } public static void check(Configs key, int min, int max) { int v = getInt(key); if (v < min || v > max) { add(key, key.initValue); } } public static synchronized void add(String key, String value) { HASHMAP.put(key, value); } public static synchronized void add(Configs key, String value) { HASHMAP.put(key.cValue, value); } public static synchronized void add(Configs key, String value, int i) { boolean ok = false; String[] sa = {""}; String s = HASHMAP.get(key.cValue); if (s != null) { sa = split(s); if (sa.length == MVFilter.MAX_FILTER) { sa[i] = value; ok = true; } } if (!ok) { // dann anlegen sa = initArray(key); sa[i] = value; } // und jetzt eintragen s = addArray(sa); HASHMAP.put(key.cValue, s); } public static synchronized String get(Configs key) { String s = HASHMAP.get(key.cValue); if (s == null) { s = key.initValue; } return s == null ? "" : s; } public static synchronized int getInt(Configs key) { int ret; try { ret = Integer.parseInt(get(key)); } catch (Exception ignore) { ret = 0; } return ret; } public static synchronized boolean getBool(Configs key) { return Boolean.parseBoolean(get(key)); } public static synchronized String get(Configs key, int i) { String[] sa; String s = HASHMAP.get(key.cValue); if (s == null) { return key.initValue; } else { sa = split(s); } if (sa.length <= i) { HASHMAP.remove(key.cValue); return key.initValue; } else { return sa[i]; } } public static synchronized int getInt(Configs key, int i) { int ret; try { ret = Integer.parseInt(get(key, i)); } catch (Exception ignore) { ret = 0; } return ret; } public static synchronized boolean getBool(Configs key, int i) { return Boolean.parseBoolean(get(key, i)); } public static synchronized String[][] getAll() { final LinkedList<String[]> liste = new LinkedList<>(); final Set<String> strings = HASHMAP.keySet(); final String[] setArray = strings.toArray(new String[strings.size()]); for (String entry : setArray) { String[] s = new String[2]; s[0] = entry; s[1] = HASHMAP.get(entry); liste.add(s); } listeSort(liste, 0); return liste.toArray(new String[][]{}); } private static String[] split(String sIn) { ArrayList<String> l = new ArrayList<>(); String s = sIn; while (s.contains(TRENNER)) { l.add(s.substring(0, s.indexOf(TRENNER))); s = s.substring(s.indexOf(TRENNER) + TRENNER.length()); } l.add(s); return l.toArray(new String[l.size()]); } private static String addArray(String[] arr) { if (arr == null) { return ""; } StringBuilder sb = new StringBuilder(); for (int k = 0; k < arr.length; ++k) { sb.append(arr[k]); if (k < arr.length - 1) { sb.append(TRENNER); } } return sb.toString(); } private static String[] initArray(Configs key) { String[] sa = new String[MVFilter.MAX_FILTER]; for (int k = 0; k < MVFilter.MAX_FILTER; ++k) { sa[k] = key.initValue; } return sa; } private static void listeSort(LinkedList<String[]> liste, int stelle) { //Stringliste alphabetisch sortieren mSearch.tool.GermanStringSorter sorter = mSearch.tool.GermanStringSorter.getInstance(); if (liste != null) { String str1; String str2; for (int i = 1; i < liste.size(); ++i) { for (int k = i; k > 0; --k) { str1 = liste.get(k - 1)[stelle]; str2 = liste.get(k)[stelle]; // if (str1.compareToIgnoreCase(str2) > 0) { if (sorter.compare(str1, str2) > 0) { liste.add(k - 1, liste.remove(k)); } else { break; } } } } } }