@Override public PatientSourceServerInfo getPatientSourceServerInfo(String patientGUID) { Session session = this.sessionFactory.getSessionFactory().openSession(); PatientSourceServerInfo data = (PatientSourceServerInfo) session.createCriteria(PatientSourceServerInfo.class) .add(Restrictions.eq("patientGUID", patientGUID)) .uniqueResult(); if (data == null) { this.logger.debug("No remote source server defined for [{}]", patientGUID); return null; } this.logger.debug("Remote source server found for [{}]: [{}]", patientGUID, data.getSourceServerName()); return data; }
@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(); } } }