use of org.opennms.features.geolocation.api.GeolocationInfo in project opennms by OpenNMS.
the class DefaultGeolocationServiceIT method verifyMerging.
@Test
@Transactional
public void verifyMerging() {
// Set coordinates for all
nodeDao.findAll().forEach(n -> {
n.getAssetRecord().getGeolocation().setLongitude(coordinates.getLongitude());
n.getAssetRecord().getGeolocation().setLatitude(coordinates.getLatitude());
nodeDao.saveOrUpdate(n);
});
// Query
GeolocationQuery query = new GeolocationQueryBuilder().withStatusCalculationStrategy(StatusCalculationStrategy.Alarms).build();
// We do not have any alarms, therefore all nodes should be "NORMAL"
List<GeolocationInfo> locations = geolocationService.getLocations(query);
Assert.assertEquals(nodeDao.countAll(), locations.size());
locations.forEach(l -> Assert.assertEquals("Normal", l.getSeverityInfo().getLabel()));
// Add an alarm for one node and try again
alarmDao.save(TestUtils.createAlarm(databasePopulator.getNode1(), OnmsSeverity.MAJOR, distPollerDao.whoami()));
locations = geolocationService.getLocations(query);
Assert.assertEquals(nodeDao.countAll(), locations.size());
locations.forEach(l -> {
if (l.getNodeInfo().getNodeId() == databasePopulator.getNode1().getId()) {
Assert.assertEquals("Major", l.getSeverityInfo().getLabel());
} else {
Assert.assertEquals("Normal", l.getSeverityInfo().getLabel());
}
});
}
use of org.opennms.features.geolocation.api.GeolocationInfo in project opennms by OpenNMS.
the class LocationInfoPanelItemProvider method getContributions.
@Override
public Collection<? extends InfoPanelItem> getContributions(GraphContainer container) {
final List<Vertex> vertices = new ArrayList<>(container.getGraph().getDisplayVertices());
final Set<Integer> nodeIds = vertices.stream().filter(v -> v.getNodeID() != null).map(v -> v.getNodeID()).collect(Collectors.toSet());
if (nodeIds.isEmpty()) {
return Collections.emptyList();
}
final List<GeolocationInfo> locations = geolocationService.getLocations(new GeolocationQueryBuilder().withNodeIds(nodeIds).withStatusCalculationStrategy(StatusCalculationStrategy.None).build());
final List<Marker> markers = locations.stream().filter(locationInfo -> locationInfo.getCoordinates() != null).map(locationInfo -> {
final Vertex vertex = vertices.stream().filter(v -> v.getNodeID() != null && locationInfo.getNodeInfo().getNodeId() == v.getNodeID()).findFirst().get();
return new Marker(locationInfo.getCoordinates(), createTooltip(vertex, locationInfo.getAddressInfo()), container.getSelectionManager().isVertexRefSelected(vertex));
}).collect(Collectors.toList());
if (!markers.isEmpty()) {
final LocationConfiguration config = new LocationConfiguration().withTileLayer(geolocationConfiguration.getTileServerUrl()).withMarker(markers).withInitialZoom(10).withLayerOptions(geolocationConfiguration.getOptions());
final LocationComponent locationComponent = new LocationComponent(config, "mapId-" + getClass().getSimpleName().toLowerCase());
locationComponent.setWidth(300, Sizeable.Unit.PIXELS);
locationComponent.setHeight(300, Sizeable.Unit.PIXELS);
return Collections.singleton(new DefaultInfoPanelItem().withTitle(String.format("Geolocation (%d/%d)", markers.size(), vertices.size())).withOrder(1).withComponent(locationComponent));
}
return Collections.emptyList();
}
Aggregations