mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 16:47:31 -05:00
Changes to model, view and controller components and updates all gui editors. Removes the configuration panel and tree and replaces with 3 new panels. Updates playlist.xml to a new playlist_v2.xml format.
169 lines
4.1 KiB
Java
169 lines
4.1 KiB
Java
package playlist.version1;
|
|
|
|
import java.io.FileInputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import javax.xml.bind.JAXBContext;
|
|
import javax.xml.bind.JAXBException;
|
|
import javax.xml.bind.Unmarshaller;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import playlist.PlaylistV2;
|
|
import alias.Alias;
|
|
import controller.channel.Channel;
|
|
import controller.channel.map.ChannelMap;
|
|
|
|
public class PlaylistConverterV1ToV2
|
|
{
|
|
private final static Logger mLog =
|
|
LoggerFactory.getLogger( PlaylistConverterV1ToV2.class );
|
|
|
|
private PlaylistV2 mConvertedPlaylist;
|
|
private List<String> mErrors = new ArrayList<>();
|
|
|
|
@SuppressWarnings( "deprecation" )
|
|
public PlaylistConverterV1ToV2( Path path )
|
|
{
|
|
PlaylistV1 playlistVersion1 = null;
|
|
|
|
if( path != null && Files.exists( path ) )
|
|
{
|
|
mLog.info( "attempting playlist v1 to v2 conversion [" +
|
|
path.toString() + "]" );
|
|
|
|
JAXBContext context = null;
|
|
|
|
InputStream in = null;
|
|
|
|
try
|
|
{
|
|
in = new FileInputStream( path.toString() );
|
|
|
|
try
|
|
{
|
|
context = JAXBContext.newInstance( PlaylistV1.class );
|
|
|
|
Unmarshaller m = context.createUnmarshaller();
|
|
|
|
playlistVersion1 = (PlaylistV1)m.unmarshal( in );
|
|
}
|
|
catch ( JAXBException e )
|
|
{
|
|
mErrors.add( "Couldn't unmarshall version 1 playlist - " +
|
|
e.getLocalizedMessage() );
|
|
}
|
|
}
|
|
catch ( Exception e )
|
|
{
|
|
mErrors.add( "Couldn't open version 1 playlist - [" +
|
|
path.toString() + "] - " + e.getLocalizedMessage() );
|
|
}
|
|
finally
|
|
{
|
|
if( in != null )
|
|
{
|
|
try
|
|
{
|
|
in.close();
|
|
}
|
|
catch ( IOException e )
|
|
{
|
|
mLog.error( "exception while closing " +
|
|
"the playlist file inputstream reader", e );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
mErrors.add( "version 1 playlist is null or not found [" +
|
|
path.toString() + "]" );
|
|
}
|
|
|
|
if( playlistVersion1 != null )
|
|
{
|
|
mConvertedPlaylist = new PlaylistV2();
|
|
|
|
if( playlistVersion1.hasSystemList() )
|
|
{
|
|
SystemList systemList = playlistVersion1.getSystemList();
|
|
|
|
for( playlist.version1.System system: systemList.getSystem() )
|
|
{
|
|
for( Site site: system.getSite() )
|
|
{
|
|
for( Channel channel: site.getChannel() )
|
|
{
|
|
channel.setSystem( system.getName() );
|
|
channel.setSite( site.getName() );
|
|
|
|
mConvertedPlaylist.getChannels().add( channel );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if( playlistVersion1.hasAliasDirectory() )
|
|
{
|
|
AliasDirectory aliasDirectory = playlistVersion1.getAliasDirectory();
|
|
|
|
for( AliasListOld list: aliasDirectory.getAliasList() )
|
|
{
|
|
for( Group group: list.getGroup() )
|
|
{
|
|
for( Alias alias: group.getAlias() )
|
|
{
|
|
alias.setList( list.getName() );
|
|
alias.setGroup( group.getName() );
|
|
|
|
mConvertedPlaylist.getAliases().add( alias );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if( playlistVersion1.hasChannelMapList() )
|
|
{
|
|
//Move the channel maps out of the channel map list
|
|
ChannelMapList channelMapList = playlistVersion1.getChannelMapList();
|
|
|
|
List<ChannelMap> channelMaps = channelMapList.getChannelMap();
|
|
|
|
if( channelMaps != null && !channelMaps.isEmpty() )
|
|
{
|
|
mConvertedPlaylist.getChannelMaps().addAll( channelMaps );
|
|
}
|
|
}
|
|
|
|
mLog.info( "Converted [" + mConvertedPlaylist.getChannels().size() +
|
|
"] channels to new playlist format" );
|
|
mLog.info( "Converted [" + mConvertedPlaylist.getAliases().size() +
|
|
"] aliases to new playlist format" );
|
|
mLog.info( "Converted [" + mConvertedPlaylist.getChannelMaps().size() +
|
|
"] channel maps to new playlist format" );
|
|
}
|
|
}
|
|
|
|
public PlaylistV2 getConvertedPlaylist()
|
|
{
|
|
return mConvertedPlaylist;
|
|
}
|
|
|
|
public List<String> getErrorMessages()
|
|
{
|
|
return mErrors;
|
|
}
|
|
|
|
public boolean hasErrorMessages()
|
|
{
|
|
return !mErrors.isEmpty();
|
|
}
|
|
}
|