Index: topia-service/src/java/org/codelutin/topia/migration/kernel/DependenciesHelper.java diff -u topia-service/src/java/org/codelutin/topia/migration/kernel/DependenciesHelper.java:1.5 topia-service/src/java/org/codelutin/topia/migration/kernel/DependenciesHelper.java:1.6 --- topia-service/src/java/org/codelutin/topia/migration/kernel/DependenciesHelper.java:1.5 Fri Nov 9 17:18:03 2007 +++ topia-service/src/java/org/codelutin/topia/migration/kernel/DependenciesHelper.java Mon Nov 12 13:19:36 2007 @@ -48,21 +48,22 @@ * @author Chevallereau Benjamin * @author Eon Sébastien * @author Trève Vincent - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ * - * Last update : $Date: 2007-11-09 17:18:03 $ + * Last update : $Date: 2007-11-12 13:19:36 $ */ public class DependenciesHelper { /** - * la sesion factory, hibernate en a besoin pour determiner les liens + * La session factory, hibernate en a besoin pour determiner les liens */ - private SessionFactory sessionFactory; + protected SessionFactory sessionFactory; + /** * La configuration contenant le schema */ - private Configuration configuration; + protected Configuration configuration; /** * Logger (common-logging) @@ -72,12 +73,12 @@ /** * Liste des classes dépendantes pour chaque classe */ - private Map> mDependencies; + protected Map> mDependencies; /** * Liste des classes dépendantes d'une classe */ - private Map> mInvertDependencies; + protected Map> mInvertDependencies; /** * Constructeur @@ -94,18 +95,21 @@ for(ProxyClass clazz : mDependencies.keySet()) { logger.debug("Dep. for class : " + clazz.getCanonicalName() + "=" + mDependencies.get(clazz)); } + for(ProxyClass clazz : mInvertDependencies.keySet()) { + logger.debug("Rev Dep. for class : " + clazz.getCanonicalName() + "=" + mInvertDependencies.get(clazz)); + } } } /** - * Calcules les dependances + * Calcule les dependances */ - private void calculateDependencies() { + protected void calculateDependencies() { mDependencies = new Hashtable>(); mInvertDependencies = new Hashtable>(); - //FIXED apparement on est obilger d'avoir un sessionFactory + //FIXED apparement on est oblige d'avoir un sessionFactory // pour que hibernate nous fournisse les relations (type) SessionFactoryImplementor sfi = (SessionFactoryImplementor)this.sessionFactory; @@ -119,12 +123,12 @@ ProxyClass pcCurrentClass = new SimpleProxyClass(currentClass); //on initialise les listes correspondantes si ce n'est pas deja fait - List lDependecies = new LinkedList(); + List lDependencies = new LinkedList(); List lOldDependencies = mDependencies.get(pcCurrentClass); if(lOldDependencies != null) { - lDependecies.addAll(lOldDependencies); + lDependencies.addAll(lOldDependencies); } - mDependencies.put(pcCurrentClass, lDependecies); + mDependencies.put(pcCurrentClass, lDependencies); if(mInvertDependencies.get(pcCurrentClass) == null) { mInvertDependencies.put(pcCurrentClass, new LinkedList()); @@ -137,7 +141,9 @@ Subclass usb = (Subclass)clazz; String superClassName = usb.getSuperclass().getEntityName(); ProxyClass pcDependentClass = new SimpleProxyClass(superClassName); - lDependecies.add(pcDependentClass); + if(!lDependencies.contains(pcDependentClass)) { + lDependencies.add(pcDependentClass); + } //classe dont depend la classe courante -> classe courante List lOldDependents = mInvertDependencies.get(pcDependentClass); @@ -145,7 +151,9 @@ lOldDependents = new LinkedList(); mInvertDependencies.put(pcDependentClass, lOldDependents); } - lOldDependents.add(new SimpleProxyClass(currentClass)); + if(!lOldDependents.contains(pcCurrentClass)) { + lOldDependents.add(pcCurrentClass); + } } Iterator i = clazz.getPropertyIterator(); @@ -185,7 +193,9 @@ //on l'ajoute dans les listes correspondantes ProxyClass pcDependentClass = new SimpleProxyClass(dependentClassName); //classe courante -> classe dont elle depend - lDependecies.add(pcDependentClass); + if(!lDependencies.contains(pcDependentClass)) { + lDependencies.add(pcDependentClass); + } //classe dont depend la classe courante -> classe courante List lOldDependents = mInvertDependencies.get(pcDependentClass); @@ -193,7 +203,9 @@ lOldDependents = new LinkedList(); mInvertDependencies.put(pcDependentClass, lOldDependents); } - lOldDependents.add(new SimpleProxyClass(currentClass)); + if(!lOldDependents.contains(pcCurrentClass)) { + lOldDependents.add(pcCurrentClass); + } } } }