1 package fr.ifremer.quadrige3.core.test;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import org.apache.commons.logging.Log;
28 import org.apache.commons.logging.LogFactory;
29 import org.hibernate.Session;
30 import org.hibernate.SessionFactory;
31 import org.junit.After;
32 import org.junit.Before;
33 import org.junit.BeforeClass;
34 import org.springframework.transaction.PlatformTransactionManager;
35 import org.springframework.transaction.TransactionStatus;
36
37
38
39
40 public abstract class AbstractDaoTest {
41
42
43 private static final Log log = LogFactory.getLog(AbstractDaoTest.class);
44
45 private static PlatformTransactionManager transactionManager;
46
47 private TransactionStatus status;
48
49 private boolean commitOnTearDown = true;
50
51
52
53
54 @BeforeClass
55 public static void beforeClass() {
56 transactionManager = Tests.getBean("transactionManager", PlatformTransactionManager.class);
57 }
58
59
60
61
62
63
64 @Before
65 public void setUp() throws Exception {
66 status = transactionManager.getTransaction(null);
67 if (log.isDebugEnabled()) {
68 log.debug("Session and transaction initialized");
69 }
70 }
71
72
73
74
75
76
77 @After
78 public void tearDown() throws Exception {
79 if (commitOnTearDown) {
80 transactionManager.commit(status);
81 }
82 else {
83 transactionManager.rollback(status);
84 }
85 }
86
87
88
89
90
91
92 protected void setCommitOnTearDown(boolean commitOnTearDown) {
93 this.commitOnTearDown = commitOnTearDown;
94 }
95
96
97
98
99 protected void commit() {
100
101 transactionManager.commit(status);
102
103 status = transactionManager.getTransaction(null);
104 }
105
106
107
108
109
110
111 protected Session getSession() {
112 SessionFactory sessionFactory = Tests.getBean("sessionFactory", SessionFactory.class);
113 return sessionFactory.getCurrentSession();
114 }
115 }