org.stanwood.media.store.mp4.itunes
Class RemoteMacOSXItunesStore

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

public class RemoteMacOSXItunesStore
extends java.lang.Object
implements IStore

This store is used to inform itunes of file changes in a media directory. It does this by talking to a remote server running on the same machine as iTunes. The server details can be found at "http://code.google.com/p/itunes-remote-control-server/".

The optional parameter file-separator can be used when media manager is running on a different operating system to the remote client. So for example if media manager is on a linux OS and the remote server is on a windows OS, then the file seperator should be set to \. See the page "http://en.wikipedia.org/wiki/Regular_expression" for more information on regular expression syntax.

The search and replace optional parameters can be used to the media directory is access at a different location on the iTunes server machine to the machine that media manager is running on.

This store has following parameters:


Constructor Summary
RemoteMacOSXItunesStore()
           
 
Method Summary
 void cacheEpisode(java.io.File rootMediaDir, java.io.File episodeFile, IEpisode episode)
          This is used to write a episode or special too the store
 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)
          This is used to write a season too the store.
 void cacheShow(java.io.File rootMediaDir, java.io.File episodeFile, IShow show)
          This is used to write a show too the 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)
          This gets a episode from the 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)
          This will get a film from the 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.
 ISeason getSeason(java.io.File rootMediaDir, java.io.File episodeFile, IShow show, int seasonNum)
          This will get a season from the store.
 IShow getShow(java.io.File rootMediaDir, java.io.File episodeFile, java.lang.String showId)
          This will get a show from the store.
 IEpisode getSpecial(java.io.File rootMediaDir, java.io.File episodeFile, ISeason season, int specialNumber)
          This gets a special episode from the store.
protected  void init()
           
 void init(Controller controller, java.io.File nativeDir)
          Called to initialise the stores and check all their resources can be found.
 java.util.Collection<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.Collection<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 is used when a file that holds a episode or film has been renamed
 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.
protected  boolean shouldUpdateItunes()
           
protected  void updateItunes()
           
 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

RemoteMacOSXItunesStore

public RemoteMacOSXItunesStore()
Method Detail

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.

This will connect and login to the server

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

init

protected void init()
             throws StoreException
Throws:
StoreException

cacheEpisode

public void cacheEpisode(java.io.File rootMediaDir,
                         java.io.File episodeFile,
                         IEpisode episode)
                  throws StoreException
This is used to write a episode or special too the store

Specified by:
cacheEpisode in interface IStore
Parameters:
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.
episodeFile - the file witch the episode is stored in
episode - The episode or special too write
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:
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.
filmFile - The file which the film is stored in
film - The film to write
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)
                 throws StoreException
This is used when a file that holds a episode or film has been renamed

Specified by:
renamedFile in interface IStore
Parameters:
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.
oldFile - The old file
newFile - The new file
Throws:
StoreException - Thrown if their is a problem renaming files

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

performedActions

public void performedActions(MediaDirectory dir)
                      throws StoreException
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. This will disconnect from the server when done

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

updateItunes

protected void updateItunes()
                     throws StoreException
Throws:
StoreException

setParameter

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

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
Throws:
StoreException - Throw if the key is not supported by this store.

getParameter

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

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
Throws:
StoreException - Throw if the key is not supported by this store.

cacheSeason

public void cacheSeason(java.io.File rootMediaDir,
                        java.io.File episodeFile,
                        ISeason season)
                 throws StoreException
This is used to write a season too the store.

Specified by:
cacheSeason in interface IStore
Parameters:
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.
episodeFile - The file the episode is stored in
season - The season too write
Throws:
StoreException - Thrown if their is a problem with the store

cacheShow

public void cacheShow(java.io.File rootMediaDir,
                      java.io.File episodeFile,
                      IShow show)
               throws StoreException
This is used to write a show too the store.

Specified by:
cacheShow in interface IStore
Parameters:
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.
episodeFile - The file the episode is stored in
show - The show too write
Throws:
StoreException - Thrown if their is a problem with the store

