@SuppressWarnings("rawtypes") public EntityManagerFactory createContainerEntityManagerFactory( PersistenceUnitInfo info, Map properties) { Ejb3Configuration cfg = new Ejb3Configuration(); if (info instanceof SmartPersistenceUnitInfo) { for (String managedPackage : ((SmartPersistenceUnitInfo) info).getManagedPackages()) { cfg.addPackage(managedPackage); } } Ejb3Configuration configured = cfg.configure(info, properties); return (configured != null ? configured.buildEntityManagerFactory() : null); }
/** * Metodo che permette la persistenza di un'oggetto che mappa un'entita' JPA * * @param streamObj Oggetto da persistere * @param tipoDB Nome dialetto da usare per la persistenza * @param configOverrides Map contenente le èroprieta' per la connessione al giusto database * @return 1 se l'oggetto e' stato persistito con successo, 0 altrimenti. * @throws Throwable */ public static int insertQuery( StreamToDbDynamicObject streamObj, int tipoDB, @SuppressWarnings("rawtypes") Map configOverrides) throws Throwable { int returnedValue = 0; Object o = streamObj.getObject(); logWriter.warn("QuickDBManager.insertQuery :configOverrides " + configOverrides); logWriter.warn( "QuickDBManager.insertQuery :object to persist " + o.getClass().toString() + ", in DB type: " + tipoDB); EntityManager em = null; if (streamObj.getEntityManager() == null) { Ejb3Configuration cfg = new Ejb3Configuration(); cfg.configure("" + tipoDB + "_QuickDBRecognizerPU", configOverrides); EntityManagerFactory emf = cfg.addAnnotatedClass(o.getClass()).buildEntityManagerFactory(); em = emf.createEntityManager(); streamObj.setEntityManager(em); } else { em = streamObj.getEntityManager(); } em.getTransaction().begin(); logWriter.warn("Open Transition"); try { em.merge(o); logWriter.warn("Ogetto persistito"); em.getTransaction().commit(); returnedValue = 1; } catch (Throwable e) { em.getTransaction().rollback(); logWriter.error("DB Rollback " + e); throw new Throwable(e.getMessage()); } return returnedValue; }