Search in sources :

Example 1 with NodeConnectionEdges

use of net.parostroj.timetable.model.freight.NodeConnectionEdges in project grafikon by jub77.

the class FreightCheckPanel method checkFreight.

private void checkFreight(TextBuffer buffer) {
    FreightConnectionStrategy strategy = FreightConnectionStrategy.createCached(diagram.getFreightNet().getConnectionStrategy());
    // check
    FreightChecker checker = new FreightChecker(strategy);
    // check all centers
    buffer.appendText(ResourceLoader.getString("freight.check.centers") + ":\n", boldUnderlineStyle);
    diagram.getNet().getNodes().stream().filter(n -> n.isCenterOfRegions()).forEach(n -> {
        Set<Node> noConnToNodes = checker.getNoConnectionsToNodes(n, notFreightTypes);
        Set<Node> noConnToCenter = checker.getNoConnectionToCenter(n, notFreightTypes);
        buffer.appendText("-", noConnToCenter.isEmpty() && noConnToNodes.isEmpty() ? okStyle : errorStyle);
        buffer.appendText(String.format("  %s\n", nodeWithRegionToString(n)), null);
        for (Node ncNode : noConnToNodes) {
            buffer.appendText(String.format("   %s → %s\n", n.getName(), ncNode.getName()), null);
        }
        for (Node ncNode : noConnToCenter) {
            buffer.appendText(String.format("   %s → %s\n", ncNode.getName(), n.getName()), null);
        }
    });
    buffer.appendText(ResourceLoader.getString("freight.check.center.connections") + ":\n", boldUnderlineStyle);
    Map<Node, List<ConnectionState<NodeConnectionEdges>>> centerConnMap = checker.analyseCenterConnections(diagram.getNet()).stream().collect(Collectors.groupingBy(c -> c.getFrom()));
    centerConnMap.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey().getName(), comparator)).forEach(c -> {
        boolean exists = c.getValue().stream().allMatch(ConnectionState::exists);
        buffer.appendText("-", exists ? okStyle : errorStyle);
        buffer.appendText(String.format("  %s\n", nodeWithRegionToString(c.getKey())), null);
        c.getValue().stream().filter(cx -> !cx.exists()).forEach(cx -> {
            buffer.appendText(String.format("   %s → %s\n", cx.getFrom().getName(), nodeWithRegionToString(cx.getTo())), null);
        });
    });
    buffer.appendText(ResourceLoader.getString("freight.check.node.connections") + ":\n", boldUnderlineStyle);
    checker.analyseNodeConnections(diagram.getNet(), notFreightTypes).stream().filter(c -> !c.exists()).sorted(compareConnections()).forEach(c -> {
        buffer.appendText("-", errorStyle);
        buffer.appendText(String.format("  %s → %s\n", c.getFrom().getName(), c.getTo().getName()), null);
    });
}
Also used : OutputFreightUtil(net.parostroj.timetable.output2.util.OutputFreightUtil) StyleConstants(javax.swing.text.StyleConstants) LoggerFactory(org.slf4j.LoggerFactory) StyledDocument(javax.swing.text.StyledDocument) Node(net.parostroj.timetable.model.Node) ArrayList(java.util.ArrayList) ResourceLoader(net.parostroj.timetable.gui.utils.ResourceLoader) Locale(java.util.Locale) Map(java.util.Map) FreightConnectionStrategy(net.parostroj.timetable.model.freight.FreightConnectionStrategy) ImageIcon(javax.swing.ImageIcon) JTextPane(javax.swing.JTextPane) BorderLayout(java.awt.BorderLayout) AttributeSet(javax.swing.text.AttributeSet) OutputUtil(net.parostroj.timetable.output2.util.OutputUtil) FlowLayout(java.awt.FlowLayout) NodeType(net.parostroj.timetable.model.NodeType) JButton(javax.swing.JButton) Logger(org.slf4j.Logger) ConnectionState(net.parostroj.timetable.model.freight.FreightChecker.ConnectionState) GuiComponentUtils(net.parostroj.timetable.gui.utils.GuiComponentUtils) Set(java.util.Set) BorderFactory(javax.swing.BorderFactory) BadLocationException(javax.swing.text.BadLocationException) Collectors(java.util.stream.Collectors) Collectors.joining(java.util.stream.Collectors.joining) FreightChecker(net.parostroj.timetable.model.freight.FreightChecker) JScrollPane(javax.swing.JScrollPane) List(java.util.List) FontMetrics(java.awt.FontMetrics) Style(javax.swing.text.Style) GuiIcon(net.parostroj.timetable.gui.utils.GuiIcon) NodeConnectionEdges(net.parostroj.timetable.model.freight.NodeConnectionEdges) RxActionHandler(net.parostroj.timetable.gui.actions.execution.RxActionHandler) Pair(net.parostroj.timetable.utils.Pair) Comparator(java.util.Comparator) TrainDiagram(net.parostroj.timetable.model.TrainDiagram) JPanel(javax.swing.JPanel) Node(net.parostroj.timetable.model.Node) FreightConnectionStrategy(net.parostroj.timetable.model.freight.FreightConnectionStrategy) FreightChecker(net.parostroj.timetable.model.freight.FreightChecker) NodeConnectionEdges(net.parostroj.timetable.model.freight.NodeConnectionEdges) ArrayList(java.util.ArrayList) List(java.util.List) ConnectionState(net.parostroj.timetable.model.freight.FreightChecker.ConnectionState)

Aggregations

BorderLayout (java.awt.BorderLayout)1 FlowLayout (java.awt.FlowLayout)1 FontMetrics (java.awt.FontMetrics)1 ArrayList (java.util.ArrayList)1 Comparator (java.util.Comparator)1 List (java.util.List)1 Locale (java.util.Locale)1 Map (java.util.Map)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 Collectors.joining (java.util.stream.Collectors.joining)1 BorderFactory (javax.swing.BorderFactory)1 ImageIcon (javax.swing.ImageIcon)1 JButton (javax.swing.JButton)1 JPanel (javax.swing.JPanel)1 JScrollPane (javax.swing.JScrollPane)1 JTextPane (javax.swing.JTextPane)1 AttributeSet (javax.swing.text.AttributeSet)1 BadLocationException (javax.swing.text.BadLocationException)1 Style (javax.swing.text.Style)1