us.mn.state.health.lims.sampleitem.daoimpl.SampleItemDAOImpl.java Source code

Java tutorial

Introduction

Here is the source code for us.mn.state.health.lims.sampleitem.daoimpl.SampleItemDAOImpl.java

Source

/**
* 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) The Minnesota Department of Health.  All Rights Reserved.
*
* Contributor(s): CIRG, University of Washington, Seattle WA.
*/
package us.mn.state.health.lims.sampleitem.daoimpl;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.apache.commons.beanutils.PropertyUtils;
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.common.util.SystemConfiguration;
import us.mn.state.health.lims.hibernate.HibernateUtil;
import us.mn.state.health.lims.sampleitem.dao.SampleItemDAO;
import us.mn.state.health.lims.sampleitem.valueholder.SampleItem;
import us.mn.state.health.lims.sourceofsample.valueholder.SourceOfSample;
import us.mn.state.health.lims.typeofsample.valueholder.TypeOfSample;

/**
 * @author diane benz
 */
public class SampleItemDAOImpl extends BaseDAOImpl implements SampleItemDAO {

    public void deleteData(List<SampleItem> sampleItems) throws LIMSRuntimeException {
        //add to audit trail
        try {
            AuditTrailDAO auditDAO = new AuditTrailDAOImpl();
            for (int i = 0; i < sampleItems.size(); i++) {
                SampleItem data = (SampleItem) sampleItems.get(i);

                SampleItem oldData = (SampleItem) readSampleItem(data.getId());
                SampleItem newData = new SampleItem();

                String sysUserId = data.getSysUserId();
                String event = IActionConstants.AUDIT_TRAIL_DELETE;
                String tableName = "SAMPLE_ITEM";
                auditDAO.saveHistory(newData, oldData, sysUserId, event, tableName);
            }
        } catch (Exception e) {

            LogEvent.logError("SampleItemDAOImpl", "AuditTrail deleteData()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem AuditTrail deleteData()", e);
        }

        try {
            for (int i = 0; i < sampleItems.size(); i++) {
                SampleItem data = (SampleItem) sampleItems.get(i);

                data = (SampleItem) readSampleItem(data.getId());
                HibernateUtil.getSession().delete(data);
                HibernateUtil.getSession().flush();
                HibernateUtil.getSession().clear();
            }
        } catch (Exception e) {
            LogEvent.logError("SampleItemDAOImpl", "deleteData()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem deleteData()", e);
        }
    }

    public boolean insertData(SampleItem sampleItem) throws LIMSRuntimeException {
        if (sampleItem == null) {
            return false;
        }

        try {
            String id = (String) HibernateUtil.getSession().save(sampleItem);
            sampleItem.setId(id);

            AuditTrailDAO auditDAO = new AuditTrailDAOImpl();
            String sysUserId = sampleItem.getSysUserId();
            String tableName = "SAMPLE_ITEM";
            auditDAO.saveNewHistory(sampleItem, sysUserId, tableName);

            HibernateUtil.getSession().flush();
            HibernateUtil.getSession().clear();

        } catch (Exception e) {
            LogEvent.logError("SampleItemDAOImpl", "insertData()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem insertData()", e);
        }

        return true;
    }

    public void updateData(SampleItem sampleItem) throws LIMSRuntimeException {

        SampleItem oldData = (SampleItem) readSampleItem(sampleItem.getId());
        SampleItem newData = sampleItem;

        try {
            AuditTrailDAO auditDAO = new AuditTrailDAOImpl();
            String sysUserId = sampleItem.getSysUserId();
            String event = IActionConstants.AUDIT_TRAIL_UPDATE;
            String tableName = "SAMPLE_ITEM";
            auditDAO.saveHistory(newData, oldData, sysUserId, event, tableName);
        } catch (Exception e) {
            LogEvent.logError("SampleItemDAOImpl", "AuditTrail updateData()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem AuditTrail updateData()", e);
        }

        try {
            HibernateUtil.getSession().merge(sampleItem);
            HibernateUtil.getSession().flush();
            HibernateUtil.getSession().clear();
            HibernateUtil.getSession().evict(sampleItem);
            HibernateUtil.getSession().refresh(sampleItem);
        } catch (Exception e) {
            LogEvent.logError("SampleItemDAOImpl", "updateData()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem updateData()", e);
        }
    }

