MP3ContentHandler.java
上传用户:liming6160
上传日期:2022-06-07
资源大小:785k
文件大小:4k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  *    Copyright (C) 2001 - 2007 Mobicom-Kavkaz, Inc
  3.  *    MFRadio - stream radio client for Java 2 Micro Edition
  4.  *    
  5.  *    Visit the project page at: http://mfradio.sourceforge.net
  6.  *
  7.  *    This program is free software; you can redistribute it and/or modify
  8.  *    it under the terms of the GNU General Public License as published by
  9.  *    the Free Software Foundation; either version 2 of the License, or
  10.  *    (at your option) any later version.
  11.  *
  12.  *    This program is distributed in the hope that it will be useful,
  13.  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  *    GNU General Public License for more details.
  16.  *
  17.  *    You should have received a copy of the GNU General Public License
  18.  *    along with this program; if not, write to the Free Software
  19.  *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  *
  21.  *    Java (TM) and all Java (TM)-based marks are a trademark or 
  22.  *    registered trademark of Sun Microsystems, Inc, in the United States 
  23.  *    and other countries.
  24.  */
  25. package ru.mobicomk.mfradio.util;
  26. import ru.mobicomk.mfradio.Constants;
  27. import ru.mobicomk.mfradio.controller.UIController;
  28. import ru.mobicomk.mfradio.iface.ContentHandler;
  29. /**
  30.  * Content handler for MP3-files.
  31.  * <p>Handler check and store given link in Player's playlist.</p>
  32.  *
  33.  * @author  Roman Bondarenko
  34.  */
  35. public class MP3ContentHandler 
  36.     implements ContentHandler {
  37.    
  38.     /**
  39.      * Suffix of MP3 file.
  40.      */
  41.     public static final String FILE_NAME_SUFFIX = ".mp3";
  42.     
  43.     private UIController controller_;
  44.     private String url_ = "";
  45.     private String name_ = "";
  46.     
  47.     /**
  48.      * Creates a new instance of handler.
  49.      * @param controller Application controller object.
  50.      */
  51.     public MP3ContentHandler(UIController controller) {
  52.         controller_ = controller;
  53.     }
  54.     
  55.     // ContentHandler implementation ///////////////////////////////////////////
  56.     
  57.     /**
  58.      * Implements method {@link ru.mobicomk.mfradio.iface.ContentHandler#close}
  59.      * <p>NOTE: Do nothing in current class.</p>
  60.      * @see ru.mobicomk.mfradio.iface.ContentHandler
  61.      * @see ru.mobicomk.mfradio.iface.ContentHandler#close
  62.      */
  63.     public void close() {
  64.     }
  65.     
  66.     /**
  67.      * Implements method {@link ru.mobicomk.mfradio.iface.ContentHandler#canHandle}
  68.      * @param url URL to check.
  69.      * @return <b>true</b> if URL is supported, <b>false</b> otherwise.
  70.      * <p>NOTE: current implementation supports URL, which ends with 
  71.      * "<i>.mp3</i>" (case insensitive).</p>
  72.      * @see ru.mobicomk.mfradio.iface.ContentHandler
  73.      * @see ru.mobicomk.mfradio.iface.ContentHandler#canHandle
  74.      */
  75.     public boolean canHandle(String url) {
  76.         return url.toLowerCase().endsWith(FILE_NAME_SUFFIX);
  77.     }
  78.     
  79.     /**
  80.      * Implements method {@link ru.mobicomk.mfradio.iface.ContentHandler#handle}
  81.      * <p>For detail see {@link MP3ContentHandler}.
  82.      *
  83.      * @param name Text of link to handle.
  84.      * @param url URL of link to handle.
  85.      * @see MP3ContentHandler
  86.      * @see ru.mobicomk.mfradio.iface.ContentHandler
  87.      * @see ru.mobicomk.mfradio.iface.ContentHandler#handle
  88.      */
  89.     public void handle(String name, String url) {
  90. final Locale locale = controller_.getLocale();
  91.         if (isValidURL(url)){
  92.             controller_.addStation(new StationInfo(url, name));
  93.             controller_.showInfo(name + " " + locale.getString(Constants.STR_Saved_in_playlist), null);
  94.         } else {
  95.             controller_.showError(locale.getString(Constants.STR_Invalid_URL), null);
  96.         }
  97.     }
  98.     
  99.     // Privates ////////////////////////////////////////////////////////////////
  100.     
  101.     private boolean isValidURL(String url) {
  102.         return (url != null
  103.             && !"".equals(url)
  104.             && url.toLowerCase().startsWith("http://")
  105.             && (-1 == url.indexOf("n"))
  106.             && (255 > url.length())
  107.             );
  108.     }
  109. }