fr.ifremer.isisfish.datastore
Class VersionStorage

java.lang.Object
  extended by fr.ifremer.isisfish.datastore.VersionStorage
Direct Known Subclasses:
CodeSourceStorage, DataStorage

public abstract class VersionStorage
extends Object

Classe permettant de géré l'interaction avec le VCS.

Version:
$Revision: 3615 $ Last update: $Date: 2012-02-24 17:46:43 +0100 (Fri, 24 Feb 2012) $ by : $Author: echatellier $
Author:
poussin

Field Summary
protected static org.nuiton.util.ListenerSet<StorageChangeListener> changeListeners
          Listener set.
protected  File file
          Versionned file to manage in VCS.
protected  File root
          VCS root directory.
 
Constructor Summary
protected VersionStorage(File root, File file)
          Par exemple si on a /home/poussin/isis-database comme root il faut que file soit un fichier ou un sous fichiers dans root
 
Method Summary
 void add(String msg)
          Permet d'ajouter ce storage dans le VCSNone.
static void addStorageChangeListener(StorageChangeListener listener)
          Add listener to be notified on change to storage.
static void checkout(File destDir, String module)
          Permet de ramener tout un répertoire du VCS.
 void commit(String msg)
          Permet d'envoyer des modifications faite en local sur le VCS.
 void delete(boolean vcsDelete)
          Permet de supprimer un fichier ou répertoire versionné ou non.
 String diff()
          Return diff between current file content and VCS file content.
protected static void fireDataChanged(StorageChangeEvent event)
          Fire a change event to all registred listeners.
protected static File getCommunityDatabaseDirectory()
          Return community database directory.
protected static VCS getCommunityVCS()
          Get community VCS.
protected static File getContextDatabaseDirectory()
          Return context root directory to use for all data files depending on context (simulation/no simulation).
protected  VCS getCurrentVCS()
          Get VCS instance for storage file.
protected  VCS getCurrentVCS(File file)
          Get VCS instance for given file.
 File getFile()
          Get file.
protected  List<File> getFiles(boolean withParent)
          Donne la liste de tous les fichiers à gérer par le VCS.
protected  List<File> getFiles(File current, List<File> result)
          Donne la liste de tous les fichiers que le VCS doit gérer.
static List<String> getRemoteStorageNames(File directory)
          Retourne la liste des noms de tous les storages disponibles sur le serveur VCSNone
 File getRoot()
          Get VCS root directory.
static List<String> getStorageNames(File directory)
          Retourne la liste des noms de toutes les storages disponible en local
protected static VCS getVCS()
          Get VCS.
 boolean isOnRemote()
          Indique s'il a deja ete ajouté au VCS.
 boolean isUpToDate()
           
protected  boolean isVersionnableFile(File file)
          Permet de savoir si un fichier doit etre géré par le vcs ou non.
protected abstract  void prepare()
          Permet de demander la preparation des fichiers pour etre envoyé vers le VCS.
static void removeStorageChangeListener(StorageChangeListener listener)
          Remove listener for storage change notification.
 void update()
          Permet de mettre a jour le fichier local en fonction de ce qu'il y a sur le VCS
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

changeListeners

protected static org.nuiton.util.ListenerSet<StorageChangeListener> changeListeners
Listener set. Manage single reference and weak reference. TODO echatellier 20120224 la collection est static donc un listener sur les scripts recevra trop d'evenement car il recevra aussi les evenements des regions...


root

protected File root
VCS root directory.


file

protected File file
Versionned file to manage in VCS.

Constructor Detail

VersionStorage

protected VersionStorage(File root,
                         File file)
Par exemple si on a /home/poussin/isis-database comme root il faut que file soit un fichier ou un sous fichiers dans root

Parameters:
root - le repertoire racine de mise en VCS (HOME VCS)
file - le fichier a gérer.
Method Detail

getContextDatabaseDirectory

protected static File getContextDatabaseDirectory()
Return context root directory to use for all data files depending on context (simulation/no simulation). In simulation context, must look for files in simulation directory instead of isis database.


getCommunityDatabaseDirectory

protected static File getCommunityDatabaseDirectory()
Return community database directory.

Returns:
community database directory

getCurrentVCS

protected VCS getCurrentVCS()
Get VCS instance for storage file.

Returns:
vcs instance

getCurrentVCS

protected VCS getCurrentVCS(File file)
Get VCS instance for given file.

Parameters:
file - file to get VCS
Returns:

getVCS

protected static VCS getVCS()
Get VCS.

Returns:
VCS

getCommunityVCS

protected static VCS getCommunityVCS()
Get community VCS.

