public void save() throws AppCatalogException { EntityManager em = null; try { em = AppCatalogJPAUtils.getEntityManager(); GlobusJobSubmission existingGlobusSubmission = em.find(GlobusJobSubmission.class, submissionID); em.close(); em = AppCatalogJPAUtils.getEntityManager(); em.getTransaction().begin(); if (existingGlobusSubmission != null) { existingGlobusSubmission.setSubmissionID(submissionID); existingGlobusSubmission.setResourceJobManager(resourceJobManager); existingGlobusSubmission.setSecurityProtocol(securityProtocol); em.merge(existingGlobusSubmission); } else { GlobusJobSubmission globusJobSubmission = new GlobusJobSubmission(); globusJobSubmission.setSubmissionID(submissionID); globusJobSubmission.setSecurityProtocol(securityProtocol); globusJobSubmission.setResourceJobManager(resourceJobManager); em.persist(globusJobSubmission); } em.getTransaction().commit(); em.close(); } catch (Exception e) { logger.error(e.getMessage(), e); throw new AppCatalogException(e); } finally { if (em != null && em.isOpen()) { if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } em.close(); } } }