KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > api > metadata > view > service > impl > HibernateAccessTest


1 /*
2  * Copyright (C) 2006 JasperSoft http://www.jaspersoft.com
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed WITHOUT ANY WARRANTY; and without the
10  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
15  * or write to:
16  *
17  * Free Software Foundation, Inc.,
18  * 59 Temple Place - Suite 330,
19  * Boston, MA USA 02111-1307
20  */

21
22 package com.jaspersoft.jasperserver.api.metadata.view.service.impl;
23
24 import java.util.ArrayList JavaDoc;
25 import java.util.Date JavaDoc;
26 import java.util.List JavaDoc;
27
28 import junit.framework.TestCase;
29 import junit.textui.TestRunner;
30
31 import org.hibernate.Session;
32 import org.hibernate.SessionFactory;
33 import org.springframework.context.support.ClassPathXmlApplicationContext;
34 import org.springframework.orm.hibernate3.HibernateTemplate;
35 import org.springframework.orm.hibernate3.SessionFactoryUtils;
36 import org.springframework.orm.hibernate3.SessionHolder;
37 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
38 import org.springframework.transaction.support.TransactionSynchronizationManager;
39
40 import com.jaspersoft.jasperserver.api.metadata.common.domain.Folder;
41 import com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoFolder;
42 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.RepoReportUnit;
43 import com.jaspersoft.jasperserver.api.metadata.user.domain.User;
44 import com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoRole;
45 import com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoUser;
46
47
48 /**
49  * @author swood
50  * @version $Id: HibernateAccessTest.java 3533 2006-06-04 19:57:12Z swood $
51  */

