Author: tchemit Date: 2010-07-26 16:07:15 +0200 (Mon, 26 Jul 2010) New Revision: 2089 Url: http://nuiton.org/repositories/revision/topia/2089 Log: reformat code of replication service + prepare to solve revert operations--Cette ligne, et les suivantes ci-dessous, seront ignor?\195?\169es-- M topia-service-replication/src/main/java/org/nuiton/topia/replication/ReplicationEngine.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationNode.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationModel.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationOperationPhase.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/model/Link.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/AttachAssociation.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachAssociation.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/Duplicate.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachDependency.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/LoadLink.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationImplementor.java M topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationOperation.java Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/ReplicationEngine.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationImplementor.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationOperation.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/Link.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationModel.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationNode.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationOperationPhase.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/AttachAssociation.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachAssociation.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachDependency.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/Duplicate.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/LoadLink.java Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/ReplicationEngine.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/ReplicationEngine.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/ReplicationEngine.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -41,7 +41,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.ServiceLoader; @@ -173,7 +172,10 @@ TopiaContextImplementor srcCtxt = null; Map<Class<? extends TopiaEntity>, List<String>> data = null; - Set<ReplicationNode> treated = new HashSet<ReplicationNode>(); + + // keep the list of treated nodes (to roolback them if something + // is wrong). + List<ReplicationNode> treated = new ArrayList<ReplicationNode>(); try { srcCtxt = (TopiaContextImplementor) context.beginTransaction(); @@ -184,9 +186,22 @@ model.adjustOperations(data); + //FIXME tchemit 2077-07-26, should use next line when + // http://nuiton.org/issues/show/779 is closed + boolean needTransaction = true; +// boolean needTransaction = ((TopiaContextImplementor) dstCtxt).getRootContext().equals(dstCtxt); + + TopiaContext tx; + for (ReplicationNode node : model.getOrder()) { + srcCtxt = (TopiaContextImplementor) context.beginTransaction(); - TopiaContext tx = dstCtxt.beginTransaction(); + + if (needTransaction) { + tx = dstCtxt.beginTransaction(); + } else { + tx = dstCtxt; + } try { doReplicateNode(node, srcCtxt, tx, data, treated); } catch (Exception e) { @@ -194,7 +209,12 @@ throw e; } finally { srcCtxt.closeContext(); - tx.closeContext(); + if (needTransaction) { + // on doit fermer la transaction car on l'a ouverte dans + // cette méthode, sinon c'est de la responsabilite du + // code appellant + tx.closeContext(); + } } } // } catch (Exception e) { @@ -221,14 +241,16 @@ //-------------------------------------------------------------------------- @Override - public ReplicationModel createModel(TopiaEntityEnum[] contracts, String... topiaIds) throws TopiaException { + public ReplicationModel createModel(TopiaEntityEnum[] contracts, + String... topiaIds) throws TopiaException { Set<Class<? extends TopiaEntity>> detectTypes = detectTypes(contracts, topiaIds); ReplicationModel model = new ReplicationModel(contracts, detectTypes, topiaIds); return model; } @Override - public ReplicationModel createModelWithComputedOrder(TopiaEntityEnum[] contracts, String... topiaIds) throws TopiaException { + public ReplicationModel createModelWithComputedOrder(TopiaEntityEnum[] contracts, + String... topiaIds) throws TopiaException { ReplicationModel model = new ReplicationModel(contracts, false, topiaIds); return model; } @@ -240,7 +262,8 @@ } @Override - public ReplicationModel initModel(ReplicationModel model, boolean computeOrder) throws TopiaException { + public ReplicationModel initModel(ReplicationModel model, + boolean computeOrder) throws TopiaException { checkNotNull("initModel", "model", model); model.detectAssociations(); @@ -273,7 +296,11 @@ } @Override - public void createOperation(ReplicationModel model, TopiaEntityEnum type, ReplicationOperationPhase phase, Class<? extends TopiaReplicationOperation> operationClass, Object... parameters) { + public void createOperation(ReplicationModel model, + TopiaEntityEnum type, + ReplicationOperationPhase phase, + Class<? extends TopiaReplicationOperation> operationClass, + Object... parameters) { checkNotNull("createOperation", "model", model); checkNotNull("createOperation", "type", type); @@ -335,12 +362,12 @@ } @Override - public <E extends TopiaEntity> void doReplicateNode( + public void doReplicateNode( ReplicationNode node, TopiaContext srcCtxt, TopiaContext dstCtxt, Map<Class<? extends TopiaEntity>, List<String>> data, - Set<ReplicationNode> treated) throws Exception { + List<ReplicationNode> treated) throws Exception { // on trie toujours les operations a realiser selon leur phase (avant ou apres la duplication) node.sortOperations(); @@ -369,9 +396,15 @@ log.info("start " + operationDef); - TopiaReplicationOperation operation = getOperation(operationDef.getOperationClass()); + TopiaReplicationOperation operation = + getOperation(operationDef.getOperationClass()); - operation.run(operationDef, (TopiaContextImplementor) srcCtxt, (TopiaContextImplementor) dstCtxt, nodeEntities, data); + operation.run(operationDef, + (TopiaContextImplementor) srcCtxt, + (TopiaContextImplementor) dstCtxt, + nodeEntities, + data + ); } // on rollback le context source (car on a peut-etre modifie @@ -445,7 +478,7 @@ } Class<?> foundType = value.getClass(); - if (!(requiredType.isAssignableFrom(foundType))) { + if (!requiredType.isAssignableFrom(foundType)) { throw new IllegalArgumentException("le paremetre de position " + index + " requiere un parametre de type " + requiredType + " mais est de type " + foundType); } } Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationImplementor.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationImplementor.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationImplementor.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -36,22 +36,23 @@ */ package org.nuiton.topia.replication; -import org.nuiton.topia.replication.model.ReplicationModel; -import org.nuiton.topia.replication.model.ReplicationNode; -import java.util.List; -import java.util.Map; -import java.util.Set; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityEnum; +import org.nuiton.topia.replication.model.ReplicationModel; +import org.nuiton.topia.replication.model.ReplicationNode; import org.nuiton.topia.replication.model.ReplicationOperationPhase; +import java.util.List; +import java.util.Map; +import java.util.Set; + /** * Class used internaly in framework, when you want implement new replication * engin, you must used this interface - * + * * @author chemit * @since 2.2.0 */ @@ -61,9 +62,8 @@ * Creation d'un modele de replication non initialise. * * @param contracts le contrats d'entites autorises - * @param topiaIds les ids des entites a repliquer + * @param topiaIds les ids des entites a repliquer * @return le modele instancie mais non initialise - * * @throws TopiaException pour toute erreur */ ReplicationModel createModel(TopiaEntityEnum[] contracts, String... topiaIds) throws TopiaException; @@ -73,7 +73,6 @@ * * @param contracts le contrats d'entites autorises * @return le modele instancie mais non initialise - * * @throws TopiaException pour toute erreur */ ReplicationModel createModelForAll(TopiaEntityEnum[] contracts) throws TopiaException; @@ -83,58 +82,56 @@ * (celui des contrats donnés). * * @param contracts le contrats d'entites autorises - * @param topiaIds les ids des entities a repliquer + * @param topiaIds les ids des entities a repliquer * @return le modele instancie mais non initialise - * * @throws TopiaException pour toute erreur */ ReplicationModel createModelWithComputedOrder(TopiaEntityEnum[] contracts, String... topiaIds) throws TopiaException; /** * Initialisation du modele de replication. - * + * <p/> * Cette methode realise les calculs sur le modele pour obtenir l'ordre * de replication des entites {@link ReplicationModel#getOrder()} * et les operations a realiser lors de la replication sur chaque noeud * de replication {@link ReplicationNode#getOperations()}. * - * @param model le modele a initialise + * @param model le modele a initialise * @param computeOrder drapeau pour effectuer le calcul d'ordre des - * entites a repliquer, sinon on utilise l'ordre de creation des - * noeuds dans le model. + * entites a repliquer, sinon on utilise l'ordre de creation des + * noeuds dans le model. * @return le modele initialise - * - * @throws TopiaException + * @throws TopiaException pour toute erreur */ ReplicationModel initModel(ReplicationModel model, boolean computeOrder) throws TopiaException; Set<Class<? extends TopiaEntity>> detectTypes(TopiaEntityEnum[] contracts, String... ids) throws TopiaException; /** - * + * Récupération d'une opération de réplication à partir de son type. + * * @param operationClass le type de l'opération * @return l'opération du type donne */ TopiaReplicationOperation getOperation(Class<? extends TopiaReplicationOperation> operationClass); /** - * - * @param model le modele en cours - * @param type le contrat de l'entite concerne - * @param phase la phase de l'operation + * @param model le modele en cours + * @param type le contrat de l'entite concerne + * @param phase la phase de l'operation * @param operationClass le type de l'operation - * @param parameters les parametres dynamiques de l'operation + * @param parameters les parametres dynamiques de l'operation */ void createOperation(ReplicationModel model, - TopiaEntityEnum type, - ReplicationOperationPhase phase, - Class<? extends TopiaReplicationOperation> operationClass, - Object... parameters); + TopiaEntityEnum type, + ReplicationOperationPhase phase, + Class<? extends TopiaReplicationOperation> operationClass, + Object... parameters); /** * Recupere les ids des entites a repliquer. * - * @param model le modele utilise + * @param model le modele utilise * @param srcCtxt le context de la base source * @return les ids des donnes a repliquer. * @throws TopiaException pour toute erreur de recuperation d'ids en base @@ -144,19 +141,17 @@ TopiaContextImplementor srcCtxt) throws TopiaException; /** - * - * @param <E> le type de l'entite a repliquer - * @param node le noeud de replication + * @param node le noeud de replication * @param srcCtxt la base source * @param dstCtxt la base destination - * @param data le dictionnaire des ids a repliquer + * @param data le dictionnaire des ids a repliquer * @param treated l'ensemble des noeuds deja repliques * @throws Exception pour tout erreur */ - <E extends TopiaEntity> void doReplicateNode( + void doReplicateNode( ReplicationNode node, TopiaContext srcCtxt, TopiaContext dstCtxt, Map<Class<? extends TopiaEntity>, List<String>> data, - Set<ReplicationNode> treated) throws Exception; + List<ReplicationNode> treated) throws Exception; } Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationOperation.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationOperation.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/TopiaReplicationOperation.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -25,33 +25,34 @@ package org.nuiton.topia.replication; -import java.util.List; -import java.util.Map; -import java.util.ServiceLoader; - import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaEntityEnum; import org.nuiton.topia.replication.model.ReplicationModel; import org.nuiton.topia.replication.model.ReplicationNode; import org.nuiton.topia.replication.model.ReplicationOperationDef; import org.nuiton.topia.replication.model.ReplicationOperationPhase; +import java.util.List; +import java.util.Map; +import java.util.ServiceLoader; + /** * Le contrat d'une operation a effectuer lors de la replication. - * + * <p/> * Le module propose des operations de base dans le paquetage * <code>org.nuiton.topia.replication.operation</code>. * <p/> - * + * <p/> * Pour definir une nouvelle implantation d'operation, il faut l'enregister * en tant que service (au sens de la classe {@link ServiceLoader}, * c'est à dire ajouter dans un fichier (du class-path) * <code>META-INF/services/org.nuiton.topia.replication.TopiaReplicationOperation</code> - * + * <p/> * une ligne avec le nom qualifie de votre implantation. + * <p/> + * Lors du chargement du service, on detecte toutes les operations disponibles. * - * Lors du chargement du service, on detecte toutes les operations disponibles. - * * @author chemit * @since 2.2.0 */ @@ -60,37 +61,36 @@ /** * Creer et enregister une operation utilisateur apres la creation du * modele via la methode - * + * <p/> * {@link TopiaReplicationService#prepare(TopiaEntityEnum[], String...)}. * - * @param model le modele de replication - * @param ownerNode le noeud proprietaire de l'operation - * @param phase la phase ou positionner l'operation + * @param model le modele de replication + * @param ownerNode le noeud proprietaire de l'operation + * @param phase la phase ou positionner l'operation * @param parameters les parametres de l'operation - * * @see ReplicationModel * @see ReplicationOperationPhase */ void register(ReplicationModel model, - ReplicationNode ownerNode, - ReplicationOperationPhase phase, - Object... parameters); + ReplicationNode ownerNode, + ReplicationOperationPhase phase, + Object... parameters); /** * Execute l'operation avec le parametrage donnee. + * <p/> + * Note : le commit sur le context cible doit etre geree dans la methode. * - * Note : le commit sur le context cible doit etre geree dans la methode. - * * @param operationDef la definition de l'operation a realiser - * @param srcCtxt le context source - * @param dstCtxt le context destination - * @param entities - * @param data le dictionnaire de toutes les donnees a repliquer + * @param srcCtxt le context source + * @param dstCtxt le context destination + * @param entities la liste des + * @param data le dictionnaire de toutes les donnees a repliquer * @throws Exception pour toute erreur */ void run(ReplicationOperationDef operationDef, - TopiaContextImplementor srcCtxt, - TopiaContextImplementor dstCtxt, - List<? extends TopiaEntity> entities, - Map<Class<? extends TopiaEntity>, List<String>> data) throws Exception; + TopiaContextImplementor srcCtxt, + TopiaContextImplementor dstCtxt, + List<? extends TopiaEntity> entities, + Map<Class<? extends TopiaEntity>, List<String>> data) throws Exception; } Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/Link.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/Link.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/Link.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -37,9 +37,13 @@ public class Link { protected final ReplicationNode source; + protected final Set<ReplicationNode> requires; + protected final ReplicationNode target; + protected final String name; + protected final boolean association; public Link(ReplicationNode source, ReplicationNode target, String name, boolean association) { @@ -74,12 +78,12 @@ /** * Teste si on peut reattacher le lien en connaissant l'univers des * noeuds disponibles. - * + * <p/> * On teste si toutes les pre-requis sont disponibles. - * + * <p/> * Si oui, on peut reattacher. * - * @param universe l'univers des noeuds disponibles + * @param universe l'univers des noeuds disponibles * @param currentNode le noeud qui vient d'etre replique * @return <code>true</code> si on peut reattacher ce lien */ Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationModel.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationModel.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationModel.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -25,16 +25,6 @@ package org.nuiton.topia.replication.model; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.TopiaException; @@ -48,26 +38,34 @@ import org.nuiton.topia.replication.operation.Duplicate; import org.nuiton.topia.replication.operation.LoadLink; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + public class ReplicationModel { /** to use log facility, just put in your code: log.info(\"...\"); */ private static final Log log = LogFactory.getLog(ReplicationModel.class); - /** - * l'ensemble des contrats d'entites a repliquer - */ + + /** l'ensemble des contrats d'entites a repliquer */ final protected TopiaEntityEnum[] contracts; - /** - * les ids des entites a repliquer (non utilise en mode replicateAll) - */ + + /** les ids des entites a repliquer (non utilise en mode replicateAll) */ final protected String[] topiaIds; - /** - * le dictionnaire des noeuds a repliquer associes a leur type - */ + + /** le dictionnaire des noeuds a repliquer associes a leur type */ protected Map<Class<? extends TopiaEntity>, ReplicationNode> nodes; - /** - * la liste des noeuds a repliquer (dans l'ordre de replication) - */ + + /** la liste des noeuds a repliquer (dans l'ordre de replication) */ protected List<ReplicationNode> order; + /** * un drapeau pour savoir si on effectue une replication de toutes les donnees * des contrats. @@ -390,7 +388,7 @@ for (String name : associationProperties) { Class<?> associationPropertyType = node.getOperator().getAssociationPropertyType(name); if (!TopiaEntity.class.isAssignableFrom(associationPropertyType) || - !nodes.containsKey(associationPropertyType)) { + !nodes.containsKey(associationPropertyType)) { Link link = new Link(node, null, name, true); Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationNode.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationNode.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationNode.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -25,6 +25,13 @@ package org.nuiton.topia.replication.model; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaEntityEnum; +import org.nuiton.topia.persistence.util.EntityOperator; +import org.nuiton.topia.persistence.util.EntityOperatorStore; + import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -33,52 +40,42 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaEntityEnum; -import org.nuiton.topia.persistence.util.EntityOperator; -import org.nuiton.topia.persistence.util.EntityOperatorStore; /** * Le modele d'un noeud de replication. - * + * <p/> * Un noeud represente exactement un type d'entite a repliquer - * + * * @author chemit */ public class ReplicationNode { /** to use log facility, just put in your code: log.info(\"...\"); */ private static final Log log = LogFactory.getLog(ReplicationNode.class); + final TopiaEntityEnum contract; + final EntityOperator<? super TopiaEntity> operator; - /** - * les couples d'association a partir de ce noeud - */ + + /** les couples d'association a partir de ce noeud */ Map<String, ReplicationNode> associations; - /** - * les couples de composition a partir de ce noeud - */ + + /** les couples de composition a partir de ce noeud */ Map<String, ReplicationNode> dependencies; - /** - * l'ensemble des associations a dettacher pendant la replication - */ + + /** l'ensemble des associations a dettacher pendant la replication */ Set<String> associationsToDettach; - /** - * l'ensemble des dependences a dettacher pendant la replication - */ + + /** l'ensemble des dependences a dettacher pendant la replication */ Set<String> dependenciesToDettach; - /** - * la couverture de ce noeud - */ + + /** la couverture de ce noeud */ Set<ReplicationNode> shell; - /** - * la sequences d'operations a realiser lors de la replication de ce node - */ + + /** la sequences d'operations a realiser lors de la replication de ce node */ List<ReplicationOperationDef> operations; - public ReplicationNode(TopiaEntityEnum contract) { + public ReplicationNode(TopiaEntityEnum contract) { this.contract = contract; operator = EntityOperatorStore.getOperator(contract); associations = new HashMap<String, ReplicationNode>(); @@ -229,6 +226,7 @@ public String toString() { return contract.toString(); } + public static final Comparator<ReplicationOperationDef> OPERATION_COMPARATOR = new Comparator<ReplicationOperationDef>() { Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationOperationPhase.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationOperationPhase.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationOperationPhase.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -29,7 +29,7 @@ /** * Une enumeration pour definir quand appliquer une operation. - * + * <p/> * L'ordre induit par cette enumeration sera utiliser pour trier les operations * a realiser sur chaque noeud de replication. * @@ -37,17 +37,13 @@ */ public enum ReplicationOperationPhase { - /** - * a appliquer avant la duplicate d'un noeud - */ + /** a appliquer avant la duplicate d'un noeud */ before, /** * pour dupliquer un noeud (cette phase ne doit etre utilise que sur l'operation * de type {@link Duplicate} */ duplicate, - /** - * a appliquer apres avoir duplique le noeud - */ + /** a appliquer apres avoir duplique le noeud */ after } Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/AttachAssociation.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/AttachAssociation.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/AttachAssociation.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -93,16 +93,16 @@ log.debug("currentNode : " + operationDef.getNode() + " , association name : " + name + " reverse ? " + reverse); } - ReplicationNode ownerNode = null; - ReplicationNode cibleNode = null; + ReplicationNode ownerNode; + ReplicationNode cibleNode; - EntityOperator<? super TopiaEntity> ownerOperator = null; + EntityOperator<? super TopiaEntity> ownerOperator; // contient la liste des ids d'association autorisees ici - List<String> associationsId = null; + List<String> associationsId; // contient la liste des ids des entite source de l'association - List<String> ownerIds = null; + List<String> ownerIds; if (reverse) { // on est en mode reverse, i.e : @@ -141,7 +141,7 @@ } // contient la liste des entites sources de l'association - List<? extends TopiaEntity> ownerEntities = null; + List<? extends TopiaEntity> ownerEntities; // on recharge obligatoirement les donnees sources car elles ont pu etre // modifiees (dettachement d'association ou autres) Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachAssociation.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachAssociation.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachAssociation.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -25,28 +25,30 @@ package org.nuiton.topia.replication.operation; -import org.nuiton.topia.replication.*; -import java.util.List; -import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.util.EntityOperator; +import org.nuiton.topia.replication.TopiaReplicationOperation; import org.nuiton.topia.replication.model.ReplicationModel; import org.nuiton.topia.replication.model.ReplicationNode; import org.nuiton.topia.replication.model.ReplicationOperationDef; import org.nuiton.topia.replication.model.ReplicationOperationPhase; + +import java.util.List; +import java.util.Map; + import static org.nuiton.i18n.I18n._; /** * Pour dettacher une association. - * + * <p/> * Note : cette operation est interne, et n'est pas creable par * l'utilisateur via la methode * {@link #register(ReplicationModel, ReplicationNode, ReplicationOperationPhase, Object...)}. - * + * * @author chemit */ public class DettachAssociation implements TopiaReplicationOperation { @@ -57,15 +59,15 @@ @Override public void register(ReplicationModel model, ReplicationNode ownerNode, ReplicationOperationPhase phase, Object... parameters) { - throw new UnsupportedOperationException(_("topia.replication.operation.error.uncreatable",getClass())); + throw new UnsupportedOperationException(_("topia.replication.operation.error.uncreatable", getClass())); } @Override public void run(ReplicationOperationDef operationDef, - TopiaContextImplementor srcCtxt, - TopiaContextImplementor dstCtxt, - List<? extends TopiaEntity> entities, - Map<Class<? extends TopiaEntity>, List<String>> data) throws TopiaException { + TopiaContextImplementor srcCtxt, + TopiaContextImplementor dstCtxt, + List<? extends TopiaEntity> entities, + Map<Class<? extends TopiaEntity>, List<String>> data) throws TopiaException { String name = (String) operationDef.getParameters()[0]; Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachDependency.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachDependency.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/DettachDependency.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -25,27 +25,29 @@ package org.nuiton.topia.replication.operation; -import org.nuiton.topia.replication.*; -import java.util.List; -import java.util.Map; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.replication.TopiaReplicationOperation; import org.nuiton.topia.replication.model.ReplicationModel; import org.nuiton.topia.replication.model.ReplicationNode; import org.nuiton.topia.replication.model.ReplicationOperationDef; import org.nuiton.topia.replication.model.ReplicationOperationPhase; + +import java.util.List; +import java.util.Map; + import static org.nuiton.i18n.I18n._; /** * Pour dettacher une dependance. - * + * <p/> * TODO Pas implante pour le moment - * + * <p/> * Note : cette operation est interne, et n'est pas creable par * l'utilisateur via la methode * {@link #register(ReplicationModel, ReplicationNode, ReplicationOperationPhase, Object...)}. - * + * * @author chemit */ public class DettachDependency implements TopiaReplicationOperation { @@ -58,10 +60,10 @@ @Override public void run(ReplicationOperationDef operationDef, - TopiaContextImplementor srcCtxt, - TopiaContextImplementor dstCtxt, - List<? extends TopiaEntity> nodeEntities, - Map<Class<? extends TopiaEntity>, List<String>> data) throws TopiaException { + TopiaContextImplementor srcCtxt, + TopiaContextImplementor dstCtxt, + List<? extends TopiaEntity> nodeEntities, + Map<Class<? extends TopiaEntity>, List<String>> data) throws TopiaException { throw new UnsupportedOperationException(_("topia.replication.operation.error.notImplemented", getClass())); //TODO non implante pour le moment Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/Duplicate.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/Duplicate.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/Duplicate.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -25,8 +25,6 @@ package org.nuiton.topia.replication.operation; -import java.util.List; -import java.util.Map; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaEntity; @@ -35,13 +33,17 @@ import org.nuiton.topia.replication.model.ReplicationNode; import org.nuiton.topia.replication.model.ReplicationOperationDef; import org.nuiton.topia.replication.model.ReplicationOperationPhase; + +import java.util.List; +import java.util.Map; + import static org.nuiton.i18n.I18n._; /** * L'operation de duplication d'un noeud de replication. - * + * <p/> * Note : cette operation est interne, et n'est pas creable par - * l'utilisateur via la methode + * l'utilisateur via la methode * {@link #register(ReplicationModel, ReplicationNode, ReplicationOperationPhase, Object...)}. * * @author chemit @@ -50,15 +52,15 @@ @Override public void register(ReplicationModel model, ReplicationNode ownerNode, ReplicationOperationPhase phase, Object... parameters) { - throw new UnsupportedOperationException(_("topia.replication.operation.error.uncreatable",getClass())); + throw new UnsupportedOperationException(_("topia.replication.operation.error.uncreatable", getClass())); } @Override public void run(ReplicationOperationDef operationDef, - TopiaContextImplementor srcCtxt, - TopiaContextImplementor dstCtxt, - List<? extends TopiaEntity> entities, - Map<Class<? extends TopiaEntity>, List<String>> data) throws TopiaException { + TopiaContextImplementor srcCtxt, + TopiaContextImplementor dstCtxt, + List<? extends TopiaEntity> entities, + Map<Class<? extends TopiaEntity>, List<String>> data) throws TopiaException { // replication des donnees vers la destination srcCtxt.replicateEntities(dstCtxt, entities); Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/LoadLink.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/LoadLink.java 2010-07-26 08:44:30 UTC (rev 2088) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/LoadLink.java 2010-07-26 14:07:15 UTC (rev 2089) @@ -25,29 +25,31 @@ package org.nuiton.topia.replication.operation; -import org.nuiton.topia.replication.*; -import java.util.List; -import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.util.EntityOperator; +import org.nuiton.topia.replication.TopiaReplicationOperation; import org.nuiton.topia.replication.model.Link; import org.nuiton.topia.replication.model.ReplicationModel; import org.nuiton.topia.replication.model.ReplicationNode; import org.nuiton.topia.replication.model.ReplicationOperationDef; import org.nuiton.topia.replication.model.ReplicationOperationPhase; + +import java.util.List; +import java.util.Map; + import static org.nuiton.i18n.I18n._; /** * Pour charger une association sur le noeud de l'operation. - * + * <p/> * Note : cette operation est interne, et n'est pas creable par * l'utilisateur via la methode * {@link #register(ReplicationModel, ReplicationNode, ReplicationOperationPhase, Object...)}. - * + * * @author chemit */ public class LoadLink implements TopiaReplicationOperation { @@ -63,10 +65,10 @@ @Override public void run(ReplicationOperationDef operationDef, - TopiaContextImplementor srcCtxt, - TopiaContextImplementor dstCtxt, - List<? extends TopiaEntity> nodeEntities, - Map<Class<? extends TopiaEntity>, List<String>> data) throws TopiaException { + TopiaContextImplementor srcCtxt, + TopiaContextImplementor dstCtxt, + List<? extends TopiaEntity> nodeEntities, + Map<Class<? extends TopiaEntity>, List<String>> data) throws TopiaException { Link link = (Link) operationDef.getParameters()[0];