Java tutorial
/*$Id: FinancesDbHibernate3TestFixture.java 12250 2008-12-12 01:51:44Z jens $*/ /* **************************************************************************** * * * (c) Copyright 2008 ABM-utvikling * * * * This program is free software; you can redistribute it and/or modify it * * under the terms of the GNU General Public License as published by the * * Free Software Foundation; either version 2 of the License, or (at your * * option) any later version. * * * * This program is distributed in the hope that it will be useful, but * * WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * * Public License for more details. http://www.gnu.org/licenses/gpl.html * * * **************************************************************************** */ package no.abmu.finances.domain.fixtures; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; import org.hibernate.dialect.HSQLDialect; /** * UserDbHibernate2TestUtil test utilities for User, * which deliver hibernate2 SessionFactory for testing. * * @author Jens Vindvad, Jens.Vindvad@abm-utvikling.no * @author $Author: jens $ * @version $Rev: 12250 $ * @date $Date: 2008-12-12 02:51:44 +0100 (Fri, 12 Dec 2008) $ * @since 2008-09-27 (Rev. xxx) * @copyright ABM-Utvikling */ public final class FinancesDbHibernate3TestFixture { // Suppress default constructor for noninstantiability. private FinancesDbHibernate3TestFixture() { // This constructor will never be invoked. // See Item 3 on page 12 in // Joshua Bloch: Effective Java: Programming Language Guide, 2001 // ISBN 0-201-31005-8 } /** * Creates hibernate3 sessionFactory with finances classes for testing * of finance module. * * The created sessionFactory is based on HSQLDB in memory database, * this sessionFactory is for testing only and must not be used * in production. * * @return Hibernate3 SessionFactory of user Register. * @throws Exception if Hibernate fails to configure or create the * specified sessionFactory. */ public static SessionFactory createFinancesFactory() throws Exception { Configuration configuration = createConfiguration(); addFinancesClasses(configuration); configuration.generateSchemaCreationScript(new HSQLDialect()); return configuration.buildSessionFactory(); } /** * Creates hibernate3 sessionFactory with finances classes and * organisationRegister classes for testing of finance module. * * The created sessionFactory is based on HSQLDB in memory database, * this sessionFactory is for testing only and must not be used * in production. * * @return Hibernate3 SessionFactory of user Register. * @throws Exception if Hibernate fails to configure or create the * specified sessionFactory. */ public static SessionFactory createFinancesAndOrgRegisterFactory() throws Exception { Configuration configuration = createConfiguration(); addFinancesClasses(configuration); configuration.addClass(no.abmu.finances.domain.AccountOrgUnitMapping.class); configuration.addClass(no.abmu.finances.domain.ReportDataOrgUnitMapping.class); addOrganisationRegisterClasses(configuration); configuration.generateSchemaCreationScript(new HSQLDialect()); return configuration.buildSessionFactory(); } private static Configuration createConfiguration() throws Exception { Configuration configuration = new Configuration(); configuration.setProperty(Environment.DRIVER, "org.hsqldb.jdbcDriver"); configuration.setProperty(Environment.URL, "jdbc:hsqldb:mem:."); configuration.setProperty(Environment.USER, "sa"); configuration.setProperty(Environment.DIALECT, HSQLDialect.class.getName()); configuration.setProperty(Environment.SHOW_SQL, "false"); configuration.setProperty(Environment.HBM2DDL_AUTO, "create-drop"); configuration.setProperty(Environment.STATEMENT_BATCH_SIZE, "0"); configuration.setProperty("hibernate.cache.use_second_level_cache", "false"); return configuration; } private static void addFinancesClasses(Configuration configuration) { configuration.addClass(no.abmu.finances.domain.ReportSchema.class); configuration.addClass(no.abmu.finances.domain.PostPeriod.class); configuration.addClass(no.abmu.finances.domain.PostType.class); configuration.addClass(no.abmu.finances.domain.Post.class); configuration.addClass(no.abmu.finances.domain.PostData.class); configuration.addClass(no.abmu.finances.domain.Account.class); configuration.addClass(no.abmu.finances.domain.ReportData.class); configuration.addClass(no.abmu.finances.domain.SubReportDataList.class); configuration.addClass(no.abmu.finances.domain.PostValidator.class); } private static void addOrganisationRegisterClasses(Configuration configuration) { configuration.addClass(no.abmu.common.AuditEntry.class); configuration.addClass(no.abmu.organisationregister.domain.OrganisationTypeRelation.class); configuration.addClass(no.abmu.organisationregister.domain.OrganisationType.class); configuration.addClass(no.abmu.organisationregister.domain.OrganisationRelation.class); configuration.addClass(no.abmu.organisationregister.domain.MuncipalityRelation.class); configuration.addClass(no.abmu.organisationregister.domain.Country.class); configuration.addClass(no.abmu.organisationregister.domain.ContactRelation.class); configuration.addClass(no.abmu.organisationregister.domain.Muncipality.class); configuration.addClass(no.abmu.organisationregister.domain.OrganisationRelationRole.class); configuration.addClass(no.abmu.organisationregister.domain.ContactRole.class); configuration.addClass(no.abmu.organisationregister.domain.OrganisationName.class); configuration.addClass(no.abmu.organisationregister.domain.OrganisationTypeName.class); configuration.addClass(no.abmu.organisationregister.domain.CountryName.class); configuration.addClass(no.abmu.organisationregister.domain.Language.class); configuration.addClass(no.abmu.organisationregister.domain.ContactInformation.class); configuration.addClass(no.abmu.organisationregister.domain.OrganisationUnit.class); } }