package hibex.dao; import hibex.dto.PersistentObject; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; import org.hibernate.SessionFactory; import org.hibernate.criterion.DetachedCriteria; public class GenericManager> { private Class modelClass; private GenericDao dao; private static Map, GenericManager> managersMap = new HashMap, GenericManager>(); public GenericManager(Class modelClass) { this.modelClass = modelClass; this.dao = new GenericDaoImpl(modelClass); managersMap.put((Class) this.modelClass, this); } @SuppressWarnings("unchecked") public static > GenericManager lookupManagerByClass( Class modelClass) { return managersMap.get(modelClass); } public void setSessionFactory(SessionFactory sessionFactory) { dao.setSessionFactory(sessionFactory); } public SessionFactory getSessionFactory() { return dao.getSessionFactory(); } public Class getModelClass() { return modelClass; } public void setDao(GenericDao dao) { this.dao = dao; } public List find(DetachedCriteria criteria) { return dao.getObjects(criteria); } public List find(PK[] ids) { return dao.getObjects(ids); } public T get(PK id) { return dao.findById(id); } public List findAll() { return dao.getObjects(); } public Serializable insert(T object) { return dao.create(object); } public void update(T object) { dao.update(object); } public void delete(T object) { dao.delete(object); } }