no.abmu.finances.domain.fixtures.FinancesDbHibernate3TestFixture.java Source code

Java tutorial

Introduction

Here is the source code for no.abmu.finances.domain.fixtures.FinancesDbHibernate3TestFixture.java

Source

/*$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);
    }
}