Class TopiaReplicationModelBuilder

java.lang.Object
org.nuiton.topia.replication.TopiaReplicationModelBuilder

public class TopiaReplicationModelBuilder extends Object
Builder of ReplicationModel.
Since:
2.4.3
Author:
Tony Chemit - chemit@codelutin.com
  • Field Details

  • Constructor Details

    • TopiaReplicationModelBuilder

      public TopiaReplicationModelBuilder()
  • Method Details

    • getOperationProvider

      public TopiaReplicationOperationProvider getOperationProvider()
    • prepare

      public ReplicationModel prepare(TopiaApplicationContext context, TopiaEntityEnum[] contracts, boolean computeOrder, String... topiaIds) throws TopiaException
      Prepare le modele de replication pour les entites données dans topiaIds et de leur couverture. Le paramètre computeOrder détermine si on doit calculer l'ordre de replication des données (valeur à true), sinon (valeur à false) on utilise l'ordre induit par le paramètre contracts.
      Parameters:
      context - le context de la base source (peut être utilisé pour calculer l'ordre)
      contracts - les contrats des types a repliquer
      computeOrder - drapeau positionné à true si on doit calculer l'ordre de réplication, false si on utilise l'ordre induit par le paramètre contracts.
      topiaIds - les ids des entités à répliquer
      Returns:
      le modele pour la replication
      Throws:
      TopiaException - pour toute erreur rencontree
    • prepareForAll

      public ReplicationModel prepareForAll(TopiaEntityEnum[] contracts) throws TopiaException
      Prepare le modele de replication pour toutes les entites des types donnes. La méthode calcule l'ordre de replication des données. Actuellement, on n'est pas capable de calculer l'ordre si le graphe des entités contient des cycles. TODO : faire en sorte de pouvoir gérer les cycles.
      Parameters:
      contracts - les contrats des types a repliquer
      Returns:
      le modele pour la replication
      Throws:
      TopiaException - pour toute erreur rencontree
    • createOperation

      public void createOperation(ReplicationModel model, TopiaEntityEnum type, ReplicationOperationPhase phase, Class<? extends TopiaReplicationOperation> operationClass, Object... parameters)
    • addBeforeOperation

      public void addBeforeOperation(ReplicationModel model, TopiaEntityEnum type, Class<? extends TopiaReplicationOperation> operationClass, Object... parameters)
      Ajouter une nouvelle operation pre-replication, sur un type de donnee.
      Parameters:
      model - le modele de replication
      type - le type du noeud de replication
      operationClass - l'implantation de l'operation
      parameters - les parametres supplementaires pour l'operation
    • addAfterOperation

      public void addAfterOperation(ReplicationModel model, TopiaEntityEnum type, Class<? extends TopiaReplicationOperation> operationClass, Object... parameters)
      Ajouter une nouvelle operation post-replication, sur un type de donnee.
      Parameters:
      model - le modele de replication
      type - le type du noeud de replication
      operationClass - l'implantation de l'operation
      parameters - les parametres supplementaires pour l'operation
    • createModel

      public ReplicationModel createModel(TopiaApplicationContext context, TopiaEntityEnum[] contracts, boolean computeOrder, String... topiaIds) throws TopiaException
      Instantie un nouveau modèle de réplication pour les entités données par leur ids. L'ordre de réplication dépend du paramètre computeOrder. Si celui-ci vaut true, on calcule l'ordre de réplication, sinon on utilise l'ordre induit par les contracts.
      Parameters:
      context - le context Topia pour récupérer certainnes informations de la base source si nécessaire.
      contracts - les types d'entités
      computeOrder - drapeau pour calculer l'ordre de réplication (valeur à true), sinon on utilise l'ordre induit par les contracts.
      topiaIds - les ids à dupliquer
      Returns:
      le modèle crée mais non initialisé.
      Throws:
      TopiaException - pour toute erreur lors de la création du modèle
    • createModelForAll

      public ReplicationModel createModelForAll(TopiaEntityEnum[] contracts) throws TopiaException
      Instantie un nouveau modèle de réplication pour toutes les entitées. Ici, l'ordre est toujours calculé.
      Parameters:
      contracts - les types d'entités
      Returns:
      le modèle crée mais non initialisé.
      Throws:
      TopiaException - pour toute erreur lors de la création du modèle
    • initModel

      public ReplicationModel initModel(ReplicationModel model, boolean computeOrder) throws TopiaException
      Throws:
      TopiaException
    • detectTypes

      protected Set<Class<? extends TopiaEntity>> detectTypes(TopiaApplicationContext context, TopiaEntityEnum[] contracts, String... ids) throws TopiaException
      Throws:
      TopiaException