/*
* Copyright (c) 2006 Manuel Traut and Volker Dahnke
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors: Manuel Traut and Volker Dahnke
*/
package YalpServer;
import java.io.File;
import java.io.IOException;
import java.io.FileNotFoundException;
import de.hampelratte.id3.*;
import YalpInterfaces.*;
/*
* Class FileInfoManager
*
* Creates a Result out of FileInformations (ID3, etc)
*
* @author Volker Dahnke / Manuel Traut
*
* @version 0.1 14-12-2005
*
* @see ServerControl
*/
public class FileInfoManager {
private Media fileInfo;
private EncodingType eType;
/*
* Constructor: tries to get all Informations about a file
*
* @param file
*/
public FileInfoManager(File file) {
this.eType = EncodingType.UNKNOWN;
this.fileInfo = new Media();
this.fileInfo.path = file.getParent()+file.separator;
this.fileInfo.fileName = file.getName();
/* check extensions is mp3 */
if( this.fileInfo.fileName.substring( this.fileInfo.fileName.length() - 3,
this.fileInfo.fileName.length()).equalsIgnoreCase( "mp3" ) )
{
this.eType = EncodingType.MP3;
}
switch(this.eType.value()) {
case EncodingType._MP3:
try
{
/* opening mp3 file for reading and writing */
MP3File mp3 = new de.hampelratte.id3.MP3File(file.toString(), "r");
this.fileInfo.type = MediaType.SOUND;
if(mp3.hasID3v1Tag){
ID3v1Tag tag = mp3.readID3v1Tag();
/* t.b.d. create StringProperties
this.fileInfo.album = tag.getAlbum();
this.fileInfo.author = tag.getArtist();
this.fileInfo.category = tag.getGenre();
this.fileInfo.name = tag.getTrack() +" - "+tag.getTitle();
this.fileInfo.year = tag.getYear();
*/
}
if(mp3.hasID3v2Tag){
// reading the ID3v2Tag
ID3v2Tag tag = mp3.readID3v2Tag();
/* t.b.d. create StringProperties
this.fileInfo.album = tag.getAlbum();
this.fileInfo.author = tag.getArtist();
this.fileInfo.category = tag.getGenre();
this.fileInfo.year = tag.getYear();
*/
if( !(tag.getTrack().equals(""))){
this.fileInfo.name = tag.getTrack() +" - "+tag.getTitle();
} else {
this.fileInfo.name = tag.getTitle();
}
}
if (this.fileInfo.name.equals("")) {
this.fileInfo.name =
file.getName().substring( 0, file.getName().length() - 4 );
}
mp3.close();
} catch (Exception e) {
this.fileInfo.name =
file.getName().substring(0,file.getName().length() - 4);
}
break;
default:
this.fileInfo.name =
file.getName().substring(0,file.getName().length()-4);
this.fileInfo.type = MediaType.VIDEO;
break;
}
}
/*
* returns the information to an media, found
* @return MediaChange
* Informations about the media
*/
public Media getInfo(){
return this.fileInfo;
}
}