public GeolocationQueryBuilder withIncludeAcknowledgedAlarms(boolean includeAcknowledgedAlarms) { query.setIncludeAcknowledgedAlarms(includeAcknowledgedAlarms); return this; }
public GeolocationQueryBuilder withSeverity(GeolocationSeverity severity) { query.setSeverity(severity); return this; }
public GeolocationQueryBuilder withStatusCalculationStrategy(StatusCalculationStrategy statusCalculationStrategy) { query.setStatusCalculationStrategy(statusCalculationStrategy); return this; }
private static GeolocationQuery toQuery(GeolocationQueryDTO queryDTO) { if (queryDTO != null) { GeolocationQuery query = new GeolocationQuery(); if (queryDTO.getSeverityFilter() != null) { query.setSeverity(getEnum(queryDTO.getSeverityFilter(), GeolocationSeverity.values())); } if (queryDTO.getStrategy() != null) { query.setStatusCalculationStrategy(getEnum(queryDTO.getStrategy(), StatusCalculationStrategy.values())); } query.setIncludeAcknowledgedAlarms(queryDTO.isIncludeAcknowledgedAlarms()); return query; } return null; }
private Status calculateStatus(GeolocationQuery query, Set<Integer> nodeIds) { final NodeStatusCalculatorConfig nodeStatusCalculatorConfig = new NodeStatusCalculatorConfig(); nodeStatusCalculatorConfig.setIncludeAcknowledgedAlarms(query.isIncludeAcknowledgedAlarms()); nodeStatusCalculatorConfig.setLocation(query.getLocation()); if (query.getSeverity() != null) { final OnmsSeverity severity = OnmsSeverity.get(query.getSeverity().getId()); final List<OnmsSeverity> severityFilter = Arrays.stream(OnmsSeverity.values()).filter(s -> s.isGreaterThanOrEqual(severity)).collect(Collectors.toList()); nodeStatusCalculatorConfig.setSeverities(severityFilter); } nodeStatusCalculatorConfig.setCalculationStrategy(NodeStatusCalculationStrategy.None); if (query.getStatusCalculationStrategy() != null) { nodeStatusCalculatorConfig.setCalculationStrategy(NodeStatusCalculationStrategy.valueOf(query.getStatusCalculationStrategy().name())); } nodeStatusCalculatorConfig.setNodeIds(nodeIds); final Status status = nodeStatusCalculator.calculateStatus(nodeStatusCalculatorConfig); return status; }
private List<OnmsNode> getNodes(GeolocationQuery query) { CriteriaBuilder criteriaBuilder = new CriteriaBuilder(OnmsNode.class) .alias("assetRecord", "assetRecord") .and( Restrictions.isNotNull("assetRecord"), Restrictions.isNotNull("assetRecord.geolocation") ); if (query.getLocation() != null) { criteriaBuilder.and(Restrictions.eq("location", query.getLocation())); } if (!query.getNodeIds().isEmpty()) { criteriaBuilder.in("id", query.getNodeIds()); } return genericPersistenceAccessor.findMatching(criteriaBuilder.toCriteria()); }
@Override public List<GeolocationInfo> getLocations(GeolocationQuery query) { if (query == null) { return new ArrayList<>(); } final List<OnmsNode> nodes = getNodes(query); final List<GeolocationInfo> nodesWithCoordinates = nodes.stream() .filter(n -> geoLocation(n) != null && geoLocation(n).getLongitude() != null && geoLocation(n).getLatitude() != null) // Avoid including -inf values, just in case. See NMS-9338 .filter(n -> geoLocation(n).getLatitude() != Double.NEGATIVE_INFINITY && geoLocation(n).getLongitude() != Double.NEGATIVE_INFINITY) .map(this::convert) .collect(Collectors.toList()); if (query.getStatusCalculationStrategy() != null) { applyStatus(query, nodesWithCoordinates); } if (query.getSeverity() != null) { OnmsSeverity severity = OnmsSeverity.get(query.getSeverity().getId()); return nodesWithCoordinates.stream() .filter(n -> severity.getId() <= n.getSeverityInfo().getId()) .collect(Collectors.toList()); } return nodesWithCoordinates; }
public GeolocationQueryBuilder withLocation(String location) { query.setLocation(location); return this; }
private Status calculateStatus(GeolocationQuery query, Set<Integer> nodeIds) { final NodeStatusCalculatorConfig nodeStatusCalculatorConfig = new NodeStatusCalculatorConfig(); nodeStatusCalculatorConfig.setIncludeAcknowledgedAlarms(query.isIncludeAcknowledgedAlarms()); nodeStatusCalculatorConfig.setLocation(query.getLocation()); if (query.getSeverity() != null) { final OnmsSeverity severity = OnmsSeverity.get(query.getSeverity().getId()); final List<OnmsSeverity> severityFilter = Arrays.stream(OnmsSeverity.values()).filter(s -> s.isGreaterThanOrEqual(severity)).collect(Collectors.toList()); nodeStatusCalculatorConfig.setSeverities(severityFilter); } nodeStatusCalculatorConfig.setCalculationStrategy(NodeStatusCalculationStrategy.None); if (query.getStatusCalculationStrategy() != null) { nodeStatusCalculatorConfig.setCalculationStrategy(NodeStatusCalculationStrategy.valueOf(query.getStatusCalculationStrategy().name())); } nodeStatusCalculatorConfig.setNodeIds(nodeIds); final Status status = nodeStatusCalculator.calculateStatus(nodeStatusCalculatorConfig); return status; }
private List<OnmsNode> getNodes(GeolocationQuery query) { CriteriaBuilder criteriaBuilder = new CriteriaBuilder(OnmsNode.class) .alias("assetRecord", "assetRecord") .and( Restrictions.isNotNull("assetRecord"), Restrictions.isNotNull("assetRecord.geolocation") ); if (query.getLocation() != null) { criteriaBuilder.and(Restrictions.eq("location", query.getLocation())); } if (!query.getNodeIds().isEmpty()) { criteriaBuilder.in("id", query.getNodeIds()); } return genericPersistenceAccessor.findMatching(criteriaBuilder.toCriteria()); }
@Override public List<GeolocationInfo> getLocations(GeolocationQuery query) { if (query == null) { return new ArrayList<>(); } final List<OnmsNode> nodes = getNodes(query); final List<GeolocationInfo> nodesWithCoordinates = nodes.stream() .filter(n -> geoLocation(n) != null && geoLocation(n).getLongitude() != null && geoLocation(n).getLatitude() != null) // Avoid including -inf values, just in case. See NMS-9338 .filter(n -> geoLocation(n).getLatitude() != Double.NEGATIVE_INFINITY && geoLocation(n).getLongitude() != Double.NEGATIVE_INFINITY) .map(this::convert) .collect(Collectors.toList()); if (query.getStatusCalculationStrategy() != null) { applyStatus(query, nodesWithCoordinates); } if (query.getSeverity() != null) { OnmsSeverity severity = OnmsSeverity.get(query.getSeverity().getId()); return nodesWithCoordinates.stream() .filter(n -> severity.getId() <= n.getSeverityInfo().getId()) .collect(Collectors.toList()); } return nodesWithCoordinates; }