Class VersionStorage

java.lang.Object
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$ Last update: $Date$ by : $Author$
Author:
poussin
  • Field Details

    • root

      protected File root
      VCS root directory.
    • file

      protected File file
      Versionned file to manage in VCS.
  • Constructor Details

    • 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 Details

    • registerWatcher

      protected static void registerWatcher(Collection<StorageChangeListener> storageListeners, File... directories)
    • 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.