]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java
Create separate Hibernate project
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / hibernate / structure / tree / TreeSRegistryDaoHibernate.java
index 8b421a896b10519ca3db565fe756885cb44a7c7d..fab18a19d6c17efe4b12db1ca75b038a4d3e2499 100644 (file)
@@ -32,8 +32,12 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements
                getHibernateTemplate().save(registry);\r
        }\r
 \r
-       public void update(TreeSRegistry registry) {\r
-               getHibernateTemplate().update(registry);\r
+       public void update(TreeSRegistry registryArg) {\r
+               Session session = getSession();\r
+               session.beginTransaction();\r
+               TreeSRegistry registry = (TreeSRegistry)session.merge(registryArg);\r
+               session.update(registry);\r
+               session.getTransaction().commit();\r
        }\r
 \r
        public TreeSRegistry getActiveTreeSRegistry() {\r
@@ -47,14 +51,17 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements
                }\r
        }\r
 \r
-       public void syncPath(TreeSRegistry registry,\r
-                       StructureRegistry<TreeSPath> localRegistry, TreeSPath path) {\r
+       public void syncPath(TreeSRegistry registryArg,\r
+                       StructureRegistry<TreeSPath> localRegistry, TreeSPath pathArg) {\r
                Session session = getSession();\r
+               session.beginTransaction();\r
+               TreeSRegistry registry = (TreeSRegistry)session.merge(registryArg);\r
+               TreeSPath path = (TreeSPath)session.merge(pathArg);\r
                if (log.isTraceEnabled())\r
                        log.trace("Session#" + session.hashCode() + " " + session);\r
                syncPathImpl(registry, localRegistry, path, session);\r
                session.update(registry);\r
-               // update(registry);\r
+               session.getTransaction().commit();\r
        }\r
 \r
        private void syncPathImpl(TreeSRegistry registry,\r
@@ -70,7 +77,7 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements
 \r
                if (registry.getElement(path) == null) {\r
                        final StructureElement element = getElement(registry,\r
-                                       localRegistry, path);\r
+                                       localRegistry, path, session);\r
                        StructureElement elementPersisted = (StructureElement) session\r
                                        .merge(element);\r
                        registry.register(path, elementPersisted);\r
@@ -82,7 +89,7 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements
                } else {\r
                        if (localRegistry != null) {\r
                                StructureElement element = getElement(registry, localRegistry,\r
-                                               path);\r
+                                               path, session);\r
 \r
                                if (element != null) {\r
                                        StructureElement elementPersisted = (StructureElement) session\r
@@ -106,12 +113,13 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements
        }\r
 \r
        protected StructureElement getElement(TreeSRegistry registry,\r
-                       StructureRegistry<TreeSPath> localRegistry, TreeSPath path) {\r
+                       StructureRegistry<TreeSPath> localRegistry, TreeSPath path,\r
+                       Session session) {\r
                StructureElement element;\r
                if (localRegistry != null) {\r
                        element = localRegistry.getElement(path);\r
-                       if (getSession().getSessionFactory().getClassMetadata(\r
-                                       element.getClass()) == null) {\r
+                       if (session.getSessionFactory()\r
+                                       .getClassMetadata(element.getClass()) == null) {\r
                                if (log.isTraceEnabled())\r
                                        log.trace("Replace non-hibernate element " + element\r
                                                        + " by a simple element.");\r