AppEngineEntityManagerFactory.java :  » UnTagged » green-plate » mobi » greenplate » theweb » persistence » Android Open Source

Android Open Source » UnTagged » green plate 
green plate » mobi » greenplate » theweb » persistence » AppEngineEntityManagerFactory.java
package mobi.greenplate.theweb.persistence;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author Dimitar Makariev
 */
public class AppEngineEntityManagerFactory {

    private static EntityManagerFactory emf;
    private final String persistenceUnitName;
    private final static Logger log = Logger.getLogger(AppEngineEntityManagerFactory.class.getName());

    private AppEngineEntityManagerFactory(String persistenceUnitName) {
        this.persistenceUnitName = persistenceUnitName;
    }

    public static EntityManagerFactory entityManagerFactory() {       
        try {
            // assuming single threaded startup
            long begin = System.currentTimeMillis();
            if (emf == null) {
                emf = Persistence.createEntityManagerFactory("theweb-pu");
                log.log(Level.WARNING, "EntityManagerFactory ( singleton ) created for {0}ms", (System.currentTimeMillis() - begin));
            }
            return emf;
        } catch (RuntimeException e) {
            log.log(Level.SEVERE, "Couldn't create EntityManagerFactory: " + e.getMessage(), e);
            throw e;
        } catch (Error e) {
            log.log(Level.SEVERE, "Couldn't create EntityManagerFactory: " + e.getMessage(), e);
            throw e;
        }
    }

    public interface EmTemplate<T> {

        T execute(EntityManager em);
    }

    public static <T> T inTransacion(EmTemplate<T> template) {
        EntityManager entityManager = entityManagerFactory().createEntityManager();
        entityManager.getTransaction().begin();
        T result = template.execute(entityManager);
        entityManager.getTransaction().commit();
        return result;
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.