public SavedHistory(GraphContainer graphContainer, Collection<HistoryOperation> operations) { this( graphContainer.getSemanticZoomLevel(), graphContainer.getMapViewManager().getCurrentBoundingBox(), saveLocations(graphContainer.getGraph()), getUnmodifiableSet(graphContainer.getSelectionManager().getSelectedVertexRefs()), getFocusVertices(graphContainer), getOperationSettings(graphContainer, operations), getSearchQueries(graphContainer.getCriteria())); }
private void toggle(GraphContainer container) { BusinessServicesHideLeafsCriteria showLeafCriteria = findShowLeafCriteria(container); if (showLeafCriteria == null) { container.addCriteria(new BusinessServicesHideLeafsCriteria()); } else { container.removeCriteria(showLeafCriteria); } container.redoLayout(); } }
@Override protected VertexRef findSingleSelectedItem(GraphContainer container) { Collection<VertexRef> selectedVertexRefs = container.getSelectionManager().getSelectedVertexRefs(); if (selectedVertexRefs.size() == 1) { final VertexRef vertexRef = selectedVertexRefs.iterator().next(); Vertex vertex = container.getBaseTopology().getVertex(vertexRef); return vertex; } return null; } }
@Override public void setSemanticZoomLevel(int semanticZoomLevel) { m_graphContainer.setSemanticZoomLevel(semanticZoomLevel); m_graphContainer.redoLayout(); }
private void removeHopCriteria(GraphContainer container) { Criteria[] currentCriteria = container.getCriteria(); for (Criteria c : Arrays.copyOf(currentCriteria, currentCriteria.length)) { if (c instanceof DefaultVertexHopCriteria) { container.removeCriteria(c); } } }
@Override public void execute(List<VertexRef> targets, OperationContext operationContext) { final GraphContainer graphContainer = operationContext.getGraphContainer(); final Set<VertexHopGraphProvider.VertexHopCriteria> focusCriteria = graphContainer.findCriteria(VertexHopGraphProvider.VertexHopCriteria.class); for (VertexHopGraphProvider.VertexHopCriteria eachFocusCriteria : focusCriteria) { graphContainer.removeCriteria(eachFocusCriteria); } graphContainer.redoLayout(); }
public void apply(GraphContainer graphContainer, Collection<HistoryOperation> operations, ServiceLocator serviceLocator) { LOG.debug("Applying " + toString()); graphContainer.clearCriteria(); if (searchProvider.getSearchProviderNamespace().equals(searchQuery.getNamespace()) || searchProvider.contributesTo(searchQuery.getNamespace())) { Criteria searchCriteria = ((HistoryAwareSearchProvider)searchProvider).buildCriteriaFromQuery(searchQuery, graphContainer); graphContainer.addCriteria(searchCriteria); applySavedLocations(m_locations, graphContainer.getGraph().getLayout()); graphContainer.setSemanticZoomLevel(getSemanticZoomLevel()); graphContainer.getSelectionManager().setSelectedVertexRefs(m_selectedVertices); // Apply the selected vertices graphContainer.getMapViewManager().setBoundingBox(getBoundingBox());
@Override public void addVertexHopCriteria(SearchResult searchResult, GraphContainer container) { LOG.debug("SimpleSearchProvider->addVertexHopCriteria: called with search result: '{}'", searchResult); final DefaultVertexHopCriteria criterion = new DefaultVertexHopCriteria( new DefaultVertexRef( searchResult.getNamespace(), searchResult.getId(), searchResult.getLabel())); container.addCriteria(criterion); LOG.debug("SimpleSearchProvider->addVertexHop: adding hop criteria {}.", criterion); LOG.debug("SimpleSearchProvider->addVertexHop: current criteria {}.", Arrays.toString(container.getCriteria())); }
private void focusOnVertices(VertexRef target, Set<GraphVertex> graphVerticesToFocus, GraphContainer container) { // add to focus removeHopCriteria(container); graphVerticesToFocus.forEach(graphVertex -> container.addCriteria( new DefaultVertexHopCriteria(createTopologyVertex(graphVertex)))); // add the context vertex because it is missing in the root cause result container.addCriteria(new DefaultVertexHopCriteria(target)); container.setSemanticZoomLevel(0); // Remove the current selection before redrawing the layout in order // to avoid centering on the current vertex container.getSelectionManager().setSelectedVertexRefs(Collections.emptyList()); container.getSelectionManager().setSelectedEdgeRefs(Collections.emptyList()); container.redoLayout(); }
String namespace = m_graphContainer.getTopologyServiceClient().getNamespace(); Vertex vertex = m_graphContainer.getTopologyServiceClient().getVertex(namespace, vertexId); if (vertex == null) { LOG.warn("Vertex with namespace {} and id {} do not exist in the selected Graph Provider {}", namespace, vertexId, m_graphContainer.getTopologyServiceClient().getClass().getSimpleName()); } else { refs.add(vertex); m_graphContainer.clearCriteria(); refs.forEach(vertexRef -> m_graphContainer.addCriteria(new VertexHopGraphProvider.DefaultVertexHopCriteria(vertexRef))); m_graphContainer.setSemanticZoomLevel(1);
private static void applyVerticesInFocus(Set<VertexRef> focusVertices, GraphContainer graphContainer) { Set<VertexHopGraphProvider.VertexHopCriteria> vertexHopCriterias = Criteria.getCriteriaForGraphContainer(graphContainer, VertexHopGraphProvider.VertexHopCriteria.class); for (VertexHopGraphProvider.VertexHopCriteria eachCriteria : vertexHopCriterias) { graphContainer.removeCriteria(eachCriteria); } focusVertices.forEach(vertexRef -> graphContainer.addCriteria(new VertexHopGraphProvider.DefaultVertexHopCriteria(vertexRef))); }
private boolean noAdditionalFocusCriteria() { Criteria[] crits = m_graphContainer.getCriteria(); for(Criteria criteria : crits){ if (criteria instanceof CategoryHopCriteria) { return false; } } return true; }
protected static Vertex getVertexItem(final OperationContext operationContext, final VertexRef target) { Vertex vertex = operationContext.getGraphContainer().getTopologyServiceClient().getVertex(target, operationContext.getGraphContainer().getCriteria()); if (vertex == null) { LoggerFactory.getLogger(AbstractOperation.class).debug("Null vertex found for vertex reference: {}:{}", target.getNamespace(), target.getId()); return null; } else { return vertex; } }
protected static Vertex getVertexItem(final OperationContext operationContext, final VertexRef target) { Vertex vertex = operationContext.getGraphContainer().getBaseTopology().getVertex(target, operationContext.getGraphContainer().getCriteria()); if (vertex == null) { LoggerFactory.getLogger(AbstractOperation.class).debug("Null vertex found for vertex reference: {}:{}", target.getNamespace(), target.getId()); return null; } else { return vertex; } }
public void apply(GraphContainer graphContainer, Collection<HistoryOperation> operations) { LOG.debug("Applying " + toString()); // Apply the history for each registered HistoryOperation for (HistoryOperation operation : operations) { try { operation.applyHistory(graphContainer, m_settings); } catch (Throwable e) { LOG.warn("Failed to perform applyHistory() operation", e); } } // Set Vertices in Focus after all other operations are applied, otherwise the topology provider may have changed // which results in a graphContainer.clearCriteria() applyVerticesInFocus(m_focusVertices, graphContainer); applySavedLocations(m_locations, graphContainer.getGraph().getLayout()); graphContainer.setSemanticZoomLevel(getSemanticZoomLevel()); graphContainer.getSelectionManager().setSelectedVertexRefs(m_selectedVertices); // Apply the selected vertices graphContainer.getMapViewManager().setBoundingBox(getBoundingBox()); }
@Override public void buttonClick(Button.ClickEvent event) { List<Criteria> defaultCriteriaList = graphContainer.getTopologyServiceClient().getDefaults().getCriteria(); if (defaultCriteriaList != null && !defaultCriteriaList.isEmpty()) { defaultCriteriaList.forEach(graphContainer::addCriteria); graphContainer.redoLayout(); noDefaultsAvailable.setVisible(false); } else { noDefaultsAvailable.setVisible(true); } } });
@Override public void execute(List<VertexRef> targets, final OperationContext operationContext) { if (targets == null || targets.isEmpty()) { return; } final GraphContainer graphContainer = operationContext.getGraphContainer(); for (VertexRef target : targets) { graphContainer.addCriteria(new DefaultVertexHopCriteria(target)); } graphContainer.redoLayout(); }
/** * Determines if the given vertex has "links" to vertices from other layers. * * @param vertex The vertex to check * @return True if links to other layers exists, false otherwise */ private boolean getTargets(Vertex vertex) { return !m_graphContainer.getTopologyServiceClient().getOppositeVertices(vertex).isEmpty(); }
@Override public void removeVertexHopCriteria(SearchResult searchResult, GraphContainer container) { CategoryHopCriteria criteria = createCriteria(searchResult, container); container.removeCriteria(criteria); }
@Override public void onFocusSearchResult(SearchResult searchResult, OperationContext operationContext) { final GraphContainer graphContainer = operationContext.getGraphContainer(); final DefaultVertexRef vertexRef = new DefaultVertexRef(searchResult.getNamespace(), searchResult.getId(), searchResult.getLabel()); if (graphContainer.getTopologyServiceClient().getVertex(vertexRef) == null) { // The vertex to add to focus is not in the current layer // Find the GraphProvider it belongs to Optional<GraphProvider> first = graphContainer.getTopologyServiceClient().getGraphProviders().stream() .filter(eachProvider -> eachProvider.getNamespace().equals(searchResult.getNamespace())) .findFirst(); // If there is a graph provider (which should) select it if (first.isPresent() && first.get().getVertex(vertexRef) != null) { graphContainer.selectTopologyProvider(first.get()); graphContainer.clearCriteria(); } } super.onFocusSearchResult(searchResult, operationContext); }