/*
* $Id$
*
* Copyright 2006 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
/*------------------------------------------------------------------------------
*
* Written by: Josh Moore <josh.moore@gmx.de>
*
*------------------------------------------------------------------------------
*/
package ome.logic;
import ome.services.query.QueryFactory;
import ome.services.util.BeanHelper;
import ome.system.OmeroContext;
import ome.system.SelfConfigurableService;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* service level 1
*
* @author Josh Moore, <a href="mailto:josh.moore@gmx.de">josh.moore@gmx.de</a>
* @version 1.0 <small> (<b>Internal version:</b> $Rev$ $Date: 2006-12-15
* 11:39:34 +0100 (Fri, 15 Dec 2006) $) </small>
* @since OMERO 3.0
*/
public abstract class AbstractLevel1Service implements SelfConfigurableService {
protected transient QueryFactory queryFactory;
protected transient SessionFactory sessionFactory;
/**
* Performs the necessary {@link OmeroContext} lookup and calls
* {@link OmeroContext#applyBeanPropertyValues(Object, Class)} when
* necessary.
*/
private transient BeanHelper beanHelper = new BeanHelper(this.getClass());
public final void setQueryFactory(QueryFactory factory) {
getBeanHelper().throwIfAlreadySet(this.queryFactory, factory);
this.queryFactory = factory;
}
public QueryFactory getQueryFactory() {
return this.queryFactory;
}
/**
* This method was previously called by the EJB container, but is no longer
* needed. Instead, all configuration happens within Spring.
*/
public void selfConfigure() {
getBeanHelper().configure(this);
}
protected BeanHelper getBeanHelper() {
if (beanHelper == null) {
beanHelper = new BeanHelper(this.getClass());
}
return beanHelper;
}
/**
* delegates to {@link HibernateDaoSupport}. Used during initialization to
* create a {@link HibernateTemplate}
*
* @see HibernateDaoSupport#setSessionFactory(SessionFactory)
*/
public final void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
/**
* delegates to {@link HibernateDaoSupport} to get the current
* {@link SessionFactory}
*
* @see HibernateDaoSupport#getSessionFactory()
*/
public final SessionFactory getSessionFactory() {
return sessionFactory;
}
}