getEpisode

public IEpisode getEpisode(java.io.File rootMediaDir,
                           java.io.File episodeFile,
                           ISeason season,
                           int episodeNum)
                    throws StoreException,
                           java.net.MalformedURLException,
                           java.io.IOException
This gets a episode from the store. If it can't be found, then it will return null;

Specified by:
getEpisode in interface IStore
Parameters:
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.
episodeFile - the file which the episode is stored in
season - The season the episode belongs too
episodeNum - The number of the episode too get
Returns:
The episode, or null if it can't be found
Throws:
StoreException - Thrown if their is a problem with the store
java.net.MalformedURLException - Thrown if their is a problem creating URL's
java.io.IOException - Thrown if their is a I/O related problem.

getSeason

public ISeason getSeason(java.io.File rootMediaDir,
                         java.io.File episodeFile,
                         IShow show,
                         int seasonNum)
                  throws StoreException,
                         java.io.IOException
This will get a season from the store. If the season can't be found, then it will return null.

Specified by:
getSeason in interface IStore
Parameters:
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.
episodeFile - the file which the episode is stored in
show - The show the season belongs too
seasonNum - The number of the season that is to be fetched
Returns:
The season if it can be found, otherwise null.
Throws:
StoreException - Thrown if their is a problem with the store
java.io.IOException - Thrown if their is a I/O related problem.

getShow

public IShow getShow(java.io.File rootMediaDir,
                     java.io.File episodeFile,
                     java.lang.String showId)
              throws StoreException,
                     java.net.MalformedURLException,
                     java.io.IOException
This will get a show from the store. If the season can't be found, then it will return null.

Specified by:
getShow in interface IStore
Parameters:
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.
episodeFile - the file which the episode is stored in
showId - The id of the show to get.
Returns:
The show if it can be found, otherwise null.
Throws:
StoreException - Thrown if their is a problem with the store
java.net.MalformedURLException - Thrown if their is a problem creating URL's
java.io.IOException - Thrown if their is a I/O related problem.

getSpecial

public IEpisode getSpecial(java.io.File rootMediaDir,
                           java.io.File episodeFile,
                           ISeason season,
                           int specialNumber)
                    throws java.net.MalformedURLException,
                           java.io.IOException,
                           StoreException
This gets a special episode from the store. If it can't be found, then it will return null;

Specified by:
getSpecial in interface IStore
Parameters:
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.
episodeFile - the file which the episode is stored in
season - The season the special episode belongs too
specialNumber - The number of the special episode too get
Returns:
The special episode, or null if it can't be found
Throws:
java.net.MalformedURLException - Thrown if their is a problem creating URL's
java.io.IOException - Thrown if their is a I/O related problem.
StoreException - Thrown if their is a problem with the store

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

getFilm

public IFilm getFilm(java.io.File rootMediaDir,
                     java.io.File filmFile,
                     java.lang.String filmId)
              throws StoreException,
                     java.net.MalformedURLException,
                     java.io.IOException
This will get a film from the store. If the film can't be found, then it will return null.

Specified by:
getFilm in interface IStore
Parameters:
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.
filmFile - The file the film is located in.
filmId - The id of the film
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.

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

listEpisodes

public java.util.Collection<IEpisode> listEpisodes(MediaDirConfig dirConfig,
                                                   IProgressMonitor monitor)
                                            throws StoreException
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
Throws:
StoreException - Thrown if their are any problems

listFilms

public java.util.Collection<IFilm> listFilms(MediaDirConfig dirConfig,
                                             IProgressMonitor monitor)
                                      throws StoreException
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
Throws:
StoreException - Thrown if their are any problems

upgrade

public void upgrade(MediaDirectory mediaDirectory)
             throws StoreException
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
Throws:
StoreException - Thrown if thier are any problems

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

shouldUpdateItunes

protected boolean shouldUpdateItunes()