]> git.argeo.org Git - lgpl/argeo-commons.git/blob - server/runtime/org.argeo.server.hibernate/src/main/java/org/argeo/server/hibernate/HibernateLightDaoSync.java
Introduce argeo server hibernate
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.hibernate / src / main / java / org / argeo / server / hibernate / HibernateLightDaoSync.java
1 package org.argeo.server.hibernate;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8 import org.argeo.server.dao.LightDaoSupport;
9 import org.hibernate.Session;
10 import org.hibernate.SessionFactory;
11
12 public class HibernateLightDaoSync {
13 private final static Log log = LogFactory
14 .getLog(HibernateLightDaoSync.class);
15
16 private String externalSuffix = LightDaoInterceptor.DEFAULT_EXTERNAL_SUFFIX;
17
18 private SessionFactory sessionFactory;
19
20 private LightDaoSupport lightDaoSupport;
21
22 private List<Class<?>> classes = new ArrayList<Class<?>>();
23
24 public void sync() {
25 List<Class<?>> lst;
26 if (classes.size() > 0)
27 lst = classes;
28 else
29 lst = lightDaoSupport.getSupportedClasses();
30
31 Session session = sessionFactory.getCurrentSession();
32 session.beginTransaction();
33 try {
34 for (Class<?> clss : lst) {
35 String entityName = clss.getSimpleName() + externalSuffix;
36 int count = 0;
37 for (Object obj : lightDaoSupport.list(clss, null)) {
38 session.save(entityName, obj);
39 count++;
40 }
41 if (log.isDebugEnabled())
42 log.debug("Synchronized " + count + "\tentities '"
43 + entityName + "'");
44 }
45 session.getTransaction().commit();
46 } catch (Exception e) {
47 session.getTransaction().rollback();
48 }
49 }
50
51 public void setClasses(List<Class<?>> classes) {
52 this.classes = classes;
53 }
54
55 public void setExternalSuffix(String externalSuffix) {
56 this.externalSuffix = externalSuffix;
57 }
58
59 public void setSessionFactory(SessionFactory sessionFactory) {
60 this.sessionFactory = sessionFactory;
61 }
62
63 public void setLightDaoSupport(LightDaoSupport lightDaoSupport) {
64 this.lightDaoSupport = lightDaoSupport;
65 }
66 }