    public void getData(SampleItem sampleItem) throws LIMSRuntimeException {
        try {
            SampleItem sampleIt = (SampleItem) HibernateUtil.getSession().get(SampleItem.class, sampleItem.getId());
            HibernateUtil.getSession().flush();
            HibernateUtil.getSession().clear();
            if (sampleIt != null) {
                PropertyUtils.copyProperties(sampleItem, sampleIt);
            } else {
                sampleItem.setId(null);
            }
        } catch (Exception e) {
            LogEvent.logError("SampleItemDAOImpl", "getData()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem getData()", e);
        }
    }

    @Override
    public SampleItem getData(String sampleItemId) throws LIMSRuntimeException {
        try {
            SampleItem sampleItem = (SampleItem) HibernateUtil.getSession().get(SampleItem.class, sampleItemId);
            closeSession();
            return sampleItem;
        } catch (Exception e) {
            handleException(e, "getData");
        }

        return null;
    }

    @SuppressWarnings("unchecked")
    public List<SampleItem> getAllSampleItems() throws LIMSRuntimeException {
        List<SampleItem> list;
        try {
            String sql = "from SampleItem";
            org.hibernate.Query query = HibernateUtil.getSession().createQuery(sql);
            list = query.list();
            HibernateUtil.getSession().flush();
            HibernateUtil.getSession().clear();
        } catch (Exception e) {
            LogEvent.logError("SampleItemDAOImpl", "getAllSampleItems()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem getAllSampleItems()", e);
        }

        return list;
    }

    @SuppressWarnings("unchecked")
    public List<SampleItem> getPageOfSampleItems(int startingRecNo) throws LIMSRuntimeException {
        List<SampleItem> list;
        try {
            // calculate maxRow to be one more than the page size
            int endingRecNo = startingRecNo + (SystemConfiguration.getInstance().getDefaultPageSize() + 1);

            String sql = "from SampleItem s order by s.id";
            org.hibernate.Query query = HibernateUtil.getSession().createQuery(sql);
            query.setFirstResult(startingRecNo - 1);
            query.setMaxResults(endingRecNo - 1);

            list = query.list();
            HibernateUtil.getSession().flush();
            HibernateUtil.getSession().clear();
        } catch (Exception e) {

            LogEvent.logError("SampleItemDAOImpl", "getPageOfSampleItems()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem getPageOfSampleItems()", e);
        }

        return list;
    }

    public SampleItem readSampleItem(String idString) {
        SampleItem samp = null;
        try {
            samp = (SampleItem) HibernateUtil.getSession().get(SampleItem.class, idString);
            HibernateUtil.getSession().flush();
            HibernateUtil.getSession().clear();
        } catch (Exception e) {

            LogEvent.logError("SampleItemDAOImpl", "readSampleItem()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem readSampleItem()", e);
        }

        return samp;

    }

    @SuppressWarnings("unchecked")
    public List<SampleItem> getNextSampleItemRecord(String id) throws LIMSRuntimeException {

        return getNextRecord(id, "SampleItem", SampleItem.class);

    }

    @SuppressWarnings("unchecked")
    public List<SampleItem> getPreviousSampleItemRecord(String id) throws LIMSRuntimeException {

        return getPreviousRecord(id, "SampleItem", SampleItem.class);
    }