Returns:
community VCS

prepare

protected abstract void prepare()
Permet de demander la preparation des fichiers pour etre envoyé vers le VCS.


getRoot

public File getRoot()
Get VCS root directory.

Returns:
the root.

getFile

public File getFile()
Get file.

Returns:
the file.

isOnRemote

public boolean isOnRemote()
                   throws VCSException
Indique s'il a deja ete ajouté au VCS. Si file est un repertoire (ex pour Region) alors vrai meme si tous les fichiers du repertoire ne sont pas sur le VCSNone

Returns:
true si deja dans le VCS
Throws:
VCSException

isVersionnableFile

protected boolean isVersionnableFile(File file)
Permet de savoir si un fichier doit etre géré par le vcs ou non. L'implantation par defaut exclus les répertoires VCS, il faut toujours appeler le super si on surcharge la methode.

Parameters:
file - le fichier a tester
Returns:
true si le fichier est versionné

getFiles

protected List<File> getFiles(File current,
                              List<File> result)
Donne la liste de tous les fichiers que le VCS doit gérer. Par defaut parcours tous les repertoires et ajouter tous les fichiers et repertoire trouvé. Il est possible d'exclure des fichiers et/ou repertoire en surchargeant isVersionnableFile(File)

Parameters:
current - le fichier
result - la liste des fichiers à traiter
Returns:
La liste des fichiers a géré par le CVS pour un add, remove update

getFiles

protected List<File> getFiles(boolean withParent)
Donne la liste de tous les fichiers à gérer par le VCS. Ceci inclu la liste des répertoires pour aller de ce storage jusqu'a la racine VCSNone si withParent est vrai

Parameters:
withParent - si vrai inclu les parents
Returns:
la liste des fichiers trouvés

add

public void add(String msg)
         throws VCSException
Permet d'ajouter ce storage dans le VCSNone. Cela prend effet immediatement (un commit est fait).

Parameters:
msg - le message indiquant le but du fichier
Throws:
VCSException - si pb pendant l'op

delete

public void delete(boolean vcsDelete)
            throws StorageException
Permet de supprimer un fichier ou répertoire versionné ou non.

Parameters:
vcsDelete - si vrai alors le fichier sera aussi supprimé sur le vcs si elle existait. Cela prend effet immediatement (un commit est fait)
Throws:
StorageException - if delete operation fail

commit

public void commit(String msg)
            throws VCSException
Permet d'envoyer des modifications faite en local sur le VCS.

Parameters:
msg - le message indiquant le type des modifications
Throws:
VCSException - si pb pendant l'op

update

public void update()
            throws VCSException
Permet de mettre a jour le fichier local en fonction de ce qu'il y a sur le VCS

Throws:
VCSException - si pb pendant l'op

isUpToDate

public boolean isUpToDate()
                   throws VCSException
Throws:
VCSException

diff

public String diff()
            throws VCSException,
                   IOException
Return diff between current file content and VCS file content.

Returns:
diff as string
Throws:
VCSException
IOException

checkout

public static void checkout(File destDir,
                            String module)
                     throws VCSException
Permet de ramener tout un répertoire du VCS. Utile seulement pour le premier lancement pour scipts et exports.

Parameters:
destDir - le repertoire parent
module - le repertoire qui peut etre scripts ou exports
Throws:
VCSException - si pb pendant l'opération

getStorageNames

public static List<String> getStorageNames(File directory)
Retourne la liste des noms de toutes les storages disponible en local

Parameters:
directory - le répertoire dans lequel vie l'ensemble des storage
Returns:
la liste des noms de toutes les storages disponible en local

getRemoteStorageNames

public static List<String> getRemoteStorageNames(File directory)
Retourne la liste des noms de tous les storages disponibles sur le serveur VCSNone

Parameters:
directory - le répertoire sur le VCSNone ou doivent se trouver les storages (regions, simulations)
Returns:
la liste des noms de tous les storages disponibles sur le serveur VCSNone. Si le serveur n'est pas disponible la liste retournée est vide.

fireDataChanged

protected static void fireDataChanged(StorageChangeEvent event)
Fire a change event to all registred listeners. For example, to notify, that a JavaSourceStorage file has been added...

Parameters:
event - event to fire

addStorageChangeListener

public static void addStorageChangeListener(StorageChangeListener listener)
Add listener to be notified on change to storage.

Parameters:
listener - listener to add

removeStorageChangeListener

public static void removeStorageChangeListener(StorageChangeListener listener)
Remove listener for storage change notification.

Parameters:
listener - listener to remove


Copyright © 1999-2012 CodeLutin. All Rights Reserved.