001 package org.cocome.tradingsystem.testdriver; 002 003 import javax.persistence.EntityManager; 004 import javax.persistence.EntityManagerFactory; 005 import javax.persistence.EntityTransaction; 006 import javax.persistence.Persistence; 007 008 import org.cocome.tradingsystem.inventory.data.DataIfFactory; 009 import org.cocome.tradingsystem.inventory.data.persistence.PersistenceContext; 010 import org.cocome.tradingsystem.inventory.data.persistence.impl.PersistenceContextImpl; 011 import org.cocome.tradingsystem.inventory.data.store.StoreQueryIf; 012 013 /** 014 * Supporting singleton for managing the database. 015 * 016 * @author Benjamin Hummel 017 * @author $Author: hummel $ 018 * @version $Rev: 63 $ 019 * @levd.rating GREEN Rev: 63 020 */ 021 public class DBManager { 022 023 /** The entity manager factory used here. */ 024 private final EntityManagerFactory emf; 025 026 /** The object used for querying stores */ 027 private final StoreQueryIf storeQuery; 028 029 /** The single instance of this manager. */ 030 private static DBManager instance = null; 031 032 /** Returns the single instance of this manager. */ 033 public static DBManager getInstance() { 034 if (instance == null) { 035 instance = new DBManager(); 036 } 037 return instance; 038 } 039 040 /** Hidden constructor. */ 041 private DBManager() { 042 emf = Persistence.createEntityManagerFactory("inventory-manager"); 043 storeQuery = DataIfFactory.getInstance().getStoreQueryIf(); 044 } 045 046 /** {@inheritDoc} */ 047 public void persistDBObject(Object dbObject) { 048 EntityManager em = emf.createEntityManager(); 049 EntityTransaction tx = null; 050 try { 051 tx = em.getTransaction(); 052 tx.begin(); 053 em.persist(dbObject); 054 tx.commit(); 055 } finally { 056 em.close(); 057 } 058 } 059 060 /** Return the store query object. */ 061 public StoreQueryIf getStoreQuery() { 062 return storeQuery; 063 } 064 065 /** Creates a new persistence context, used e.g. for queries. */ 066 public PersistenceContext createPersistenceContext() { 067 EntityManager em = emf.createEntityManager(); 068 return new PersistenceContextImpl(em); 069 } 070 }