org.stanwood.media.store
Class SapphireStore

java.lang.Object
  extended by org.stanwood.media.store.SapphireStore
All Implemented Interfaces:
IExtension, IStore

public class SapphireStore
extends java.lang.Object
implements IStore

This is a write only store that is used to store information in a format that can be used by the sapphire frontrow plug-in. "http://appletv.nanopi.net/". The details of the XML format can be found here: "http://appletv.nanopi.net/manual/overriding-metadata/".

Every time the cacheEpisode(File, File, IEpisode) or the cacheFilm(File, File, IFilm, Integer) method is called, a XML file is written next to the episodes/films file with a .xml extension.

This store has the optional parameter "PreferredCertificationCounrty". If this is set, then when fetching the rating, this country's rating is used. If this is not set or the country can't be found, then the first rating is used.


Constructor Summary
SapphireStore()
           
 
Method Summary
 void cacheEpisode(java.io.File rootMediaDir, java.io.File episodeFile, IEpisode episode)
          This will store the episode and show details in a XML file next too the media file.
 void cacheFilm(java.io.File rootMediaDir, java.io.File filmFile, IFilm film, java.lang.Integer part)
          This is used to write a film to the store.
 void cacheSeason(java.io.File rootMediaDir, java.io.File episodeFile, ISeason season)
          Does nothing as it is not implemented for this store
 void cacheShow(java.io.File rootMediaDir, java.io.File episodeFile, IShow show)
          Does nothing as it is not implemented for this store
 void fileDeleted(MediaDirectory dir, java.io.File file)
          This is called when a file is deleted from a media directory
 void fileUpdated(MediaDirectory mediaDirectory, java.io.File file)
          This is called when a file is updated within a media directory.
 IEpisode getEpisode(java.io.File rootMediaDir, java.io.File episodeFile, ISeason season, int episodeNum)
          Always returns null as it is not implemented for this store.
 IEpisode getEpisode(MediaDirectory dir, java.io.File file)
          This is used to get a episode from a store via it's file name.
 IFilm getFilm(java.io.File rootMediaDir, java.io.File filmFile, java.lang.String filmId)
          Always returns null as it is not implemented for this store.
 IFilm getFilm(MediaDirectory dir, java.io.File file)
          This is used to get a film from a store via it's file name.
 java.lang.String getParameter(java.lang.String key)
          Used to get the value of a source parameter.
 Season getSeason(java.io.File rootMediaDir, java.io.File episodeFile, IShow show, int seasonNum)
          Always returns null as it is not implemented for this store.
 IShow getShow(java.io.File rootMediaDir, java.io.File episodeFile, java.lang.String showId)
          Always returns null as it is not implemented for this store.
 IEpisode getSpecial(java.io.File rootMediaDir, java.io.File episodeFile, ISeason season, int specialNumber)
          Always returns null as it is not implemented for this store.
 void init(Controller controller, java.io.File nativeDir)
          Called to initialise the stores and check all their resources can be found.
 java.util.List<IEpisode> listEpisodes(MediaDirConfig dirConfig, IProgressMonitor monitor)
          This is used to list all the episodes within the store if the store supports the operation.
 java.util.List<IFilm> listFilms(MediaDirConfig dirConfig, IProgressMonitor monitor)
          This is used to list all the films within the store if the store supports the operation.
 void performedActions(MediaDirectory dir)
          This is called after all the actions on all the media files have been performed so that the store can clean up any stale data.
 void renamedFile(java.io.File rootMediaDir, java.io.File oldFile, java.io.File newFile)
          This will update all references of the old file to the new file
 SearchResult searchMedia(java.lang.String name, Mode mode, java.lang.Integer part, MediaDirConfig dirConfig, java.io.File mediaFile)
          Used to search for store for media
 void setParameter(java.lang.String key, java.lang.String value)
          Used to set source parameters.
 void upgrade(MediaDirectory mediaDirectory)
          This is called to check if a upgrade is needed and perform the upgrade if required
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SapphireStore

public SapphireStore()
Method Detail

cacheEpisode

public void cacheEpisode(java.io.File rootMediaDir,
                         java.io.File episodeFile,
                         IEpisode episode)
                  throws StoreException
