| | |
| | | import org.farng.mp3.id3.ID3v1; |
| | | |
| | | /** |
| | | * |
| | | * @author ulrich |
| | | * Die Klasse ListFileHandler gibt die Media-Inhalte eines Ablageortes |
| | | * als Liste aus. Audio-Inhalte werden dabei unter Verwendung von |
| | | * Informationen aus ID3-Tags dargestellt, z.B. Artist, Album, Titel, |
| | | * sofern solche vorhanden sind. Zudem werden nur diejenigen Inahlte |
| | | * ausgegeben, die Dateierweiterungen besitzen, wie sie in der FileStorage |
| | | * unter 'Einstellung' unter audioexts, videoexts und imageexts angegeben |
| | | * sind (die Namen der Einstellungen sind ueber das Resource Bundle von |
| | | * Tango ueber RB_AUDIOEXTS, RB_VIDEOEXTS und RB_FOTOEXTS veraenderbar). |
| | | * |
| | | * Ein ListFileHandler gibt dann fuer Ordner den Inhalt als Liste aus und |
| | | * Streamt den Inhalt von Dateien. |
| | | * |
| | | * Der ListFileHandler modelliert das Verhalten, das auf der Bedienoberflaeche |
| | | * von Tango in der Konfiguration als 'Kataloge' angelegt werden kann. Die |
| | | * HTTP Servicepunkte ergeben sich aus den Ablageort-Objekten die fuer |
| | | * Kataloge vom Benutzer in der Konfiguration angelegt werden. |
| | | * |
| | | * Der vom Benutzer gewaehlte URL eines Ablagortes wird vom ListFileHandler zu |
| | | * dem Pfad des Ablageortes hin verknuepft. So ergibt sich fuer jeden |
| | | * ListFileHandler der Endpunkt |
| | | * |
| | | * HTTP GET http://mein-server/tango/[Ablageort-URL]/ |
| | | * |
| | | * Ist z.B. Audio und Video unter dem Pfad /media/extssd/mc abgelegt, kann |
| | | * ein Ablageort namens 'AV' den URL /media fuer diesen Pfad definieren. Dann verweist |
| | | * |
| | | * http://mein-server/tango/media/ |
| | | * |
| | | * auf den Inhalt unter /media/extssd/mc |
| | | * |
| | | * Hierbei wird der Inhalt unter dem Katalognamen 'AV' in der Bedienoberflaeche von |
| | | * Tango dargestellt, d.h., die Auswahl von 'AV' an der Bedienoberflaeche bewirkt |
| | | * 'unter der Haube' den Abruf von http://mein-server/tango/media/ |
| | | * |
| | | * Selbstverstaendlich kann aber dieser URL auch von ueberallher verwendet werden. |
| | | * Die Verknuepfung zwischen Katalogname und URL besteht nur an der Bedienoberflaeche |
| | | * von Tango. |
| | | * |
| | | * @author Ulrich Hilger |
| | | */ |
| | | public class ListFileHandler extends FileHandler { |
| | | |
| | | public static final String RB_AUDIOEXTS = "audioexts"; |
| | | public static final String RB_VIDEOEXTS = "videoexts"; |
| | | public static final String RB_FOTOEXTS = "imageexts"; |
| | | |
| | | /* Der Logger fuer diesen ListFileHandler */ |
| | | private static final Logger logger = Logger.getLogger(ListFileHandler.class.getName()); |
| | |
| | | |
| | | Map extMap = new HashMap(); |
| | | |
| | | public ListFileHandler(String absoluteDirectoryPathAndName) { |
| | | private String conf; |
| | | |
| | | public ListFileHandler(String absoluteDirectoryPathAndName, String conf) { |
| | | super(absoluteDirectoryPathAndName); |
| | | /* |
| | | Ermittlung von Dateifiltern. |
| | |
| | | jeweils als Dateierweiterungen mit Komma getrennt |
| | | z.B. "mp4,m4v" |
| | | */ |
| | | FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF))); |
| | | initMap(fs, App.getRs(App.RB_AUDIOEXTS), StorageFile.TYP_AUDIO); |
| | | initMap(fs, App.getRs(App.RB_VIDEOEXTS), StorageFile.TYP_VIDEO); |
| | | FileStorage fs = new FileStorage(conf); |
| | | initMap(fs, getResString(RB_AUDIOEXTS), StorageFile.TYP_AUDIO); |
| | | initMap(fs, getResString(RB_VIDEOEXTS), StorageFile.TYP_VIDEO); |
| | | initMap(fs, getResString(RB_FOTOEXTS), StorageFile.TYP_FOTO); |
| | | } |
| | | |
| | | private void initMap(Storage s, String key, String typ) { |