@Override public void saveOrUpdate(ChannelSeverity channelSeverity) { if (channelSeverity.getSeverityMap() != null) { sessionFactory.getCurrentSession().saveOrUpdate(channelSeverity.getSeverityMap()); } sessionFactory.getCurrentSession().saveOrUpdate(channelSeverity); sessionFactory.getCurrentSession().flush(); sessionFactory.getCurrentSession().refresh(channelSeverity); }
@Override public ChannelSeverity retrieveByCode(ChannelType channelType, String code) { // To avoid case insensitive query in MySQL List<ChannelSeverity> channelSeverities = (List<ChannelSeverity>) sessionFactory .getCurrentSession() .createQuery( "from ChannelSeverity cs where cs.code = :code " + "and cs.channelType = :channelTypeId") .setString("code", code) .setInteger("channelTypeId", channelType.getId()) .list(); if (channelSeverities == null || channelSeverities.size() == 0) return null; for (ChannelSeverity channelSeverity : channelSeverities) { if (code.equals(channelSeverity.getCode())) return channelSeverity; } return null; }
@Override public void updateExistingVulns(List<Integer> channelSeverityIds) { for (Integer channelSeverityId : channelSeverityIds) { ChannelSeverity channelSeverity = retrieveById(channelSeverityId); if (channelSeverity == null) continue; String subquery = "(select finding.vulnerability.id " + "from Finding finding " + "where finding.channelSeverity.id = :channelSeverityId " + "and finding.firstFindingForVuln = true)"; sessionFactory .getCurrentSession() .createQuery( "update Vulnerability vulnerability " + "set genericSeverity = :genericSeverity " + "where id in " + subquery) .setParameter("channelSeverityId", channelSeverityId) .setParameter("genericSeverity", channelSeverity.getSeverityMap().getGenericSeverity()) .executeUpdate(); sessionFactory .getCurrentSession() .createQuery( "update StatisticsCounter counter " + "set currentGenericSeverityId = :genericSeverityId " + "where vulnerabilityId in " + subquery) .setParameter("channelSeverityId", channelSeverityId) .setParameter( "genericSeverityId", channelSeverity.getSeverityMap().getGenericSeverity().getId()) .executeUpdate(); } }