    public void getDataBySample(SampleItem sampleItem) throws LIMSRuntimeException {
        // Use an expression to read in the Sample_Item by SAMP_ID
        try {
            String sql = "from SampleItem si where samp_id = :param";
            Query query = HibernateUtil.getSession().createQuery(sql);

            query.setInteger("param", Integer.parseInt(sampleItem.getSample().getId()));
            @SuppressWarnings("unchecked")
            List<SampleItem> list = query.list();
            HibernateUtil.getSession().flush();
            HibernateUtil.getSession().clear();
            SampleItem si = null;
            if (!list.isEmpty()) {
                si = list.get(0);

                TypeOfSample tos = null;
                if (si.getTypeOfSampleId() != null) {
                    tos = (TypeOfSample) HibernateUtil.getSession().get(TypeOfSample.class, si.getTypeOfSampleId());
                    HibernateUtil.getSession().flush();
                    HibernateUtil.getSession().clear();
                    si.setTypeOfSample(tos);
                }
                SourceOfSample sos = null;
                if (si.getSourceOfSampleId() != null) {
                    sos = (SourceOfSample) HibernateUtil.getSession().get(SourceOfSample.class,
                            si.getSourceOfSampleId());
                    si.setSourceOfSample(sos);
                    HibernateUtil.getSession().flush();
                    HibernateUtil.getSession().clear();
                }
                PropertyUtils.copyProperties(sampleItem, si);
            }
        } catch (Exception e) {
            LogEvent.logError("SampleItemDAOImpl", "getDataBySample()", e.toString());
            throw new LIMSRuntimeException("Error in SampleItem getDataBySample()", e);
        }

    }

    @SuppressWarnings("unchecked")
    public List<SampleItem> getSampleItemsBySampleId(String id) throws LIMSRuntimeException {

        try {
            String sql = "from SampleItem sampleItem where sampleItem.sample.id = :sampleId order by sampleItem.sortOrder";
            Query query = HibernateUtil.getSession().createQuery(sql);
            query.setInteger("sampleId", Integer.parseInt(id));
            List<SampleItem> list = query.list();
            HibernateUtil.getSession().flush();
            HibernateUtil.getSession().clear();

            return list;

        } catch (HibernateException he) {
            LogEvent.logError("SampleItemDAOImpl", "getSampleItemsBySampleId()", he.toString());
            throw new LIMSRuntimeException("Error in SampleItem getSampleItemsBySampleId()", he);
        }

    }

    /**
     * @see us.mn.state.health.lims.sampleitem.dao.SampleItemDAO#getSampleItemsBySampleIdAndType(java.lang.String, us.mn.state.health.lims.typeofsample.valueholder.TypeOfSample)
     */
    @SuppressWarnings("unchecked")
    public List<SampleItem> getSampleItemsBySampleIdAndType(String sampleId, TypeOfSample typeOfSample) {
        try {
            String sql = "from SampleItem si where si.sample.id = :sampleId and si.typeOfSample.id = :typeOfSampleId";
            Query query = HibernateUtil.getSession().createQuery(sql);
            query.setInteger("sampleId", Integer.parseInt(sampleId));
            query.setInteger("typeOfSampleId", Integer.parseInt(typeOfSample.getId()));
            List<SampleItem> list = query.list();
            HibernateUtil.getSession().flush();
            HibernateUtil.getSession().clear();

            return list;

        } catch (HibernateException he) {
            LogEvent.logError("SampleItemDAOImpl", "getSampleItemsBySampleIdAndType()", he.toString());
            throw new LIMSRuntimeException("Error in SampleItem getSampleItemsBySampleId()", he);
        }
    }

    @Override
    public List<SampleItem> getSampleItemsBySampleIdAndStatus(String id, Set<Integer> includedStatusList)
            throws LIMSRuntimeException {
        if (includedStatusList.isEmpty()) {
            return new ArrayList<SampleItem>();
        }

        try {
            String sql = "from SampleItem sampleItem where sampleItem.sample.id = :sampleId and sampleItem.statusId in ( :statusIds ) order by sampleItem.sortOrder";
            Query query = HibernateUtil.getSession().createQuery(sql);
            query.setInteger("sampleId", Integer.parseInt(id));
            query.setParameterList("statusIds", includedStatusList);
            @SuppressWarnings("unchecked")
            List<SampleItem> list = query.list();
            closeSession();

            return list;

        } catch (HibernateException he) {
            handleException(he, "getSampleItemsBySampleIdAndStatus");
        }

        return null;
    }

}