/* * Copyright (c) 2017 OBiBa. All rights reserved. * * This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.obiba.magma.datasource.hibernate.support; import javax.validation.constraints.NotNull; import org.obiba.magma.AbstractDatasourceFactory; import org.obiba.magma.Datasource; import org.obiba.magma.Disposable; import org.obiba.magma.Initialisable; import org.obiba.magma.datasource.hibernate.HibernateDatasource; import org.obiba.magma.datasource.hibernate.SessionFactoryProvider; import org.obiba.magma.support.Disposables; import org.obiba.magma.support.Initialisables; @SuppressWarnings("UnusedDeclaration") public class HibernateDatasourceFactory extends AbstractDatasourceFactory implements Initialisable, Disposable { @NotNull private SessionFactoryProvider sessionFactoryProvider; /** * Empty constructor for XML serialization */ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR", justification = "Needed by XStream") public HibernateDatasourceFactory() { } public HibernateDatasourceFactory(String name, @NotNull SessionFactoryProvider sessionFactoryProvider) { setName(name); this.sessionFactoryProvider = sessionFactoryProvider; } @NotNull @Override public Datasource internalCreate() { return new HibernateDatasource(getName(), sessionFactoryProvider.getSessionFactory()); } public void setSessionFactoryProvider(@NotNull SessionFactoryProvider sessionFactoryProvider) { this.sessionFactoryProvider = sessionFactoryProvider; } @NotNull public SessionFactoryProvider getSessionFactoryProvider() { return sessionFactoryProvider; } @Override public void initialise() { Initialisables.initialise(sessionFactoryProvider); } @Override public void dispose() { Disposables.dispose(sessionFactoryProvider); } }