public int getWeightSum() { return getGraphEdges().stream().mapToInt(GraphEdge::getWeight).sum(); }
public double getWeightFactor(GraphEdge eachEdge) { int weightSum = getWeightSum(); return (double) eachEdge.getWeight() / (double) weightSum; }
public double getStatusResult(Status status) { if (getHitsByStatus().get(status) != null) { return (double) getHitsByStatus().get(status) / (double) getWeightStatuses().size(); } return 0; }
private ThresholdExplanationWindow(final ThresholdResultExplanation explanation) { setCaption(String.format("Threshold Function Details (%s)", explanation.getFunction().getThreshold())); setClosable(true); setCloseShortcut(ShortcutAction.KeyCode.ESCAPE); if (propertyId != null && propertyId.equals(explanation.getStatus())) { return "selected"; List<GraphEdge> sortedGraphEdges = explanation.getGraphEdges().stream() .sorted( comparing(GraphEdge::getStatus) createStatusLabel(null, eachEdge.getStatus()), eachEdge.getWeight(), toString(explanation.getWeightFactor(eachEdge)), toString(explanation.getStatusFactor(eachEdge, Status.CRITICAL)), toString(explanation.getStatusFactor(eachEdge, Status.MAJOR)), toString(explanation.getStatusFactor(eachEdge, Status.MINOR)), toString(explanation.getStatusFactor(eachEdge, Status.WARNING)), toString(explanation.getStatusFactor(eachEdge, Status.NORMAL)), }, eachEdge); table.setColumnFooter(STATUS_COLUMN, explanation.getStatus().getLabel()); table.setColumnFooter(WEIGHT_COLUMN, String.valueOf(explanation.getWeightSum())); table.setColumnFooter(WEIGHT_FACTOR, toString(explanation.getWeightSumFactor())); table.setColumnFooter(Status.CRITICAL, toString(explanation.getStatusResult(Status.CRITICAL))); table.setColumnFooter(Status.MAJOR, toString(explanation.getStatusResult(Status.MAJOR))); table.setColumnFooter(Status.MINOR, toString(explanation.getStatusResult(Status.MINOR))); table.setColumnFooter(Status.WARNING, toString(explanation.getStatusResult(Status.WARNING))); table.setColumnFooter(Status.NORMAL, toString(explanation.getStatusResult(Status.NORMAL)));
@Override public ThresholdResultExplanation explain(BusinessService businessService, Threshold threshold) { final GraphVertex vertex = getGraph().getVertexByBusinessServiceId(businessService.getId()); // Calculate the weighed statuses from the child edges List<StatusWithIndex> statusesWithIndices = weighEdges(getGraph().getOutEdges(vertex)); List<Status> statuses = statusesWithIndices.stream() .map(StatusWithIndex::getStatus) .collect(Collectors.toList()); // Reduce Status reducedStatus = threshold.reduce(statusesWithIndices) .orElse(new StatusWithIndices(MIN_SEVERITY, Collections.emptyList())) .getStatus(); ThresholdResultExplanation explanation = new ThresholdResultExplanation(); explanation.setStatus(reducedStatus); explanation.setHitsByStatus(threshold.getHitsByStatus(statuses)); explanation.setGraphEdges(getGraph().getOutEdges(vertex)); explanation.setWeightStatuses(statuses); explanation.setFunction(threshold); Map<GraphEdge, GraphVertex> graphEdgeToGraphVertex = new HashMap<>(); for (Edge eachEdge : businessService.getEdges()) { GraphVertex vertexForEdge = getGraph().getVertexByEdgeId(eachEdge.getId()); GraphEdge graphEdge = getGraph().getGraphEdgeByEdgeId(eachEdge.getId()); if (vertexForEdge != null && graphEdge != null) { graphEdgeToGraphVertex.put(graphEdge, vertexForEdge); } } explanation.setGraphEdgeToGraphVertexMapping(graphEdgeToGraphVertex); return explanation; }
public double getStatusFactor(GraphEdge eachEdge, Status status) { if (eachEdge.getStatus().isGreaterThanOrEqual(status)) { return getWeightFactor(eachEdge); } return 0; }
private String getLabel(GraphEdge graphEdge, ThresholdResultExplanation explanation) { if (!Strings.isNullOrEmpty(graphEdge.getFriendlyName())) { return graphEdge.getFriendlyName(); } return GraphVertexToTopologyVertexConverter.createTopologyVertex(explanation.getGraphVertex(graphEdge)).getLabel(); }
public double getStatusFactor(GraphEdge eachEdge, Status status) { if (eachEdge.getStatus().isGreaterThanOrEqual(status)) { return getWeightFactor(eachEdge); } return 0; }
public double getWeightSumFactor() { return getGraphEdges().stream().mapToDouble(this::getWeightFactor).sum(); } }
public double getWeightFactor(GraphEdge eachEdge) { int weightSum = getWeightSum(); return (double) eachEdge.getWeight() / (double) weightSum; }
public double getStatusResult(Status status) { if (getHitsByStatus().get(status) != null) { return (double) getHitsByStatus().get(status) / (double) getWeightStatuses().size(); } return 0; }
public int getWeightSum() { return getGraphEdges().stream().mapToInt(GraphEdge::getWeight).sum(); }
public double getWeightSumFactor() { return getGraphEdges().stream().mapToDouble(this::getWeightFactor).sum(); } }