This will store the episode and show details in a XML file next too the media file. The XML file will be in the format found here "http://appletv.nanopi.net/manual/overriding-metadata/".

Specified by:
cacheEpisode in interface IStore
Parameters:
episode - The episode to the stored
episodeFile - the file which the episode is stored in
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.
Throws:
StoreException - Thrown if their is a problem writing to the store

cacheSeason

public void cacheSeason(java.io.File rootMediaDir,
                        java.io.File episodeFile,
                        ISeason season)
Does nothing as it is not implemented for this store

Specified by:
cacheSeason in interface IStore
Parameters:
season - The season too store
episodeFile - the file witch the episode is stored in
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.

cacheShow

public void cacheShow(java.io.File rootMediaDir,
                      java.io.File episodeFile,
                      IShow show)
Does nothing as it is not implemented for this store

Specified by:
cacheShow in interface IStore
Parameters:
show - The show too store
episodeFile - the file witch the episode is stored in
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.

getEpisode

public IEpisode getEpisode(java.io.File rootMediaDir,
                           java.io.File episodeFile,
                           ISeason season,
                           int episodeNum)
Always returns null as it is not implemented for this store.

Specified by:
getEpisode in interface IStore
Parameters:
season - The season the episode belongs too
episodeNum - The number of the episode
episodeFile - the file which the episode is stored in
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.
Returns:
The episode, or null if it can't be found

getSeason

public Season getSeason(java.io.File rootMediaDir,
                        java.io.File episodeFile,
                        IShow show,
                        int seasonNum)
Always returns null as it is not implemented for this store.

Specified by:
getSeason in interface IStore
Parameters:
show - The show the season belongs too
seasonNum - The number of the season
episodeFile - the file which the episode is stored in
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.
Returns:
The season if it can be found, otherwise null.

getShow

public IShow getShow(java.io.File rootMediaDir,
                     java.io.File episodeFile,
                     java.lang.String showId)
Always returns null as it is not implemented for this store.

Specified by:
getShow in interface IStore
Parameters:
showId - The id of the show
episodeFile - the file which the episode is stored in
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.
Returns:
The show if it can be found, otherwise null.

getSpecial

public IEpisode getSpecial(java.io.File rootMediaDir,
                           java.io.File episodeFile,
                           ISeason season,
                           int specialNumber)
Always returns null as it is not implemented for this store.

Specified by:
getSpecial in interface IStore
Parameters:
season - The season the special episode belongs too
specialNumber - The number of the special episode
episodeFile - the file which the episode is stored in
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.
Returns:
The special episode, or null if it can't be found

searchMedia

public SearchResult searchMedia(java.lang.String name,
                                Mode mode,
                                java.lang.Integer part,
                                MediaDirConfig dirConfig,
                                java.io.File mediaFile)
                         throws StoreException
Used to search for store for media

Specified by:
searchMedia in interface IStore
Parameters:
name - The search term
mode - The mode of the search
part - The part number to search for
dirConfig - The Media directory configuration
mediaFile - The media file the search is associated with
Returns:
The search result or NULL if it could not be found
Throws:
StoreException - Thrown if their is a problem with the store

cacheFilm

public void cacheFilm(java.io.File rootMediaDir,
                      java.io.File filmFile,
                      IFilm film,
                      java.lang.Integer part)
               throws StoreException
This is used to write a film to the store.

Specified by:
cacheFilm in interface IStore
Parameters:
filmFile - The file which the film is stored in
film - The film to write
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.
part - The part number of the film
Throws:
StoreException - Thrown if their is a problem with the store

renamedFile

public void renamedFile(java.io.File rootMediaDir,
                        java.io.File oldFile,
                        java.io.File newFile)
This will update all references of the old file to the new file

Specified by:
renamedFile in interface IStore
Parameters:
oldFile - The old file
newFile - The new file
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.

getFilm

public IFilm getFilm(java.io.File rootMediaDir,
                     java.io.File filmFile,
                     java.lang.String filmId)
              throws StoreException,
                     java.net.MalformedURLException,
                     java.io.IOException
