package qa.qcri.aidr.analysis.facade.imp; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Restrictions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import qa.qcri.aidr.analysis.entity.ConfidenceData; import qa.qcri.aidr.analysis.entity.ConfidenceDataPK; import qa.qcri.aidr.analysis.facade.ConfidenceStatisticsResourceFacade; import qa.qcri.aidr.common.values.ReturnCode; /** * This class is not used at the moment. */ @Stateless(name = "ConfidenceStatisticsResourceFacadeImp") public class ConfidenceStatisticsResourceFacadeImp implements ConfidenceStatisticsResourceFacade { private static Logger logger = LoggerFactory.getLogger(ConfidenceStatisticsResourceFacadeImp.class); @PersistenceContext(unitName = "qa.qcri.aidr.analysis-EJBS") private EntityManager em; @Override public EntityManager getEntityManager() { try { return em; } catch (Exception e) { throw new HibernateException("getEntityManager failed"); } } @Override public int setEntityManager(EntityManager em) { try { if (null == this.em) { this.em = em; logger.info("EntityManager set to new value: " + this.em); return 1; } else logger.info("Skipping setter, since EntityManager already initialized to :" + this.em); return 0; } catch (Exception e) { logger.error("EntityManager setting exception : " + em); logger.error("exception", e); throw new HibernateException("setEntityManager failed"); } } @Override public Session getCurrentSession() { try { return em.unwrap(Session.class); } catch (Exception e) { logger.error("exception: ", e); e.printStackTrace(); throw new HibernateException("getCurrentSession failed"); } } @Override public ReturnCode writeData(ConfidenceData confData) { try { em.persist(confData); return ReturnCode.SUCCESS; } catch (Exception e) { logger.error("Failure in persisting conf data for: " + confData.getCrisisCode() + ", " + confData.getAttributeCode() + ", " + confData.getLabelCode() + ", " + confData.getTimestamp() + ", " + confData.getGranularity() + ", " + confData.getBin() + ": " + confData.getCount(), e); return ReturnCode.ERROR; } } @Override public ConfidenceData getSingleDataByPK(ConfidenceDataPK confDataPK) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", confDataPK.getCrisisCode())) .add(Restrictions.eq("timestamp", confDataPK.getTimestamp())) .add(Restrictions.eq("granularity", confDataPK.getGranularity())) .add(Restrictions.eq("attributeCode", confDataPK.getAttributeCode())) .add(Restrictions.eq("labelCode", confDataPK.getLabelCode())) .add(Restrictions.eq("bin", confDataPK.getBin())); criteria.add(criterion); try { ConfidenceData obj = (ConfidenceData) criteria.uniqueResult(); return obj; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataByCrisis(String crisisCode) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); criteria.add(Restrictions.eq("crisisCode", crisisCode)); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataByCrisisAttributeLabel(String crisisCode, String attributeCode, String labelCode) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataByCrisisAttributeLabelGranularity(String crisisCode, String attributeCode, String labelCode, Long granularity) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.eq("granularity", granularity)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataAfterTimestamp(String crisisCode, String attributeCode, String labelCode, Long timestamp) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("timestamp", timestamp)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataAfterTimestampGranularity(String crisisCode, String attributeCode, String labelCode, Long timestamp, Long granularity) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("timestamp", timestamp)) .add(Restrictions.eq("granularity", granularity)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataBeforeTimestamp(String crisisCode, String attributeCode, String labelCode, Long timestamp) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.le("timestamp", timestamp)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataBeforeTimestampGranularity(String crisisCode, String attributeCode, String labelCode, Long timestamp, Long granularity) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.le("timestamp", timestamp)) .add(Restrictions.eq("granularity", granularity)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataInInterval(String crisisCode, String attributeCode, String labelCode, Long timestamp1, Long timestamp2) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("timestamp", timestamp1)) .add(Restrictions.le("timestamp", timestamp2)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataInIntervalWithGranularity(String crisisCode, String attributeCode, String labelCode, Long timestamp1, Long timestamp2, Long granularity) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.eq("granularity", granularity)) .add(Restrictions.ge("timestamp", timestamp1)) .add(Restrictions.le("timestamp", timestamp2)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } //////////////////////////////////////////////// // Bin related /////////////////////////////////////////////// @Override public List<ConfidenceData> getDataByCrisisWithBin(String crisisCode, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.ge("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataByCrisisAttributeLabelWithBin(String crisisCode, String attributeCode, String labelCode, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataByCrisisAttributeLabelGranularityWithBin(String crisisCode, String attributeCode, String labelCode, Long granularity, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.eq("granularity", granularity)) .add(Restrictions.ge("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataAfterTimestampWithBin(String crisisCode, String attributeCode, String labelCode, Long timestamp, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("timestamp", timestamp)) .add(Restrictions.ge("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataAfterTimestampGranularityWithBin(String crisisCode, String attributeCode, String labelCode, Long timestamp, Long granularity, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("timestamp", timestamp)) .add(Restrictions.eq("granularity", granularity)) .add(Restrictions.ge("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataBeforeTimestampWithBin(String crisisCode, String attributeCode, String labelCode, Long timestamp, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.le("timestamp", timestamp)) .add(Restrictions.ge("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataBeforeTimestampGranularityWithBin(String crisisCode, String attributeCode, String labelCode, Long timestamp, Long granularity, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.le("timestamp", timestamp)) .add(Restrictions.eq("granularity", granularity)) .add(Restrictions.ge("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataInIntervalWithBin(String crisisCode, String attributeCode, String labelCode, Long timestamp1, Long timestamp2, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("timestamp", timestamp1)) .add(Restrictions.le("timestamp", timestamp2)) .add(Restrictions.ge("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataInIntervalWithGranularityWithBin(String crisisCode, String attributeCode, String labelCode, Long timestamp1, Long timestamp2, Long granularity, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.eq("granularity", granularity)) .add(Restrictions.ge("timestamp", timestamp1)) .add(Restrictions.le("timestamp", timestamp2)) .add(Restrictions.ge("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataByCrisisInBin(String crisisCode, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataByCrisisAttributeLabelInBin(String crisisCode, String attributeCode, String labelCode, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.eq("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataByCrisisAttributeLabelGranularityInBin(String crisisCode, String attributeCode, String labelCode, Long granularity, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.eq("granularity", granularity)) .add(Restrictions.eq("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataAfterTimestampInBin(String crisisCode, String attributeCode, String labelCode, Long timestamp, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("timestamp", timestamp)) .add(Restrictions.eq("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataAfterTimestampGranularityInBin(String crisisCode, String attributeCode, String labelCode, Long timestamp, Long granularity, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("timestamp", timestamp)) .add(Restrictions.eq("granularity", granularity)) .add(Restrictions.eq("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataBeforeTimestampInBin(String crisisCode, String attributeCode, String labelCode, Long timestamp, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.le("timestamp", timestamp)) .add(Restrictions.eq("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataBeforeTimestampGranularityInBin(String crisisCode, String attributeCode, String labelCode, Long timestamp, Long granularity, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.le("timestamp", timestamp)) .add(Restrictions.eq("granularity", granularity)) .add(Restrictions.eq("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataInIntervalInBin(String crisisCode, String attributeCode, String labelCode, Long timestamp1, Long timestamp2, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.ge("timestamp", timestamp1)) .add(Restrictions.le("timestamp", timestamp2)) .add(Restrictions.eq("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } @Override public List<ConfidenceData> getDataInIntervalWithGranularityInBin(String crisisCode, String attributeCode, String labelCode, Long timestamp1, Long timestamp2, Long granularity, Integer bin) { Criteria criteria = getCurrentSession().createCriteria(ConfidenceData.class); Criterion criterion = Restrictions.conjunction() .add(Restrictions.eq("crisisCode", crisisCode)) .add(Restrictions.eq("attributeCode", attributeCode)) .add(Restrictions.eq("labelCode", labelCode)) .add(Restrictions.eq("granularity", granularity)) .add(Restrictions.ge("timestamp", timestamp1)) .add(Restrictions.le("timestamp", timestamp2)) .add(Restrictions.eq("bin", bin)); criteria.add(criterion); try { List<ConfidenceData> objList = (List<ConfidenceData>) criteria.list(); return objList; } catch (HibernateException e) { logger.error("exception", e); e.printStackTrace(); } return null; } }