/* * Copyright (c) 2015-2019. Developed by Hedgecode. * * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.hedgecode.xml.xspf; import java.io.File; import java.io.UnsupportedEncodingException; import javax.xml.bind.JAXBException; import org.hedgecode.xml.xspf.validate.ValidateException; import static org.hedgecode.xml.xspf.XSPFConstants.Format; import static org.hedgecode.xml.xspf.XSPFConstants.Version; /** * XSPF API for external applications. * * @author Dmitry Samoshin aka gotty */ public final class XSPF { public static Playlist create() { return create(Format.RELAX_NG); } public static Playlist create(Format format) { return new XSPFPlaylist(format); } public static Playlist create(Version version) { return new XSPFPlaylist(version); } public static Playlist create(String key) { Format format = Format.byName(key); if (format != null) return create(format); Version version = Version.byName(key); if (version != null) return create(version); return null; } public static void generate(Playlist playlist, File outputFile) throws XSPFException { if (playlist == null) throw new XSPFException(XSPFConstants.Errors.NULL_PLAYLIST); try { playlist.write(outputFile); } catch (JAXBException e) { throw new XSPFException(XSPFConstants.Errors.BINDING_ERROR); } } public static String generate(Playlist playlist) throws XSPFException { if (playlist == null) throw new XSPFException(XSPFConstants.Errors.NULL_PLAYLIST); String result; try { result = playlist.getAsString(); } catch (JAXBException e) { throw new XSPFException(XSPFConstants.Errors.BINDING_ERROR); } catch (UnsupportedEncodingException e) { throw new XSPFException(XSPFConstants.Errors.ENCODING_ERROR); } return result; } public static Playlist create(File inputFile) throws JAXBException { Playlist playlist = PlaylistFactory.createPlaylist(Format.XSD); playlist.read(inputFile); return playlist; } public static Track createTrack(String location, String title) { Track track = PlaylistFactory.createTrack(); track.addLocation(location); track.setTitle(title); return track; } public static Track addTrack(Playlist playlist, String location, String title) { Track track = createTrack(location, title); playlist.addTrack(track); return track; } public static void addTrack(Playlist playlist, Track track) { playlist.addTrack(track); } public static void addTracks( Playlist playlist, Playlist tracksPlaylist) throws XSPFException { if (playlist == null) throw new XSPFException(XSPFConstants.Errors.NULL_PLAYLIST); if (tracksPlaylist != null) { for (Track track : tracksPlaylist.getTracks()) { playlist.addTrack(track); } } } public static void setProperty(String name, Object value) { XSPFProperties.setProperty(name, value); } public static int validate(File inputFile) throws JAXBException { int result = 0; Playlist playlist = create(inputFile); if (playlist != null) try { playlist.validate(); } catch (ValidateException e) { result = e.getCode(); } return result; } public static String get(int code) { return null; // todo } }