Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Copyright (c) 2008, Christophe Delory
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY CHRISTOPHE DELORY ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL CHRISTOPHE DELORY BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- package org.messic.server.playlists.m3u;
- import java.io.BufferedWriter;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.util.ArrayList;
- import java.util.List;
- import org.messic.server.playlists.Media;
- import org.messic.server.playlists.Playlist;
- import org.messic.server.playlists.SpecificPlaylist;
- import org.messic.server.playlists.SpecificPlaylistProvider;
- import org.messic.server.playlists.content.Content;
- /**
- * A M3U, M4U, or Real Audio Metadata playlist.
- *
- * @version $Revision: 92 $
- * @author Christophe Delory
- */
- public class M3U
- implements SpecificPlaylist
- {
- /**
- * The provider of this specific playlist.
- */
- private transient SpecificPlaylistProvider _provider = null;
- /**
- * The list of child resources.
- */
- private final List<Resource> _resources = new ArrayList<Resource>();
- /**
- * <code>true</code> if the marshalled playlist must be an Extension M3U, <code>false</code> otherwise.
- */
- private boolean _extensionM3U = false;
- @Override
- public void setProvider( final SpecificPlaylistProvider provider )
- {
- _provider = provider;
- }
- @Override
- public SpecificPlaylistProvider getProvider()
- {
- return _provider;
- }
- @Override
- public void writeTo( final OutputStream out, final String encoding )
- throws Exception
- {
- String enc = encoding;
- if ( enc == null )
- {
- enc = "UTF-8"; // For the M3U8 case. FIXME US-ASCII?
- }
- final BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( out, enc ) ); // Throws
- // NullPointerException
- // if out is null. May
- // throw
- // UnsupportedEncodingException.
- if ( _extensionM3U )
- {
- writer.write( "#EXTM3U" ); // May throw IOException.
- writer.newLine(); // May throw IOException.
- }
- for ( Resource resource : _resources )
- {
- if ( _extensionM3U )
- {
- writer.write( "#EXTINF:" ); // May throw IOException.
- writer.write( Long.toString( resource.getLength() ) ); // May throw IOException.
- writer.write( "," ); // May throw IOException.
- if ( resource.getName() == nu
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement