private static ListePset importPset(InputStreamReader in, boolean log) { DatenPset datenPset = null; ListePset liste = new ListePset(); try { int event; XMLInputFactory inFactory = XMLInputFactory.newInstance(); inFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE); XMLStreamReader parser; parser = inFactory.createXMLStreamReader(in); while (parser.hasNext()) { event = parser.next(); if (event == XMLStreamConstants.START_ELEMENT) { // String t = parser.getLocalName(); switch (parser.getLocalName()) { case DatenPset.PROGRAMMSET: datenPset = new DatenPset(); if (!get(parser, DatenPset.PROGRAMMSET, DatenPset.COLUMN_NAMES_, datenPset.arr)) { datenPset = null; } else { liste.add(datenPset); } break; case DatenProg.PROGRAMM: if (datenPset != null) { DatenProg datenProg = new DatenProg(); if (get(parser, DatenProg.PROGRAMM, DatenProg.COLUMN_NAMES_, datenProg.arr)) { datenPset.addProg(datenProg); } } break; } } } in.close(); } catch (Exception ex) { if (log) { Log.fehlerMeldung(467810360, ex); } return null; } if (liste.isEmpty()) { return null; } else { return liste; } }
private void aufrufBauen( DatenPset pSet, DatenFilm film, DatenAbo abo, String nname, String ppfad) { // zieldatei und pfad bauen und eintragen try { DatenProg programm = pSet.getProgUrl(arr[DOWNLOAD_URL_NR]); // ############################################## // für die alten Versionen: pSet.arr[DatenPset.PROGRAMMSET_ZIEL_DATEINAME_NR] = pSet.arr[DatenPset.PROGRAMMSET_ZIEL_DATEINAME_NR].replace("%n", ""); pSet.arr[DatenPset.PROGRAMMSET_ZIEL_DATEINAME_NR] = pSet.arr[DatenPset.PROGRAMMSET_ZIEL_DATEINAME_NR].replace("%p", ""); pSet.arr[DatenPset.PROGRAMMSET_ZIEL_PFAD_NR] = pSet.arr[DatenPset.PROGRAMMSET_ZIEL_PFAD_NR].replace("%n", ""); pSet.arr[DatenPset.PROGRAMMSET_ZIEL_PFAD_NR] = pSet.arr[DatenPset.PROGRAMMSET_ZIEL_PFAD_NR].replace("%p", ""); for (DatenProg prog : pSet.getListeProg()) { prog.arr[DatenProg.PROGRAMM_ZIEL_DATEINAME_NR] = prog.arr[DatenProg.PROGRAMM_ZIEL_DATEINAME_NR].replace("%n", ""); prog.arr[DatenProg.PROGRAMM_ZIEL_DATEINAME_NR] = prog.arr[DatenProg.PROGRAMM_ZIEL_DATEINAME_NR].replace("%p", ""); } // ############################################## // pSet und ... eintragen arr[DOWNLOAD_PROGRAMMSET_NR] = pSet.arr[DatenPset.PROGRAMMSET_NAME_NR]; // Direkter Download nur wenn url passt und wenn im Programm ein Zielpfad ist sonst Abspielen art = (pSet.checkDownloadDirekt(arr[DOWNLOAD_URL_NR]) && pSet.progsContainPath()) ? ART_DOWNLOAD : ART_PROGRAMM; arr[DOWNLOAD_ART_NR] = String.valueOf(art); if (art == ART_DOWNLOAD) { arr[DatenDownload.DOWNLOAD_PROGRAMM_NR] = ART_DOWNLOAD_TXT; } else { arr[DatenDownload.DOWNLOAD_PROGRAMM_NR] = programm.arr[DatenProg.PROGRAMM_NAME_NR]; } arr[DOWNLOAD_PROGRAMM_RESTART_NR] = String.valueOf(programm.isRestart()); dateinamePfadBauen(pSet, film, abo, nname, ppfad); programmaufrufBauen(programm); } catch (Exception ex) { Log.fehlerMeldung(825600145, ex); } }
private void dateinamePfadBauen( DatenPset pSet, DatenFilm film, DatenAbo abo, String nname, String ppfad) { // nname und ppfad sind nur belegt, wenn der Download über den DialogAddDownload gestartet wurde // (aus TabFilme) String name; String path; if (!pSet.progsContainPath()) { // dann können wir uns das sparen arr[DatenDownload.DOWNLOAD_ZIEL_DATEINAME_NR] = ""; arr[DatenDownload.DOWNLOAD_ZIEL_PFAD_NR] = ""; return; } // ############################################## // Name // ############################################## if (!nname.equals("")) { // wenn vorgegeben, dann den nehmen name = nname; } else { arr[DatenDownload.DOWNLOAD_ZIEL_DATEINAME_NR] = pSet.getZielDateiname(arr[DOWNLOAD_URL_NR]); name = arr[DatenDownload.DOWNLOAD_ZIEL_DATEINAME_NR]; // ############################## // Name sinnvoll belegen if (name.equals("")) { name = getHeute_yyyyMMdd() + "_" + arr[DatenDownload.DOWNLOAD_THEMA_NR] + "-" + arr[DatenDownload.DOWNLOAD_TITEL_NR] + ".mp4"; } name = replaceString(name, film); // %D ... ersetzen name = FilenameUtils.replaceLeerDateiname(name); // prüfen ob das Suffix 2x vorkommt if (name.length() > 8) { String suf1 = name.substring(name.length() - 8, name.length() - 4); String suf2 = name.substring(name.length() - 4); if (suf1.startsWith(".") && suf2.startsWith(".")) { if (suf1.equalsIgnoreCase(suf2)) { name = name.substring(0, name.length() - 4); } } } // Kürzen if (Boolean.parseBoolean(pSet.arr[DatenPset.PROGRAMMSET_LAENGE_BESCHRAENKEN_NR])) { // nur dann ist was zu tun int laenge = Konstanten.LAENGE_DATEINAME; if (!pSet.arr[DatenPset.PROGRAMMSET_MAX_LAENGE_NR].equals("")) { laenge = Integer.parseInt(pSet.arr[DatenPset.PROGRAMMSET_MAX_LAENGE_NR]); } name = GuiFunktionen.cutName(name, laenge); } } // ############################################## // Pfad // ############################################## if (!ppfad.equals("")) { // wenn vorgegeben, dann den nehmen path = ppfad; } else { arr[DatenDownload.DOWNLOAD_ZIEL_PFAD_NR] = pSet.getZielPfad(); path = arr[DatenDownload.DOWNLOAD_ZIEL_PFAD_NR]; // ############################## // Pfad sinnvoll belegen if (path.equals("")) { // wenn leer, vorbelegen path = GuiFunktionen.getStandardDownloadPath(); } if (abo != null) { // Bei Abos: den Namen des Abos eintragen arr[DatenDownload.DOWNLOAD_ABO_NR] = abo.arr[DatenAbo.ABO_NAME_NR]; if (Boolean.parseBoolean(pSet.arr[DatenPset.PROGRAMMSET_THEMA_ANLEGEN_NR])) { // und Abopfad an den Pfad anhängen // pfad = GuiFunktionen.addsPfad(pfad, // GuiFunktionen.replaceLeerDateiname(abo.arr[DatenAbo.ABO_ZIELPFAD_NR], true/* istDatei // */)); path = GuiFunktionen.addsPfad(path, abo.arr[DatenAbo.ABO_ZIELPFAD_NR]); } } else if (Boolean.parseBoolean(pSet.arr[DatenPset.PROGRAMMSET_THEMA_ANLEGEN_NR])) { // bei Downloads den Namen des Themas an den Zielpfad anhängen path = GuiFunktionen.addsPfad( path, FilenameUtils.replaceLeerDateiname(arr[DatenDownload.DOWNLOAD_THEMA_NR])); } path = replaceString(path, film); // %D ... ersetzen // der vorgegebenen Pfad des Sets wird so genommen wie er ist // pfad = GuiFunktionen.replaceLeerDateiname(pfad, false/* istDatei */, false /* leerEntfernen // */); } if (path.endsWith(File.separator)) { path = path.substring(0, path.length() - 1); } // ########################################################### // zur Sicherheit bei Unsinn im Set if (path.equals("")) { path = GuiFunktionen.getStandardDownloadPath(); } if (name.equals("")) { name = getHeute_yyyyMMdd() + "_" + arr[DatenDownload.DOWNLOAD_THEMA_NR] + "-" + arr[DatenDownload.DOWNLOAD_TITEL_NR] + ".mp4"; } // in Win dürfen die Pfade nicht länger als 255 Zeichen haben (für die Infodatei kommen noch // ".txt" dazu) String[] pathName = {path, name}; GuiFunktionen.checkLengthPath(pathName); arr[DOWNLOAD_ZIEL_DATEINAME_NR] = pathName[1]; arr[DOWNLOAD_ZIEL_PFAD_NR] = pathName[0]; arr[DOWNLOAD_ZIEL_PFAD_DATEINAME_NR] = GuiFunktionen.addsPfad(pathName[0], pathName[1]); }