@Override public List<OnmsAlarm> findMatchingAlarms(org.opennms.core.criteria.Criteria criteria) { return alarmDao.findMatching(criteria); } }
@Override public List<OnmsAlarm> findMatchingAlarms(org.opennms.core.criteria.Criteria criteria) { return alarmDao.findMatching(criteria); } }
/** * {@inheritDoc} */ @Transactional @Override public OnmsAlarm[] getMatchingAlarms(OnmsCriteria criteria) { List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); return alarms == null ? new OnmsAlarm[0] : alarms.toArray(new OnmsAlarm[0]); }
@Transactional @Override public OnmsAlarm getAcknowledged(final Criteria criteria) { criteria.addRestriction(org.opennms.core.criteria.restrictions.Restrictions.isNotNull("alarmAckUser")); criteria.setLimit(1); final List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); if (alarms.size() == 0) return null; return alarms.get(0); }
@Override public Map<String, AlarmWrapper> lookup(Set<String> reductionKeys) { if (reductionKeys == null || reductionKeys.isEmpty()) { return new HashMap<>(); } if (reductionKeys.size() <= threshold) { List<OnmsAlarm> alarms = alarmDao.findMatching(new CriteriaBuilder(OnmsAlarm.class).in("reductionKey", reductionKeys).toCriteria()); return alarms.stream().collect(Collectors.toMap(OnmsAlarm::getReductionKey, AlarmWrapperImpl::new)); } else { return alarmDao.findAll().stream() .filter(a -> reductionKeys.contains(a.getReductionKey())) .collect(Collectors.toMap(OnmsAlarm::getReductionKey, AlarmWrapperImpl::new)); } }
@Transactional @Override public OnmsAlarm getUnacknowledged(final Criteria criteria) { criteria.addRestriction(org.opennms.core.criteria.restrictions.Restrictions.isNull("alarmAckUser")); criteria.setLimit(1); final List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); if (alarms.size() == 0) return null; return alarms.get(0); }
/** * {@inheritDoc} */ @Transactional @Override public void unacknowledgeMatchingAlarms(OnmsCriteria criteria, String user) { List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); for (OnmsAlarm alarm : alarms) { OnmsAcknowledgment ack = new OnmsAcknowledgment(alarm, user); ack.setAckAction(AckAction.UNACKNOWLEDGE); m_ackDao.processAck(ack); } }
/** * {@inheritDoc} */ @Transactional @Override public void acknowledgeMatchingAlarms(String user, Date timestamp, OnmsCriteria criteria) { List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); Iterator<OnmsAlarm> alarmsIt = alarms.iterator(); while (alarmsIt.hasNext()) { OnmsAlarm alarm = alarmsIt.next(); OnmsAcknowledgment ack = new OnmsAcknowledgment(alarm, user); ack.setAckTime(timestamp); ack.setAckAction(AckAction.ACKNOWLEDGE); m_ackDao.processAck(ack); } }
@Override public List<OnmsAlarm> doInTransaction(TransactionStatus transactionStatus) { final CriteriaBuilder criteriaBuilder = new CriteriaBuilder(OnmsAlarm.class); criteriaBuilder.alias("node", "node"); criteriaBuilder.ne("node.type", "D"); criteriaBuilder.limit(100); criteriaBuilder.distinct(); List<String> parameters = new ArrayList<>(rowCategories.stream().map(OnmsCategory::getName).collect(Collectors.toList())); parameters.addAll(colCategories.stream().map(OnmsCategory::getName).collect(Collectors.toList())); Type[] types = new Type[parameters.size()]; Arrays.fill(types, Type.STRING); // Restrict on OnmsAlarm.nodeId criteriaBuilder.sql( createQuery("{alias}.nodeId", rowCategories, colCategories), parameters.toArray(new String[parameters.size()]), types ); return m_alarmDao.findMatching(criteriaBuilder.toCriteria()); } });
@Override public List<OnmsAlarm> doInTransaction(TransactionStatus transactionStatus) { final CriteriaBuilder criteriaBuilder = new CriteriaBuilder(OnmsAlarm.class); criteriaBuilder.alias("node", "node"); criteriaBuilder.ne("node.type", "D"); criteriaBuilder.limit(100); criteriaBuilder.distinct(); List<String> parameters = new ArrayList<>(rowCategories.stream().map(OnmsCategory::getName).collect(Collectors.toList())); parameters.addAll(colCategories.stream().map(OnmsCategory::getName).collect(Collectors.toList())); Type[] types = new Type[parameters.size()]; Arrays.fill(types, Type.STRING); // Restrict on OnmsAlarm.nodeId criteriaBuilder.sql( createQuery("{alias}.nodeId", rowCategories, colCategories), parameters.toArray(new String[parameters.size()]), types ); return m_alarmDao.findMatching(criteriaBuilder.toCriteria()); } });
/** * {@inheritDoc} */ @Transactional @Override public void clearAlarms(int[] alarmIds, String user, Date timestamp) { OnmsCriteria criteria = new OnmsCriteria(OnmsAlarm.class); criteria.add(Restrictions.in("id", Arrays.asList(ArrayUtils.toObject(alarmIds)))); List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); Iterator<OnmsAlarm> alarmsIt = alarms.iterator(); while (alarmsIt.hasNext()) { OnmsAlarm alarm = alarmsIt.next(); OnmsAcknowledgment ack = new OnmsAcknowledgment(alarm, user); ack.setAckTime(timestamp); ack.setAckAction(AckAction.CLEAR); m_ackDao.processAck(ack); } }
/** * {@inheritDoc} */ @Transactional @Override public void escalateAlarms(int[] alarmIds, String user, Date timestamp) { OnmsCriteria criteria = new OnmsCriteria(OnmsAlarm.class); criteria.add(Restrictions.in("id", Arrays.asList(ArrayUtils.toObject(alarmIds)))); List<OnmsAlarm> alarms = m_alarmDao.findMatching(criteria); Iterator<OnmsAlarm> alarmsIt = alarms.iterator(); while (alarmsIt.hasNext()) { OnmsAlarm alarm = alarmsIt.next(); OnmsAcknowledgment ack = new OnmsAcknowledgment(alarm, user); ack.setAckTime(timestamp); ack.setAckAction(AckAction.ESCALATE); m_ackDao.processAck(ack); } }
public OnmsAlarm getAlarm(int nodeId) { CriteriaBuilder builder = new CriteriaBuilder(OnmsAlarm.class); builder.alias("node", "node"); builder.ne("severity", OnmsSeverity.CLEARED); builder.orderBy("severity").desc(); builder.eq("node.id", nodeId); builder.limit(Integer.valueOf(1)); List<OnmsAlarm> alarms = alarmDao.findMatching(builder.toCriteria()); return alarms == null || alarms.isEmpty() ? null : alarms.get(0); } }
public OnmsAlarm getAlarm(int nodeId) { CriteriaBuilder builder = new CriteriaBuilder(OnmsAlarm.class); builder.alias("node", "node"); builder.ne("severity", OnmsSeverity.CLEARED); builder.orderBy("severity").desc(); builder.eq("node.id", nodeId); builder.limit(Integer.valueOf(1)); List<OnmsAlarm> alarms = alarmDao.findMatching(builder.toCriteria()); return alarms == null || alarms.isEmpty() ? null : alarms.get(0); } }
protected List<OnmsAlarm> getLinkdEdgeDownAlarms() { org.opennms.core.criteria.Criteria criteria = new org.opennms.core.criteria.Criteria(OnmsAlarm.class); criteria.addRestriction(new EqRestriction("uei", EventConstants.TOPOLOGY_LINK_DOWN_EVENT_UEI)); criteria.addRestriction(new NeRestriction("severity", OnmsSeverity.CLEARED)); return getAlarmDao().findMatching(criteria); }
/** * Returns the alarms defined by this dashlet. * * @return the list of alarms */ private List<OnmsAlarm> getAlarms() { final CriteriaBuilder alarmCb = new CriteriaBuilder(OnmsAlarm.class); alarmCb.alias("node", "node"); alarmCb.alias("node.categories", "category"); alarmCb.alias("lastEvent", "event"); String criteria = getDashletSpec().getParameters().get("criteria"); m_criteriaBuilderHelper.parseConfiguration(alarmCb, criteria); alarmCb.fetch("firstEvent", Fetch.FetchType.EAGER); alarmCb.fetch("lastEvent", Fetch.FetchType.EAGER); /** * due to restrictions in the criteria api it's quite hard * to use distinct and orderBy together, so I apply a workaround * to avoid alarmCb.distinct(); */ List<OnmsAlarm> onmsAlarmList = m_alarmDao.findMatching(alarmCb.toCriteria()); Map<Integer, OnmsAlarm> onmsAlarmMap = new LinkedHashMap<>(); for (OnmsAlarm onmsAlarm : onmsAlarmList) { if (!onmsAlarmMap.containsKey(onmsAlarm.getId())) { onmsAlarmMap.put(onmsAlarm.getId(), onmsAlarm); } } return Lists.newArrayList(onmsAlarmMap.values()); }
/** * Returns the alarms defined by this dashlet. * * @return the list of alarms */ private List<OnmsAlarm> getAlarms() { final CriteriaBuilder alarmCb = new CriteriaBuilder(OnmsAlarm.class); alarmCb.alias("node", "node"); alarmCb.alias("node.categories", "category"); alarmCb.alias("lastEvent", "event"); String criteria = getDashletSpec().getParameters().get("criteria"); m_criteriaBuilderHelper.parseConfiguration(alarmCb, criteria); alarmCb.fetch("firstEvent", Fetch.FetchType.EAGER); alarmCb.fetch("lastEvent", Fetch.FetchType.EAGER); /** * due to restrictions in the criteria api it's quite hard * to use distinct and orderBy together, so I apply a workaround * to avoid alarmCb.distinct(); */ List<OnmsAlarm> onmsAlarmList = m_alarmDao.findMatching(alarmCb.toCriteria()); Map<Integer, OnmsAlarm> onmsAlarmMap = new LinkedHashMap<>(); for (OnmsAlarm onmsAlarm : onmsAlarmList) { if (!onmsAlarmMap.containsKey(onmsAlarm.getId())) { onmsAlarmMap.put(onmsAlarm.getId(), onmsAlarm); } } return Lists.newArrayList(onmsAlarmMap.values()); }
/** * <p>fetchUnclearedHypericAlarms</p> * * @return a {@link java.util.List} object. */ public List<OnmsAlarm> fetchUnclearedHypericAlarms() { // Query for existing, unacknowledged alarms in OpenNMS that were generated based on Hyperic alerts Criteria criteria = new Criteria(OnmsAlarm.class); // criteria.add(Restrictions.isNull("alarmAckUser")); // Restrict to Hyperic alerts criteria.addRestriction(new EqRestriction("uei", "uei.opennms.org/external/hyperic/alert")); // Only consider alarms that are above severity NORMAL // {@see org.opennms.netmgt.model.OnmsSeverity} criteria.addRestriction(new GtRestriction("severity", OnmsSeverity.NORMAL)); // TODO Figure out how to query by parameters (maybe necessary) // Query list of outstanding alerts with remote platform identifiers return m_alarmDao.findMatching(criteria); }