Index: topia-service/src/java/org/codelutin/topia/migration/kernel/ConfigurationAdapter.java diff -u topia-service/src/java/org/codelutin/topia/migration/kernel/ConfigurationAdapter.java:1.1 topia-service/src/java/org/codelutin/topia/migration/kernel/ConfigurationAdapter.java:1.2 --- topia-service/src/java/org/codelutin/topia/migration/kernel/ConfigurationAdapter.java:1.1 Mon Apr 2 14:24:37 2007 +++ topia-service/src/java/org/codelutin/topia/migration/kernel/ConfigurationAdapter.java Fri Nov 2 15:22:02 2007 @@ -45,7 +45,7 @@ import org.hibernate.collection.PersistentBag; import org.hibernate.collection.PersistentList; import org.hibernate.collection.PersistentSet; -import org.hibernate.mapping.RootClass; +import org.hibernate.mapping.PersistentClass; import org.hibernate.proxy.map.MapProxy; /** @@ -58,9 +58,9 @@ * @author Chevallereau Benjamin * @author Eon Sébastien * @author Trève Vincent - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ * - * Last update : $Date: 2007-04-02 14:24:37 $ + * Last update : $Date: 2007-11-02 15:22:02 $ */ public class ConfigurationAdapter { @@ -132,14 +132,14 @@ */ public Collection getClasses() { // recupere la liste de classes dans la configuration - Iterator iClass = configuration.getClassMappings(); + Iterator iClass = configuration.getClassMappings(); // Instancie la collection Collection cClass = new LinkedList(); // boucle pour chaque classe de l'iterateur while (iClass.hasNext()) { // cast - RootClass rc = (RootClass) (iClass.next()); + PersistentClass rc = iClass.next(); String name = rc.getClassName(); if (name == null) { @@ -160,7 +160,6 @@ * le nom de la classe * @return une collection de MapAdapterAdmin, un pour chaque tuple */ - @SuppressWarnings("unchecked") public Collection getData(ProxyClass className) { // retour LinkedList result = new LinkedList(); @@ -204,7 +203,6 @@ /** * comment me */ - @SuppressWarnings("unchecked") public MapAdapterAdmin getData(ProxyClass className, Serializable idVal) { // session @@ -270,20 +268,24 @@ // extraction des variables ProxyClass clazz = maMap.getInnerClass(); - - Map mapData = removeImbricatedMaps(null, maMap.getInnerMap(), + + // session + Session session = this.sessionFactory.getCurrentSession(); + session.beginTransaction(); + Session dynamicSession = session.getSession(EntityMode.MAP); // mode map + + // replace datas + Map mapData = removeImbricatedMaps(dynamicSession, maMap.getInnerMap(), linkedClass); deletePersistentCollection(mapData); modifyId(mapData, linkedClass); - + session.getTransaction().rollback(); // to disconnect id associated within session + // session - Session session = this.sessionFactory.getCurrentSession(); + session = this.sessionFactory.getCurrentSession(); session.beginTransaction(); - - // mode map - Session dynamicSession = session.getSession(EntityMode.MAP); - - //logger.debug("Saving : " + mapData); + + dynamicSession = session.getSession(EntityMode.MAP); // mode map dynamicSession.saveOrUpdate(clazz.getCanonicalName(), mapData); session.getTransaction().commit(); @@ -294,8 +296,7 @@ * @param mapData * @param linkedClass */ - @SuppressWarnings("unchecked") - private void modifyId(Map mapData, + private void modifyId(Map mapData, Map linkedClass) { // nom de la classe de mapping des item imbriques @@ -325,7 +326,6 @@ * * @param mapData */ - @SuppressWarnings("unchecked") private void deletePersistentCollection(Map mapData) { Map m = new HashMap(); for (Object key : mapData.keySet()) { @@ -393,7 +393,6 @@ * @param map une map qui peut contenir des proxy * @return Une map sans map imbrique de type proxy */ - @SuppressWarnings("unchecked") private Map removeProxyMaps(Map map) { // copy the map @@ -439,10 +438,9 @@ * @param element * @return une map sans proxy */ - @SuppressWarnings("unchecked") - private Map deleteMapProxy(MapProxy element) { + private Map deleteMapProxy(MapProxy element) { - Map result = new HashMap(); + Map result = new HashMap(); if (element instanceof MapProxy) { // logger.debug("Avant : " + element); MapProxy mp = (MapProxy) element; @@ -452,7 +450,6 @@ return result; } - @SuppressWarnings("unchecked") private Map convertToNewMap(Map element, Session dynamicSession, Map linkedClass) { @@ -516,21 +513,21 @@ * Retire les map interne anciennes, et les remplace par les map de la * nouvelle base. * - * @param map - * la map + * @param dynamicSession la session en mode "entitymap" + * @param map la map * @param linkedClass * @return la nouvelle map */ - private Map removeImbricatedMaps(Session dSession, + private Map removeImbricatedMaps(Session dynamicSession, Map map, Map linkedClass) { // session - Session session = this.sessionFactory.getCurrentSession(); - session.beginTransaction(); + //Session session = this.sessionFactory.getCurrentSession(); + //session.beginTransaction(); // mode map - Session dynamicSession = session.getSession(EntityMode.MAP); + //Session dynamicSession = session.getSession(EntityMode.MAP); // copy the map Map m = new HashMap(map); @@ -570,7 +567,7 @@ } // On fait un rollback car on a aucun save - session.getTransaction().rollback(); + //session.getTransaction().rollback(); return map; }