52 public class HibernateAccessTest extends TestCase {
53
54     public static int NUMBER_OF_TEST_ROLES = 5;
55     
56     SessionFactory sf;
57     RepoReportUnit testObject;
58     RepoFolder root;
59     HibernateTemplate template;
60     
61     User testUser;
62     List JavaDoc testRoles = new ArrayList JavaDoc(NUMBER_OF_TEST_ROLES);
63     
64     public HibernateAccessTest(String JavaDoc name) {
65         super(name);
66     }
67
68     public static void main(String JavaDoc[] args) {
69         TestRunner.run(HibernateAccessTest.class);
70     }
71
72     public void setUp() throws Exception JavaDoc {
73         System.out.println("Setup HibernateAccessTest");
74         ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
75                 new String JavaDoc[] {"hibernateConfig.xml", "viewService.xml"});
76         /*
77          * The TransactionSynchronizationManager work is only needed in tests to allow multiple
78          * Hibernate transactions to occur. Otherwise, each "template." call is a transaction.
79          * Lazy initialization of collections will not occur otherwise. In a web app, there is Spring
80          * configuration to do a transaction per web request - OpenSessionInViewFilter.
81          */

82         sf = (SessionFactory) appContext.getBean("sessionFactory");
83         Session s = sf.openSession();
84         
85         TransactionSynchronizationManager.bindResource(sf, new SessionHolder(s));
86         
87         HibernateDaoSupport dao = (HibernateDaoSupport) appContext.getBean("jasperServerDao");
88         template = dao.getHibernateTemplate();
89         
90         //we need to create a folder because RepoResource.parent is not nullable
91
final RepoFolder root = new RepoFolder();
92         root.setCreationDate(new Date JavaDoc());
93         root.setName(Folder.SEPARATOR);
94         root.setLabel("root");
95         root.setDescription("Root of the folder hierarchy");
96         root.setURI(Folder.SEPARATOR);
97         root.setHidden(false);
98         root.setParent(null);
99         template.save(root);
100     }
101     
102     public void tearDown() {
103         System.out.println("Tear down HibernateAccessTest");
104 /*
105  * Leave entries in the database
106  *
107         if (testObject != null) {
108             final ReportUnit testObjectDel = testObject;
109             template.delete(testObjectDel);
110         }
111         if (testUser != null) {
112             final User testObjectDel = testUser;
113             template.delete(testObjectDel);
114         }
115         if (testRoles != null) {
116             Iterator it = testRoles.iterator();
117             while (it.hasNext()) {
118                 final Role testObjectDel = (Role) it.next();
119                 template.delete(testObjectDel);
120             }
121         }
122 */
SessionHolder holder = (SessionHolder) TransactionSynchronizationManager.getResource(sf);
123         
124         Session s = holder.getSession();
125         
126         s.flush();
127         TransactionSynchronizationManager.unbindResource(sf);
128         SessionFactoryUtils.releaseSession(s, sf);
129         
130         
131     }
132     
133     public void createReportUnit() throws Exception JavaDoc {
134         System.out.println("createReportUnit");
135         
136         final RepoReportUnit testObjectImpl = new RepoReportUnit();
137         testObjectImpl.setCreationDate(new Date JavaDoc());
138         testObjectImpl.setDescription("Test");
139         testObjectImpl.setName("Test");
140         testObjectImpl.setLabel("Test");
141         testObjectImpl.setParent(root);
142         final Long JavaDoc testObjectId = (Long JavaDoc) template.save(testObjectImpl);
143         assertNotNull("testObjectId", testObjectId);
144         testObject = (RepoReportUnit) template.load(RepoReportUnit.class, testObjectId);
145         assertNotNull("testObject", testObject);
146     }
147     
148     public void createUser() throws Exception JavaDoc {
149         System.out.println("createUser");
150         final RepoUser testUserImpl = new RepoUser();
151         testUserImpl.setUsername("TestUser");
152         testUserImpl.setFullName("TestUser");
153         testUserImpl.setPassword("newPassword");
154         testUserImpl.setEnabled(true);
155         testUserImpl.setExternallyDefined(false);
156         
157         Long JavaDoc testObjectId = (Long JavaDoc) template.save(testUserImpl);
158         testUser = (User) template.load(RepoUser.class, testObjectId);
159         assertNotNull("testUser null", testUser);
160     }
161     
162     public void createRoles() throws Exception JavaDoc {
163         System.out.println("testCreateRoles");
164         for (int i = 0; i < NUMBER_OF_TEST_ROLES; i++) {
165             final RepoRole testRoleImpl = new RepoRole();
166             String JavaDoc roleName = "TestRole" + i;
167             testRoleImpl.setRoleName(roleName);
168             testRoleImpl.setExternallyDefined(false);
169         
170             template.saveOrUpdate(testRoleImpl);
171             
172             testRoles.add(testRoleImpl);
173             
174             testUser.addRole(testRoleImpl);
175         }
176         
177         template.saveOrUpdate(testUser);
178         assertTrue("testUser.getRoles().size()", testUser.getRoles().size() == NUMBER_OF_TEST_ROLES);
179     }
180     
181     public void disabled_testReportUnitQuery() throws Exception JavaDoc {
182
183         createReportUnit();
184
185         System.out.println("testQuery");
186         List JavaDoc result = template.find("from RepoReportUnit where name = ?", "Test");
187         assertNotNull("result", result);
188         assertTrue("result.size() == 1", result.size() == 1);
189         testObject = (RepoReportUnit) result.get(0);
190     }
191     
192     public void testUserQuery() throws Exception JavaDoc {
193         createUser();
194         createRoles();
195
196         System.out.println("testUserQuery");
197         
198         List JavaDoc result = template.find("from RepoUser where username = ?", "TestUser");
199
200         assertNotNull("result", result);
201         assertTrue("result.size() == 1",result.size() == 1);
202
203         System.out.println("testUserQuery: found result OK");
204         
205         testUser = (User) result.get(0);
206         assertNotNull("testUser", testUser);
207         assertNotNull("testUser.getRoles()", testUser.getRoles());
208         assertTrue("testUser.getRoles().size()", testUser.getRoles().size() == NUMBER_OF_TEST_ROLES);
209
210         System.out.println("testUserQuery: roles OK");
211     }
212 }
213
Popular Tags