/** * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations under * the License. * * The Original Code is OpenELIS code. * * Copyright (C) CIRG, University of Washington, Seattle WA. All Rights Reserved. * */ package us.mn.state.health.lims.requester.daoimpl; import org.hibernate.HibernateException; import org.hibernate.Query; import us.mn.state.health.lims.audittrail.dao.AuditTrailDAO; import us.mn.state.health.lims.audittrail.daoimpl.AuditTrailDAOImpl; import us.mn.state.health.lims.common.action.IActionConstants; import us.mn.state.health.lims.common.daoimpl.BaseDAOImpl; import us.mn.state.health.lims.common.exception.LIMSRuntimeException; import us.mn.state.health.lims.common.log.LogEvent; import us.mn.state.health.lims.hibernate.HibernateUtil; import us.mn.state.health.lims.requester.dao.SampleRequesterDAO; import us.mn.state.health.lims.requester.valueholder.SampleRequester; import java.util.List; /* */ public class SampleRequesterDAOImpl extends BaseDAOImpl implements SampleRequesterDAO { public boolean insertData(SampleRequester sampleRequester) throws LIMSRuntimeException { try { HibernateUtil.getSession().save(sampleRequester); new AuditTrailDAOImpl().saveNewHistory(sampleRequester, sampleRequester.getSysUserId(), "SAMPLE_REQUESTER"); HibernateUtil.getSession().flush(); HibernateUtil.getSession().clear(); } catch (Exception e) { LogEvent.logError( "SampleRequesterDAOImpl", "insertData()", e.toString() ); throw new LIMSRuntimeException("Error in SampleRequester insertData()", e); } return true; } @Override public void updateData( SampleRequester sampleRequester ) throws LIMSRuntimeException{ SampleRequester oldData = (SampleRequester) readOld(sampleRequester.getSampleId(), sampleRequester.getRequesterTypeId()); try { AuditTrailDAO auditDAO = new AuditTrailDAOImpl(); String sysUserId = sampleRequester.getSysUserId(); String event = IActionConstants.AUDIT_TRAIL_UPDATE; String tableName = "SAMPLE_REQUESTER"; auditDAO.saveHistory(sampleRequester, oldData, sysUserId, event, tableName); } catch (Exception e) { LogEvent.logError( "SampleRequesterDAOImpl", "updateData()", e.toString() ); throw new LIMSRuntimeException("Error in SampleRequester AuditTrail updateData()", e); } try { HibernateUtil.getSession().merge(sampleRequester); HibernateUtil.getSession().flush(); HibernateUtil.getSession().clear(); HibernateUtil.getSession().evict(sampleRequester); HibernateUtil.getSession().refresh(sampleRequester); } catch (Exception e) { LogEvent.logError("SampleRequesterDAOImpl","updateData()",e.toString()); throw new LIMSRuntimeException("Error in SampleRequester updateData()", e); } } @Override public void insertOrUpdateData( SampleRequester samplePersonRequester ) throws LIMSRuntimeException{ if( samplePersonRequester.getLastupdated() == null){ insertData( samplePersonRequester ); }else{ updateData( samplePersonRequester); } } @Override public void delete( SampleRequester sampleRequester ) throws LIMSRuntimeException{ HibernateUtil.getSession().delete(sampleRequester); closeSession(); } @SuppressWarnings("unchecked") @Override public List<SampleRequester> getRequestersForSampleId(String sampleId) throws LIMSRuntimeException { String sql = "From SampleRequester sr where sr.sampleId = :sampleId"; try{ Query query = HibernateUtil.getSession().createQuery(sql); query.setLong("sampleId", Long.parseLong(sampleId)); List<SampleRequester> requester = query.list(); closeSession(); return requester; }catch(HibernateException e){ handleException(e, "getRequesterForSampleId"); } return null; } public SampleRequester readOld(long sampleId, long requesterTypeId) { String sql = "From SampleRequester sr where sr.sampleId = :sampleId and sr.requesterTypeId = :requesterTypeId"; try { Query query = HibernateUtil.getSession().createQuery( sql ); query.setLong( "sampleId", sampleId ); query.setLong( "requesterTypeId", requesterTypeId ); SampleRequester requester = (SampleRequester)query.uniqueResult(); closeSession(); return requester; } catch (HibernateException e) { LogEvent.logError("SampleRequesterDAOImpl","readOld()",e.toString()); throw new LIMSRuntimeException("Error in SampleRequester readOld()", e); } } }