diff options
Diffstat (limited to 'songdbj/net/shredzone/ifish/ltr/LTR.java')
-rw-r--r-- | songdbj/net/shredzone/ifish/ltr/LTR.java | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/songdbj/net/shredzone/ifish/ltr/LTR.java b/songdbj/net/shredzone/ifish/ltr/LTR.java deleted file mode 100644 index 8a38676583..0000000000 --- a/songdbj/net/shredzone/ifish/ltr/LTR.java +++ /dev/null @@ -1,251 +0,0 @@ -/* - * iFish -- An iRiver iHP jukebox database creation tool - * - * Copyright (c) 2004 Richard "Shred" Körber - * http://www.shredzone.net/go/ifish - * - *----------------------------------------------------------------------- - * ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is IFISH. - * - * The Initial Developer of the Original Code is - * Richard "Shred" Körber. - * Portions created by the Initial Developer are Copyright (C) 2004 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** - */ - -package net.shredzone.ifish.ltr; - -import java.io.*; - -/** - * The Base Class for the Lightweight Tag Reader. LTR was made to read - * the basic tag information of MP3 (IDv1, IDv2), Ogg Vorbis and ASF/WMA - * files. It is lightweight because it is optimized for speed, and is - * only able to read the tag information, but unable to edit them. - * - * @author Richard Körber <dev@shredzone.de> - * @version $Id$ - */ -public abstract class LTR { - protected RandomAccessFile in; // The file to be checked - - /** - * Create a new LTR object. It is connected to the file to be decoded, - * by a RandomAccessFile. The cursor position will be changed during - * recognizing and decoding. - * - * @param in RandomAccessFile to be used - * @throws FormatDecodeException Description of the Exception - */ - public LTR( RandomAccessFile in ) - throws FormatDecodeException { - this.in = in; - try { - in.seek( 0 ); // To the beginning of file - } catch( IOException e ) { - throw new FormatDecodeException( "couldn't seek: " + e.toString() ); - } - } - - /** - * Create an LTR object for a file. If the file given, was not - * recognized or did not contain any tags, null will be returned. - * - * @param file File to open - * @return LTR to this file, or null - * @exception IOException Description of the Exception - */ - public static LTR create( File file ) { - RandomAccessFile in = null; - LTR result = null; - - try { - in = new RandomAccessFile( file, "r" ); - - try { - result = new TagOggVorbis( in ); - return result; - } catch( FormatDecodeException e ) {} - - try { - result = new TagMp3v2( in ); - return result; - } catch( FormatDecodeException e ) {} - - try { - result = new TagMp3v200( in ); - return result; - } catch( FormatDecodeException e ) {} - - try { - result = new TagAsf( in, file ); - return result; - }catch( FormatDecodeException e ) {} - - try { - // Always check ID3v1 *after* ID3v2, because a lot of ID3v2 - // files also contain ID3v1 tags with limited content. - result = new TagMp3v1( in ); - return result; - } catch( FormatDecodeException e ) {} - }catch(IOException e) { - return null; - } finally { - try { - if( in!=null ) in.close(); - } catch(IOException e) { - System.out.println("Failed to close file."); - } - } - - return null; - } - - /** - * Get the type of this file. This is usually the compression format - * itself (e.g. "OGG" or "MP3"). If there are different taggings for - * this format, the used tag format is appended after a slash (e.g. - * "MP3/id3v2"). - * - * @return The type - */ - public abstract String getType(); - - /** - * Get the artist. - * - * @return The artist (never null) - */ - public abstract String getArtist(); - - /** - * Get the album. - * - * @return The album (never null) - */ - public abstract String getAlbum(); - - /** - * Get the title. - * - * @return The title (never null) - */ - public abstract String getTitle(); - - /** - * Get the genre. - * - * @return The genre (never null) - */ - public abstract String getGenre(); - - /** - * Get the year. - * - * @return The year (never null) - */ - public abstract String getYear(); - - /** - * Get the comment. - * - * @return The comment (never null) - */ - public abstract String getComment(); - - /** - * Get the track. - * - * @return The track (never null) - */ - public abstract String getTrack(); - - /** - * Read a String of a certain length from the file. It will always use - * "ISO-8859-1" encoding! - * - * @param length Maximum number of bytes to read - * @return String that was read - * @throws IOException If EOF was already reached - */ - protected String readStringLen( int length ) - throws IOException { - return readStringLen( length, "ISO-8859-1" ); - } - - /** - * Read a String of a certain length from the file. The length will - * not be exceeded. No null termination is required. Anyhow an - * IOException will be thrown if the EOF was reached before invocation. - * - * @param length Maximum number of bytes to read - * @param charset Charset to be used - * @return String that was read - * @throws IOException If EOF was already reached - */ - protected String readStringLen( int length, String charset ) - throws IOException { - byte[] buf = new byte[length]; - int readlength = in.read( buf ); - if( readlength < 0 ) { - throw new IOException( "Unexpected EOF" ); - } - return new String( buf, 0, readlength, charset ); - } - - /** - * Return a string representation of the LTR content. - * - * @return String representation - */ - public String toString() { - StringBuffer buff = new StringBuffer(); - buff.append( getType() ); - buff.append( "[ART='" ); - buff.append( getArtist() ); - buff.append( "' ALB='" ); - buff.append( getAlbum() ); - buff.append( "' TIT='" ); - buff.append( getTitle() ); - buff.append( "' TRK='" ); - buff.append( getTrack() ); - buff.append( "' GEN='" ); - buff.append( getGenre() ); - buff.append( "' YR='" ); - buff.append( getYear() ); - buff.append( "' CMT='" ); - buff.append( getComment() ); - buff.append( "']" ); - return buff.toString(); - } - -} |