Search in sources :

Example 36 with Criteria

use of org.opennms.features.topology.api.topo.Criteria in project opennms by OpenNMS.

the class GraphMLEdgeStatusProvider method getStatusForEdges.

@Override
public Map<EdgeRef, Status> getStatusForEdges(EdgeProvider edgeProvider, Collection<EdgeRef> edges, Criteria[] criteria) {
    final List<StatusScript> scripts = Lists.newArrayList();
    try (final DirectoryStream<Path> stream = Files.newDirectoryStream(getScriptPath())) {
        for (final Path path : stream) {
            // ignore readme
            if (".readme".equals(path.getFileName().toString())) {
                LOG.debug("Skipping .readme");
                continue;
            }
            final String extension = FilenameUtils.getExtension(path.toString());
            final ScriptEngine scriptEngine = this.scriptEngineManager.getEngineByExtension(extension);
            if (scriptEngine == null) {
                LOG.warn("No script engine found for extension '{}'", extension);
                continue;
            }
            LOG.debug("Found script: path={}, extension={}, engine={}", path, extension, scriptEngine);
            try (final Stream<String> lines = Files.lines(path, Charset.defaultCharset())) {
                final String source = lines.collect(Collectors.joining("\n"));
                scripts.add(new StatusScript(scriptEngine, source));
            }
        }
    } catch (final IOException e) {
        LOG.error("Failed to walk template directory: {}", getScriptPath());
        return Collections.emptyMap();
    }
    return serviceAccessor.getTransactionOperations().execute(transactionStatus -> edges.stream().filter(eachEdge -> eachEdge instanceof GraphMLEdge).map(edge -> (GraphMLEdge) edge).map(edge -> new HashMap.SimpleEntry<>(edge, computeEdgeStatus(scripts, edge))).filter(e -> e.getValue() != null).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
}
Also used : Path(java.nio.file.Path) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) EdgeRef(org.opennms.features.topology.api.topo.EdgeRef) EdgeStatusProvider(org.opennms.features.topology.api.topo.EdgeStatusProvider) SimpleScriptContext(javax.script.SimpleScriptContext) AbstractVertex(org.opennms.features.topology.api.topo.AbstractVertex) EdgeProvider(org.opennms.features.topology.api.topo.EdgeProvider) DirectoryStream(java.nio.file.DirectoryStream) Lists(com.google.common.collect.Lists) Charset(java.nio.charset.Charset) Map(java.util.Map) Path(java.nio.file.Path) GraphMLServiceAccessor(org.opennms.features.topology.plugins.topo.graphml.internal.GraphMLServiceAccessor) OnmsNode(org.opennms.netmgt.model.OnmsNode) ScriptException(javax.script.ScriptException) Compilable(javax.script.Compilable) MeasurementsWrapper(org.opennms.features.topology.api.info.MeasurementsWrapper) Logger(org.slf4j.Logger) Files(java.nio.file.Files) StringWriter(java.io.StringWriter) Collection(java.util.Collection) ScriptEngineManager(javax.script.ScriptEngineManager) IOException(java.io.IOException) SimpleConnector(org.opennms.features.topology.api.topo.SimpleConnector) Collectors(java.util.stream.Collectors) ScriptContext(javax.script.ScriptContext) Objects(java.util.Objects) SimpleBindings(javax.script.SimpleBindings) List(java.util.List) Stream(java.util.stream.Stream) Paths(java.nio.file.Paths) Criteria(org.opennms.features.topology.api.topo.Criteria) CompiledScript(javax.script.CompiledScript) ScriptEngine(javax.script.ScriptEngine) Optional(java.util.Optional) Status(org.opennms.features.topology.api.topo.Status) Collections(java.util.Collections) FilenameUtils(org.apache.commons.io.FilenameUtils) IOException(java.io.IOException) ScriptEngine(javax.script.ScriptEngine)

Example 37 with Criteria

use of org.opennms.features.topology.api.topo.Criteria in project opennms by OpenNMS.

the class SavedHistory method getFocusVertices.

private static Set<VertexRef> getFocusVertices(GraphContainer graphContainer) {
    final Set<VertexRef> retVal = new HashSet<>();
    Criteria[] criterias = graphContainer.getCriteria();
    for (Criteria crit : criterias) {
        if (crit instanceof VertexHopGraphProvider.VertexHopCriteria && !(crit instanceof CollapsibleCriteria)) {
            retVal.addAll(((VertexHopGraphProvider.VertexHopCriteria) crit).getVertices());
        }
    }
    return retVal;
}
Also used : CollapsibleCriteria(org.opennms.features.topology.api.topo.CollapsibleCriteria) CollapsibleCriteria(org.opennms.features.topology.api.topo.CollapsibleCriteria) SearchCriteria(org.opennms.features.topology.api.topo.SearchCriteria) Criteria(org.opennms.features.topology.api.topo.Criteria) VertexRef(org.opennms.features.topology.api.topo.VertexRef) HashSet(java.util.HashSet)

Example 38 with Criteria

use of org.opennms.features.topology.api.topo.Criteria in project opennms by OpenNMS.

the class VertexHopGraphProvider method getFocusNodes.

