package model.manager; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.celllife.idart.database.hibernate.PackagedDrugs; import org.celllife.idart.database.hibernate.Packages; import org.celllife.idart.database.hibernate.PillCount; import org.celllife.idart.database.hibernate.tmp.AdherenceRecord; import org.celllife.idart.database.hibernate.tmp.DeletedItem; import org.celllife.idart.database.hibernate.tmp.PackageDrugInfo; import org.hibernate.HibernateException; import org.hibernate.Session; /** */ public class TemporaryRecordsManager { private static Log log = LogFactory.getLog(TemporaryRecordsManager.class); /** * Method savePackageDrugInfosToDB. * * @param s * Session * @param pdList * List<PackageDrugInfo> * @return boolean * @throws HibernateException */ public static boolean savePackageDrugInfosToDB(Session s, List<PackageDrugInfo> pdList) throws HibernateException { log.info("Saving package drug infos."); for (PackageDrugInfo pdi : pdList) { s.save(pdi); } return true; } /** * Method saveAdherenceRecordsToDB. * * @param s * Session * @param adList * List<AdherenceRecord> * @return boolean * @throws HibernateException */ public static boolean saveAdherenceRecordsToDB(Session s, List<AdherenceRecord> adList) throws HibernateException { log.info("Saving AdheranceRecords"); for (int i = 0; i < adList.size(); i++) { s.save(adList.get(i)); } return true; } /** * Method saveDeletedItemsToDB. * * @param s * Session * @param dList * List<DeletedItem> * @throws HibernateException */ public static void saveDeletedItemsToDB(Session s, List<DeletedItem> dList) throws HibernateException { log.info("Saving DeletedItems."); for (int i = 0; i < dList.size(); i++) { s.save(dList.get(i)); } } /** * Method hasUnsubmittedRecords. * * @param s * Session * @return boolean * @throws HibernateException */ public static boolean hasUnsubmittedRecords(Session s) throws HibernateException { long numPdis = (Long) s.createQuery( "select count (pd.id) from PackageDrugInfo as pd where pd.sentToEkapa = false") .uniqueResult(); long numAdh = (Long) s.createQuery( "select count (ad.id) from AdherenceRecord as ad") .uniqueResult(); long numDel = (Long) s.createQuery( "select count (del.id) from DeletedItem as del").uniqueResult(); return (numPdis > 0) || (numAdh > 0) || (numDel > 0); } /** * Method getUnsubmittedPackageDrugInfos. * * @param sess * Session * @return List<PackageDrugInfo> * @throws HibernateException */ @SuppressWarnings("unchecked") public static List<PackageDrugInfo> getUnsubmittedPackageDrugInfos( Session sess) throws HibernateException { List<PackageDrugInfo> pdiList = sess .createQuery( "from PackageDrugInfo as pd where pd.invalid = false " + "and pd.sentToEkapa = false " + "and pd.pickupDate is not null " + "order by pd.id asc") .setMaxResults(10).list(); return pdiList; } /** * Method getUnsubmittedAdherenceRecords. * * @param sess * Session * @return List<AdherenceRecord> * @throws HibernateException */ @SuppressWarnings("unchecked") public static List<AdherenceRecord> getUnsubmittedAdherenceRecords( Session sess) throws HibernateException { List<AdherenceRecord> adhList = sess .createQuery( "from AdherenceRecord as ad where order by ad.id asc") .setMaxResults(10).list(); return adhList; } /** * Method getUnsubmittedDeletedItems. * * @param sess * Session * @return List<DeletedItem> * @throws HibernateException */ @SuppressWarnings("unchecked") public static List<DeletedItem> getUnsubmittedDeletedItems(Session sess) throws HibernateException { List<DeletedItem> delList = sess .createQuery( "from DeletedItem as del where order by del.id asc") .setMaxResults(10).list(); return delList; } /** * Method deleteSubmittedPackageDrugInfos. * * @param s * Session * @param pdList * List<PackageDrugInfo> * @throws HibernateException */ public static void updateSubmittedPackageDrugInfos(Session s, List<PackageDrugInfo> pdList) throws HibernateException { for (PackageDrugInfo pdi : pdList) { pdi.setSentToEkapa(true); s.saveOrUpdate(pdi); } } /** * Method deleteSubmittedAdherenceRecords. * * @param s * Session * @param adList * List<AdherenceRecord> * @throws HibernateException */ public static void deleteSubmittedAdherenceRecords(Session s, List<AdherenceRecord> adList) throws HibernateException { String adDelete = "delete AdherenceRecord where id = :adId"; for (int i = 0; i < adList.size(); i++) { s.createQuery(adDelete).setInteger("adId", adList.get(i).getId()) .executeUpdate(); } } /** * Method deleteSubmittedDeletedItems. * * @param s * Session * @param delList * List<DeletedItem> * @throws HibernateException */ public static void deleteSubmittedDeletedItems(Session s, List<DeletedItem> delList) throws HibernateException { String delDelete = "delete DeletedItem where id = :delId"; for (int i = 0; i < delList.size(); i++) { s.createQuery(delDelete) .setInteger("delId", delList.get(i).getId()) .executeUpdate(); } } /** * Method getPDIforPackagedDrug. * * @param s * Session * @param pd * PackagedDrugs * @return PackageDrugInfo * @throws HibernateException */ public static PackageDrugInfo getPDIforPackagedDrug(Session s, PackagedDrugs pd) throws HibernateException { PackageDrugInfo pdi = null; pdi = (PackageDrugInfo) s.createQuery( "from PackageDrugInfo as pdi where pdi.packagedDrug.id =:pdId") .setInteger("pdId", pd.getId()).setMaxResults(1).uniqueResult(); return pdi; } /** * Method getPDIsForPackage. * * @param s * Session * @param p * Packages * @return List<PackageDrugInfo> * @throws HibernateException */ @SuppressWarnings("unchecked") public static List<PackageDrugInfo> getPDIsForPackage(Session s, Packages p) throws HibernateException { List<PackageDrugInfo> pdiList = s .createQuery( "from PackageDrugInfo as pd where pd.packagedDrug.parentPackage.id =:packId") .setInteger("packId", p.getId()).list(); return pdiList; } /** * Method getAdherenceRecordsForPillCount. * * @param s * Session * @param pc * PillCount * @return AdherenceRecord * @throws HibernateException */ public static AdherenceRecord getAdherenceRecordsForPillCount(Session s, PillCount pc) throws HibernateException { AdherenceRecord adh = null; adh = (AdherenceRecord) s.createQuery( "from AdherenceRecord as ad where ad.pillCountId =:pcId") .setInteger("pcId", pc.getId()).setMaxResults(1).uniqueResult(); return adh; } public static void deletePackageDrugInfosForPackage(Session session, Packages pack) { session.createQuery("delete PackageDrugInfo where packageId = :id") .setString("id", pack.getPackageId()) .executeUpdate(); } }