/*
* Copyright (c) 2008, 2009, 2010, 2011 Denis Tulskiy
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with this work. If not, see <http://www.gnu.org/licenses/>.
*/
package com.tulskiy.musique.system;
import com.tulskiy.musique.audio.AudioFileReader;
import com.tulskiy.musique.audio.AudioTagWriter;
import com.tulskiy.musique.audio.formats.mp4.MP4FileReader;
import com.tulskiy.musique.audio.formats.ape.APEFileReader;
import com.tulskiy.musique.audio.formats.ape.APETagWriter;
import com.tulskiy.musique.audio.formats.cue.CUEFileReader;
import com.tulskiy.musique.audio.formats.flac.FLACFileReader;
import com.tulskiy.musique.audio.formats.mp3.MP3FileReader;
import com.tulskiy.musique.audio.formats.mp3.MP3TagWriter;
import com.tulskiy.musique.audio.formats.mp4.MP4TagWriter;
import com.tulskiy.musique.audio.formats.ogg.OGGFileReader;
import com.tulskiy.musique.audio.formats.ogg.VorbisTagWriter;
import com.tulskiy.musique.audio.formats.tta.TTAFileReader;
import com.tulskiy.musique.audio.formats.uncompressed.PCMFileReader;
import com.tulskiy.musique.audio.formats.wavpack.WavPackFileReader;
import com.tulskiy.musique.playlist.Track;
import com.tulskiy.musique.util.Util;
import java.util.ArrayList;
/**
* Author: Denis Tulskiy
* Date: Jun 22, 2010
*/
public class TrackIO {
private static ArrayList<AudioFileReader> readers;
private static ArrayList<AudioTagWriter> writers;
static {
readers = new ArrayList<AudioFileReader>();
readers.add(new MP3FileReader());
readers.add(new APEFileReader());
readers.add(new CUEFileReader());
readers.add(new FLACFileReader());
readers.add(new OGGFileReader());
readers.add(new PCMFileReader());
readers.add(new WavPackFileReader());
readers.add(new MP4FileReader());
readers.add(new TTAFileReader());
writers = new ArrayList<AudioTagWriter>();
writers.add(new MP3TagWriter());
writers.add(new APETagWriter());
writers.add(new VorbisTagWriter());
writers.add(new MP4TagWriter());
}
public static AudioFileReader getAudioFileReader(String fileName) {
String ext = Util.getFileExt(fileName);
for (AudioFileReader reader : readers) {
if (reader.isFileSupported(ext))
return reader;
}
return null;
}
public static AudioTagWriter getAudioFileWriter(String fileName) {
String ext = Util.getFileExt(fileName).toLowerCase();
for (AudioTagWriter writer : writers) {
if (writer.isFileSupported(ext))
return writer;
}
return null;
}
public static void write(Track track) {
if (track.getTrackData().isFile()) {
AudioTagWriter writer = TrackIO.getAudioFileWriter(track.getTrackData().getFile().getName());
if (writer != null)
try {
writer.write(track);
} catch (com.tulskiy.musique.audio.TagWriteException e) {
e.printStackTrace();
}
}
}
}