@Override public void storePatientSourceServerInfo(String patientGUID, String sourceServerName) { PatientSourceServerInfo existing = getPatientSourceServerInfo(patientGUID); if (existing != null) { if (!existing.getSourceServerName().equals(sourceServerName)) { this.logger.warn("Multiple servers pushing the same patient: " + "remote server is already defined as {} and is different from {}", existing.getSourceServerName(), sourceServerName); } } else { Session session = this.sessionFactory.getSessionFactory().openSession(); Transaction t = session.beginTransaction(); try { t.begin(); this.logger.info("Saving remote source server for [{}] = [{}]", patientGUID, sourceServerName); session.save(new PatientSourceServerInfo(patientGUID, sourceServerName)); t.commit(); } catch (HibernateException ex) { this.logger.error("Error saving remote soource server for [{}]: [{}]", patientGUID, ex); } finally { session.close(); } } }