org.nuiton.topia.replication
Class TopiaReplicationModelBuilder

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

public class TopiaReplicationModelBuilder
extends Object

Builder of ReplicationModel.

Since:
2.4.3
Author:
tchemit

Field Summary
protected  TopiaReplicationOperationProvider operationProvider
          Provider of TopiaReplicationOperation.
 
Constructor Summary
TopiaReplicationModelBuilder()
           
 
Method Summary
 void addAfterOperation(ReplicationModel model, TopiaEntityEnum type, Class<? extends TopiaReplicationOperation> operationClass, Object... parameters)
          Ajouter une nouvelle operation post-replication, sur un type de donnee.
 void addBeforeOperation(ReplicationModel model, TopiaEntityEnum type, Class<? extends TopiaReplicationOperation> operationClass, Object... parameters)
          Ajouter une nouvelle operation pre-replication, sur un type de donnee.
 ReplicationModel createModel(TopiaContext context, TopiaEntityEnum[] contracts, boolean computeOrder, String... topiaIds)
          Instantie un nouveau modèle de réplication pour les entités données par leur ids.
 ReplicationModel createModelForAll(TopiaEntityEnum[] contracts)
          Instantie un nouveau modèle de réplication pour toutes les entitées.
 ReplicationModel createModelWithComputedOrder(TopiaEntityEnum[] contracts, String... topiaIds)
          Deprecated. since 2.4.3, prefer use method createModel(TopiaContext, TopiaEntityEnum[], boolean, String...)
 void createOperation(ReplicationModel model, TopiaEntityEnum type, ReplicationOperationPhase phase, Class<? extends TopiaReplicationOperation> operationClass, Object... parameters)
           
protected  Set<Class<? extends TopiaEntity>> detectTypes(TopiaContext context, TopiaEntityEnum[] contracts, String... ids)
           
 TopiaReplicationOperationProvider getOperationProvider()
           
 ReplicationModel initModel(ReplicationModel model, boolean computeOrder)
           
 ReplicationModel prepare(TopiaContext context, TopiaEntityEnum[] contracts, boolean computeOrder, String... topiaIds)
          Prepare le modele de replication pour les entites données dans topiaIds et de leur couverture.
 ReplicationModel prepareForAll(TopiaEntityEnum[] contracts)
          Prepare le modele de replication pour toutes les entites des types donnes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

operationProvider

protected TopiaReplicationOperationProvider operationProvider
Provider of TopiaReplicationOperation.

Constructor Detail

TopiaReplicationModelBuilder

public TopiaReplicationModelBuilder()
Method Detail

getOperationProvider

public TopiaReplicationOperationProvider getOperationProvider()

prepare

public ReplicationModel prepare(TopiaContext 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(TopiaContext 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

createModelWithComputedOrder

@Deprecated
public ReplicationModel createModelWithComputedOrder(TopiaEntityEnum[] contracts,
                                                                String... topiaIds)
                                              throws TopiaException
Deprecated. since 2.4.3, prefer use method createModel(TopiaContext, TopiaEntityEnum[], boolean, String...)

Instantie un nouveau modèle de réplication en respectant l'ordre induit par les contracts.

Parameters:
contracts - les types d'entités
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(TopiaContext context,
                                                        TopiaEntityEnum[] contracts,
                                                        String... ids)
                                                 throws TopiaException
Throws:
TopiaException


Copyright © 2004-2011 CodeLutin. All Rights Reserved.