/* * Jajuk * Copyright (C) The Jajuk Team * http://jajuk.info * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ package org.jajuk.services.tags; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Map; import javazoom.jlgui.basicplayer.BasicController; import javazoom.jlgui.basicplayer.BasicPlayer; import javazoom.jlgui.basicplayer.BasicPlayerEvent; import javazoom.jlgui.basicplayer.BasicPlayerException; import javazoom.jlgui.basicplayer.BasicPlayerListener; import org.jajuk.services.covers.Cover; import org.jajuk.util.UtilFeatures; /** * Tagger implementation for formats without tags and read by BasicPlayer API. */ public class NoTagsTagImpl implements ITagImpl { /** Analyzed file. */ private File fio; /** Current file data. */ private Map<String, Object> mapInfo; private static List<String> tagFieldKeyArrayList = new ArrayList<String>(); /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getTrackName() */ @Override public String getTrackName() { return ""; // doing that, the item wil be the default jajuk unknown // string } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getAlbumName() */ @Override public String getAlbumName() { return ""; // doing that, the item will be the default jajuk unknown // string } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getArtistName() */ @Override public String getArtistName() { return ""; // doing that, the item will be the default jajuk unknown // string } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getGenreName() */ @Override public String getGenreName() { return ""; // doing that, the item will be the default jajuk unknown // string } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getLength() */ @Override public long getLength() throws BasicPlayerException { // we have to open the file to get length BasicPlayer player = new BasicPlayer(); player.addBasicPlayerListener(new BasicPlayerListener() { @Override @SuppressWarnings({ "unchecked", "rawtypes" }) public void opened(Object arg0, Map mProperties) { NoTagsTagImpl.this.mapInfo = mProperties; } @Override @SuppressWarnings({ "rawtypes" }) public void progress(int iBytesread, long lMicroseconds, byte[] bPcmdata, Map mProperties) { // required by interface, but nothing to do here... } @Override public void stateUpdated(BasicPlayerEvent bpe) { // required by interface, but nothing to do here... } @Override public void setController(BasicController arg0) { // required by interface, but nothing to do here... } }); if (fio != null) { player.open(fio); return UtilFeatures.getTimeLengthEstimation(mapInfo) / 1000; } return 0; } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getComment() */ @Override public String getComment() { return ""; // by doing that, the item will be the default jajuk // unknown string } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setTrackName(java.lang.String) */ @Override public void setTrackName(String sTrackName) { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setAlbumName(java.lang.String) */ @Override public void setAlbumName(String sAlbumName) { // required by interface, but nothing to do here... } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setComment(java.lang.String) */ @Override public void setComment(String sComment) { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setArtistName(java.lang.String) */ @Override public void setArtistName(String sArtistName) { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setGenreName(java.lang.String) */ @Override public void setGenreName(String genre) { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setFile(java.io.File) */ @Override public void setFile(File fio) { this.fio = fio; } /* * (non-Javadoc) * * @see org.jajuk.tag.ITagImpl#commit() */ @Override public void commit() { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.tag.ITagImpl#getOrder() */ @Override public long getOrder() { return 0l; } /* * (non-Javadoc) * * @see org.jajuk.tag.ITagImpl#setOrder(java.lang.String) */ @Override public void setOrder(long lOrder) { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.tag.ITagImpl#setYear(int) */ @Override public void setYear(String year) { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.tag.ITagImpl#getYear() */ @Override public String getYear() { return "0"; } /* * (non-Javadoc) * * @see org.jajuk.tag.ITagImpl#getQuality() */ @Override public long getQuality() { return 0l; } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getAlbumArtist() */ @Override public String getAlbumArtist() { return ""; } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getDiscNumber() */ @Override public long getDiscNumber() { return 01; } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setAlbumArtist(java.lang.String) */ @Override public void setAlbumArtist(String albumArtist) { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setDiscNumber(int) */ @Override public void setDiscNumber(long discnumber) { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#deleteLyrics() */ @Override public void deleteLyrics() throws Exception { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getLyrics() */ @Override public String getLyrics() throws Exception { return ""; } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setLyrics(java.lang.String) */ @Override public void setLyrics(String sLyrics) throws Exception { // nothing to do here } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#getTagField(java.lang.String) */ @Override public String getTagField(String tagFieldKey) throws Exception { return ""; } /* * (non-Javadoc) * * @see org.jajuk.services.tags.ITagImpl#setTagField(java.lang.String, * java.lang.String) */ @Override public void setTagField(String tagFieldKey, String tagFieldValue) { return; } /* (non-Javadoc) * @see org.jajuk.services.tags.ITagImpl#getSupportedTagFields() */ @Override public List<String> getSupportedTagFields() { return tagFieldKeyArrayList; } /* (non-Javadoc) * @see org.jajuk.services.tags.ITagImpl#getCovers() */ @Override public List<Cover> getCovers() throws Exception { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see org.jajuk.services.tags.ITagImpl#isTagAvailable() */ @Override public boolean isTagAvailable() { return true; } }