/*
* Copyright (c) 2005-2011 Grameen Foundation USA
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
* See also http://www.apache.org/licenses/LICENSE-2.0.html for an
* explanation of the license and how it is applied.
*/
package org.mifos.framework.util.helpers;
import org.hibernate.SessionFactory;
import org.mifos.accounts.financial.util.helpers.FinancialInitializer;
import org.mifos.application.servicefacade.ApplicationContextProvider;
import org.mifos.config.AccountingRules;
import org.mifos.config.Localization;
import org.mifos.config.persistence.ConfigurationPersistence;
import org.mifos.db.upgrade.DatabaseUpgradeSupport;
import org.mifos.framework.components.audit.util.helpers.AuditConfiguration;
import org.mifos.framework.hibernate.helper.AuditInterceptorFactory;
import org.mifos.framework.hibernate.helper.StaticHibernateUtil;
import org.mifos.security.authorization.HierarchyManager;
import org.mifos.security.util.ActivityMapper;
/**
* Many tests initialize themselves via this class.
*
* However, the fact that it is a static block, and initializes more than it may
* need to for a given test, means that it might be desirable to call
* {@link DatabaseSetup} directly in some cases, or to avoid everything here in
* others (that is, those tests written to not need the database).
*/
public class TestCaseInitializer {
private static boolean initialized = false;
@SuppressWarnings("deprecation")
private DatabaseUpgradeSupport databaseUpgradeSupport = ApplicationContextProvider.getBean(DatabaseUpgradeSupport.class);
public void initialize(SessionFactory sessionFactory) throws Exception {
if (!initialized) {
databaseUpgradeSupport.expansion();
initializeDB(sessionFactory);
initialized = true;
}
}
private void initializeDB(SessionFactory sessionFactory) throws Exception{
StaticHibernateUtil.initialize(new AuditInterceptorFactory(), sessionFactory);
Money.setDefaultCurrency(AccountingRules.getMifosCurrency(new ConfigurationPersistence()));
FinancialInitializer.initialize();
ActivityMapper.getInstance().init();
HierarchyManager.getInstance().init();
AuditConfiguration.init(Localization.getInstance().getConfiguredLocale());
AccountingRules.init();
StaticHibernateUtil.commitTransaction();
}
}