use of org.opennms.features.topology.api.SelectionManager in project opennms by OpenNMS.
the class OperationManagerTest method getMenuBar.
private static TopologyMenuBar getMenuBar(OperationManager operationManager) {
// Mock all the things
GraphContainer graphContainerMock = Mockito.mock(GraphContainer.class);
SelectionManager selectionManagerMock = Mockito.mock(SelectionManager.class);
Mockito.when(graphContainerMock.getSelectionManager()).thenReturn(selectionManagerMock);
Mockito.when(selectionManagerMock.getSelectedVertexRefs()).thenReturn(new ArrayList<>());
// Create menu bar
TopologyMenuBar topologyMenuBar = new TopologyMenuBar();
topologyMenuBar.updateMenu(graphContainerMock, null, operationManager);
return topologyMenuBar;
}
use of org.opennms.features.topology.api.SelectionManager in project opennms by OpenNMS.
the class BundleContextHistoryManagerTest method setBehaviour.
private void setBehaviour(GraphContainer graphContainerMock) {
MapViewManager mapViewManagerMock = Mockito.mock(MapViewManager.class);
SelectionManager selectionManagerMock = Mockito.mock(SelectionManager.class);
Mockito.when(mapViewManagerMock.getCurrentBoundingBox()).thenReturn(new BoundingBox(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE));
Mockito.when(selectionManagerMock.getSelectedVertexRefs()).thenReturn(new ArrayList<VertexRef>());
Mockito.when(graphContainerMock.getGraph()).thenReturn(graphMock);
Mockito.when(graphContainerMock.getSemanticZoomLevel()).thenReturn(0);
Mockito.when(graphContainerMock.getLayoutAlgorithm()).thenReturn(new CircleLayoutAlgorithm());
Mockito.when(graphContainerMock.getMapViewManager()).thenReturn(mapViewManagerMock);
Mockito.when(graphContainerMock.getSelectionManager()).thenReturn(selectionManagerMock);
Mockito.when(graphContainerMock.getTopologyServiceClient()).thenReturn(topologyServiceClientMock);
Mockito.doAnswer(invocationOnMock -> capturedCriteria.toArray(new Criteria[capturedCriteria.size()])).when(graphContainerMock).getCriteria();
Mockito.doAnswer(invocationOnMock -> {
capturedCriteria.clear();
return null;
}).when(graphContainerMock).clearCriteria();
Mockito.doAnswer(invocation -> {
if (invocation.getArguments()[0] != null && invocation.getArguments()[0] instanceof Criteria) {
capturedCriteria.add((Criteria) invocation.getArguments()[0]);
}
return null;
}).when(graphContainerMock).addCriteria(Matchers.any(Criteria.class));
}
use of org.opennms.features.topology.api.SelectionManager in project opennms by OpenNMS.
the class ShowNCSPathOperation method execute.
@Override
public void execute(List<VertexRef> targets, final OperationContext operationContext) {
// Get the current NCS criteria from here you can get the foreignIds foreignSource and deviceA and Z
for (Criteria criterium : operationContext.getGraphContainer().getCriteria()) {
try {
NCSServiceCriteria ncsCriterium = (NCSServiceCriteria) criterium;
if (ncsCriterium.getServiceCount() > 0) {
m_storedCriteria = ncsCriterium;
break;
}
} catch (ClassCastException e) {
}
}
final VertexRef defaultVertRef = targets.get(0);
final SelectionManager selectionManager = operationContext.getGraphContainer().getSelectionManager();
// selectionManager.getSelectedVertexRefs();
final Collection<VertexRef> vertexRefs = getVertexRefsForNCSService(m_storedCriteria);
final UI mainWindow = operationContext.getMainWindow();
final Window ncsPathPrompt = new Window("Show NCS Path");
ncsPathPrompt.setModal(true);
ncsPathPrompt.setResizable(false);
ncsPathPrompt.setWidth("300px");
ncsPathPrompt.setHeight("220px");
// Items used in form field
final PropertysetItem item = new PropertysetItem();
item.addItemProperty("Device A", new ObjectProperty<String>("", String.class));
item.addItemProperty("Device Z", new ObjectProperty<String>("", String.class));
FormFieldFactory fieldFactory = new FormFieldFactory() {
private static final long serialVersionUID = 1L;
@Override
public Field<?> createField(Item item, Object propertyId, Component uiContext) {
String pid = (String) propertyId;
ComboBox select = new ComboBox();
for (VertexRef vertRef : vertexRefs) {
select.addItem(vertRef.getId());
select.setItemCaption(vertRef.getId(), vertRef.getLabel());
}
select.setNewItemsAllowed(false);
select.setNullSelectionAllowed(false);
select.setImmediate(true);
select.setScrollToSelectedItem(true);
if ("Device A".equals(pid)) {
select.setCaption("Device A");
} else {
select.setCaption("Device Z");
}
return select;
}
};
final Form promptForm = new Form() {
@Override
public void commit() {
String deviceA = (String) getField("Device A").getValue();
String deviceZ = (String) getField("Device Z").getValue();
if (deviceA.equals(deviceZ)) {
Notification.show("Device A and Device Z cannot be the same", Notification.Type.WARNING_MESSAGE);
throw new Validator.InvalidValueException("Device A and Device Z cannot be the same");
}
OnmsNode nodeA = m_nodeDao.get(Integer.valueOf(deviceA));
String deviceANodeForeignId = nodeA.getForeignId();
// Use nodeA's foreignSource, deviceZ should have the same foreignSource. It's an assumption
// which might need to changed in the future. Didn't want to hard code it it "space" if they
// change it in the future
String nodeForeignSource = nodeA.getForeignSource();
String deviceZNodeForeignId = m_nodeDao.get(Integer.valueOf(deviceZ)).getForeignId();
NCSComponent ncsComponent = m_dao.get(m_storedCriteria.getServiceIds().get(0));
String foreignSource = ncsComponent.getForeignSource();
String foreignId = ncsComponent.getForeignId();
String serviceName = ncsComponent.getName();
try {
NCSServicePath path = getNcsPathProvider().getPath(foreignId, foreignSource, deviceANodeForeignId, deviceZNodeForeignId, nodeForeignSource, serviceName);
if (path.getStatusCode() == 200) {
NCSServicePathCriteria criteria = new NCSServicePathCriteria(path.getEdges());
m_serviceManager.registerCriteria(criteria, operationContext.getGraphContainer().getSessionId());
// Select only the vertices in the path
selectionManager.setSelectedVertexRefs(path.getVertices());
} else {
LoggerFactory.getLogger(this.getClass()).warn("An error occured while retrieving the NCS Path, Juniper NetworkAppsApi send error code: " + path.getStatusCode());
mainWindow.showNotification("An error occurred while retrieving the NCS Path\nStatus Code: " + path.getStatusCode(), Notification.TYPE_ERROR_MESSAGE);
}
} catch (Exception e) {
if (e.getCause() instanceof ConnectException) {
LoggerFactory.getLogger(this.getClass()).warn("Connection Exception Occurred while retreiving path {}", e);
Notification.show("Connection Refused when attempting to reach the NetworkAppsApi", Notification.Type.TRAY_NOTIFICATION);
} else if (e.getCause() instanceof HttpOperationFailedException) {
HttpOperationFailedException httpException = (HttpOperationFailedException) e.getCause();
if (httpException.getStatusCode() == 401) {
LoggerFactory.getLogger(this.getClass()).warn("Authentication error when connecting to NetworkAppsApi {}", httpException);
Notification.show("Authentication error when connecting to NetworkAppsApi, please check the username and password", Notification.Type.TRAY_NOTIFICATION);
} else {
LoggerFactory.getLogger(this.getClass()).warn("An error occured while retrieving the NCS Path {}", httpException);
Notification.show("An error occurred while retrieving the NCS Path\n" + httpException.getMessage(), Notification.Type.TRAY_NOTIFICATION);
}
} else if (e.getCause() instanceof Validator.InvalidValueException) {
Notification.show(e.getMessage(), Notification.Type.ERROR_MESSAGE);
} else {
LoggerFactory.getLogger(this.getClass()).warn("Exception Occurred while retreiving path {}", e);
Notification.show("An error occurred while calculating the path please check the karaf.log file for the exception: \n" + e.getMessage(), Notification.Type.TRAY_NOTIFICATION);
}
}
}
};
promptForm.setBuffered(true);
promptForm.setFormFieldFactory(fieldFactory);
promptForm.setItemDataSource(item);
Button ok = new Button("OK");
ok.addClickListener(new ClickListener() {
private static final long serialVersionUID = -2742886456007926688L;
@Override
public void buttonClick(ClickEvent event) {
promptForm.commit();
mainWindow.removeWindow(ncsPathPrompt);
}
});
promptForm.getFooter().addComponent(ok);
Button cancel = new Button("Cancel");
cancel.addClickListener(new ClickListener() {
private static final long serialVersionUID = -9026067481179449095L;
@Override
public void buttonClick(ClickEvent event) {
mainWindow.removeWindow(ncsPathPrompt);
}
});
promptForm.getFooter().addComponent(cancel);
ncsPathPrompt.setContent(promptForm);
mainWindow.addWindow(ncsPathPrompt);
promptForm.getField("Device A").setValue(defaultVertRef.getId());
}
Aggregations