public Set<VertexRef> getFocusNodes(Criteria... criteria) {
    Set<VertexRef> focusNodes = new HashSet<VertexRef>();
    for (Criteria criterium : criteria) {
        try {
            VertexHopCriteria hopCriterium = (VertexHopCriteria) criterium;
            focusNodes.addAll(hopCriterium.getVertices());
        } catch (ClassCastException e) {
        }
    }
    return focusNodes;
}
Also used : CollapsibleCriteria(org.opennms.features.topology.api.topo.CollapsibleCriteria) Criteria(org.opennms.features.topology.api.topo.Criteria) DefaultVertexRef(org.opennms.features.topology.api.topo.DefaultVertexRef) VertexRef(org.opennms.features.topology.api.topo.VertexRef) HashSet(java.util.HashSet)

Example 39 with Criteria

use of org.opennms.features.topology.api.topo.Criteria in project opennms by OpenNMS.

the class SearchBox method updateTokenFieldList.

private void updateTokenFieldList(GraphContainer graphContainer) {
    final List<SearchSuggestion> suggestions = Lists.newArrayList();
    final Criteria[] criterium = graphContainer.getCriteria();
    for (Criteria criteria : criterium) {
        try {
            CollapsibleCriteria crit = (CollapsibleCriteria) criteria;
            SearchSuggestion suggestion = new SearchSuggestion(crit.getNamespace(), crit.getId(), crit.getLabel());
            suggestion.setCollapsible(true);
            suggestion.setCollapsed(crit.isCollapsed());
            suggestions.add(suggestion);
            continue;
        } catch (ClassCastException e) {
        }
        try {
            VertexHopCriteria crit = (VertexHopCriteria) criteria;
            SearchSuggestion suggestion = new SearchSuggestion(crit.getNamespace(), crit.getId(), crit.getLabel());
            suggestions.add(suggestion);
            continue;
        } catch (ClassCastException e) {
        }
    }
    getState().setFocused(suggestions);
}
Also used : SearchSuggestion(org.opennms.features.topology.app.internal.gwt.client.SearchSuggestion) CollapsibleCriteria(org.opennms.features.topology.api.topo.CollapsibleCriteria) CollapsibleCriteria(org.opennms.features.topology.api.topo.CollapsibleCriteria) DefaultVertexHopCriteria(org.opennms.features.topology.api.support.VertexHopGraphProvider.DefaultVertexHopCriteria) VertexHopCriteria(org.opennms.features.topology.api.support.VertexHopGraphProvider.VertexHopCriteria) Criteria(org.opennms.features.topology.api.topo.Criteria) DefaultVertexHopCriteria(org.opennms.features.topology.api.support.VertexHopGraphProvider.DefaultVertexHopCriteria) VertexHopCriteria(org.opennms.features.topology.api.support.VertexHopGraphProvider.VertexHopCriteria)

Example 40 with Criteria

use of org.opennms.features.topology.api.topo.Criteria in project opennms by OpenNMS.

the class SearchBox method removeIfSuggMapEmpty.

private void removeIfSuggMapEmpty(SearchResult searchResult, GraphContainer graphContainer) {
    Criteria[] criterias = graphContainer.getCriteria();
    for (Criteria criteria : criterias) {
        if (criteria == null || !(criteria instanceof VertexHopCriteria)) {
            continue;
        }
        VertexHopCriteria crit = (VertexHopCriteria) criteria;
        String critNameSpace = crit.getNamespace();
        if (critNameSpace == null) {
            continue;
        }
        String critId = crit.getId();
        if (critId == null) {
            continue;
        }
        String critLabel = crit.getLabel();
        if (critLabel == null) {
            continue;
        }
        String resultNameSpace = searchResult.getNamespace();
        String resultId = searchResult.getId();
        String resultLabel = searchResult.getLabel();
        if (critNameSpace.equals(resultNameSpace) && critId.equals(resultId) && critLabel.equals(resultLabel)) {
            graphContainer.removeCriteria(crit);
        }
    }
}
Also used : CollapsibleCriteria(org.opennms.features.topology.api.topo.CollapsibleCriteria) DefaultVertexHopCriteria(org.opennms.features.topology.api.support.VertexHopGraphProvider.DefaultVertexHopCriteria) VertexHopCriteria(org.opennms.features.topology.api.support.VertexHopGraphProvider.VertexHopCriteria) Criteria(org.opennms.features.topology.api.topo.Criteria) DefaultVertexHopCriteria(org.opennms.features.topology.api.support.VertexHopGraphProvider.DefaultVertexHopCriteria) VertexHopCriteria(org.opennms.features.topology.api.support.VertexHopGraphProvider.VertexHopCriteria)

Aggregations

Criteria (org.opennms.features.topology.api.topo.Criteria)46 VertexRef (org.opennms.features.topology.api.topo.VertexRef)21 Map (java.util.Map)15 VertexHopCriteria (org.opennms.features.topology.api.support.VertexHopGraphProvider.VertexHopCriteria)15 CollapsibleCriteria (org.opennms.features.topology.api.topo.CollapsibleCriteria)15 List (java.util.List)14 Collectors (java.util.stream.Collectors)14 Status (org.opennms.features.topology.api.topo.Status)14 Lists (com.google.common.collect.Lists)11 ArrayList (java.util.ArrayList)9 Collection (java.util.Collection)9 StatusProvider (org.opennms.features.topology.api.topo.StatusProvider)9 Objects (java.util.Objects)8 Test (org.junit.Test)8 AlarmSummary (org.opennms.netmgt.model.alarm.AlarmSummary)8 HashSet (java.util.HashSet)7 Set (java.util.Set)7 AbstractVertex (org.opennms.features.topology.api.topo.AbstractVertex)7 DefaultVertexRef (org.opennms.features.topology.api.topo.DefaultVertexRef)7 VertexProvider (org.opennms.features.topology.api.topo.VertexProvider)7