Always returns null as it is not implemented for this store.

Specified by:
getFilm in interface IStore
Parameters:
filmFile - The file the film is stored in
filmId - The id of the film
rootMediaDir - This is the directory which is the root of media, this can be the current directory if it was not specified on the command line.
Returns:
The film, or null if it can't be found
Throws:
StoreException - Thrown if their is a problem retrieving the data
java.net.MalformedURLException - Thrown if their is a problem creating URL's
java.io.IOException - Thrown if their is a I/O related problem.

setParameter

public void setParameter(java.lang.String key,
                         java.lang.String value)

Used to set source parameters. If the key is not supported by this source, then a SourceException is thrown.

Specified by:
setParameter in interface IStore
Parameters:
key - The key of the parameter
value - The value of the parameter

getParameter

public java.lang.String getParameter(java.lang.String key)

Used to get the value of a source parameter. If the key is not supported by this source, then a SourceException is thrown.

Specified by:
getParameter in interface IStore
Parameters:
key - The key of the parameter
Returns:
The value of the parameter

performedActions

public void performedActions(MediaDirectory dir)
This is called after all the actions on all the media files have been performed so that the store can clean up any stale data.

Specified by:
performedActions in interface IStore
Parameters:
dir - The media directory

fileDeleted

public void fileDeleted(MediaDirectory dir,
                        java.io.File file)
                 throws StoreException
This is called when a file is deleted from a media directory

Specified by:
fileDeleted in interface IStore
Parameters:
dir - The media directory
file - The file
Throws:
StoreException - Thrown if their is a problem

getEpisode

public IEpisode getEpisode(MediaDirectory dir,
                           java.io.File file)
                    throws StoreException
This is used to get a episode from a store via it's file name. If it can't be found, then this will return null.

Specified by:
getEpisode in interface IStore
Parameters:
dir - The media directory
file - The media file
Returns:
The episode or null if it can't be found
Throws:
StoreException - Thrown if their are any problems

getFilm

public IFilm getFilm(MediaDirectory dir,
                     java.io.File file)
              throws StoreException
This is used to get a film from a store via it's file name. If it can't be found, then this will return null.

Specified by:
getFilm in interface IStore
Parameters:
dir - The media directory
file - The media file
Returns:
The film or null if it can't be found
Throws:
StoreException - Thrown if their are any problems

init

public void init(Controller controller,
                 java.io.File nativeDir)
          throws StoreException
Called to initialise the stores and check all their resources can be found. This is called before performing any actions.

Specified by:
init in interface IStore
Parameters:
controller - The media controller
nativeDir - The native folder been used or configured. Null if can't be found
Throws:
StoreException - Thrown if their are any problems

listEpisodes

public java.util.List<IEpisode> listEpisodes(MediaDirConfig dirConfig,
                                             IProgressMonitor monitor)
This is used to list all the episodes within the store if the store supports the operation. It this store can't list episodes, then it will return null

Specified by:
listEpisodes in interface IStore
Parameters:
dirConfig - The media directory configuration
monitor - The progress monitor
Returns:
Null or a list of episodes in the store

listFilms

public java.util.List<IFilm> listFilms(MediaDirConfig dirConfig,
                                       IProgressMonitor monitor)
This is used to list all the films within the store if the store supports the operation. It this store can't list films, then it will return null

Specified by:
listFilms in interface IStore
Parameters:
dirConfig - The media directory configuration
monitor - The progress monitor
Returns:
Null or a list of films in the store

upgrade

public void upgrade(MediaDirectory mediaDirectory)
This is called to check if a upgrade is needed and perform the upgrade if required

Specified by:
upgrade in interface IStore
Parameters:
mediaDirectory - The media directory been upgraded

fileUpdated

public void fileUpdated(MediaDirectory mediaDirectory,
                        java.io.File file)
                 throws StoreException
This is called when a file is updated within a media directory. This is typically called during the upgrade process if the meta data in the file has changed.

Specified by:
fileUpdated in interface IStore
Parameters:
mediaDirectory - The media directory the file belongs to
file - The media file
Throws:
StoreException - Thrown if their are any problems