From b65f6c27ca698132d0091fd333b11d26c2936c99 Mon Sep 17 00:00:00 2001 From: moll Date: Wed, 15 Apr 2026 17:00:52 +0200 Subject: [PATCH 1/4] made isValid() --- .../main/java/org/insa/graphs/model/Path.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java index 63a20f6..c2c9ab5 100644 --- a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java +++ b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java @@ -184,11 +184,21 @@ public class Path { * * * @return true if the path is valid, false otherwise. - * @deprecated Need to be implemented. */ public boolean isValid() { - // TODO: - return false; + + if (this.isEmpty()) { return true; } + if (this.size() == 1 && this.arcs.isEmpty()) { return true; } + if (this.arcs.get(0).getOrigin() != this.origin) { return false; } + + Boolean good = true; + for (int i = 0; i < this.arcs.size() - 1; i++) { + if (this.arcs.get(i).getDestination() != this.arcs.get(i+1).getOrigin()) { + good = false; + } + } + + return good; } /** From 6613be4663c041f8f287d64169138e22f336b3cd Mon Sep 17 00:00:00 2001 From: moll Date: Wed, 15 Apr 2026 17:03:43 +0200 Subject: [PATCH 2/4] update isValid() --- .../src/main/java/org/insa/graphs/model/Path.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java index c2c9ab5..dca057c 100644 --- a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java +++ b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java @@ -189,11 +189,11 @@ public class Path { if (this.isEmpty()) { return true; } if (this.size() == 1 && this.arcs.isEmpty()) { return true; } - if (this.arcs.get(0).getOrigin() != this.origin) { return false; } + if (!this.arcs.get(0).getOrigin().equals(this.origin)) { return false; } Boolean good = true; for (int i = 0; i < this.arcs.size() - 1; i++) { - if (this.arcs.get(i).getDestination() != this.arcs.get(i+1).getOrigin()) { + if (!this.arcs.get(i).getDestination().equals(this.arcs.get(i+1).getOrigin())) { good = false; } } From 684c8ea6ac4307931711b75ffe3da0f1b737ca48 Mon Sep 17 00:00:00 2001 From: moll Date: Wed, 15 Apr 2026 17:38:08 +0200 Subject: [PATCH 3/4] made createFastestPathFromNodes() --- .../main/java/org/insa/graphs/model/Path.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java index dca057c..152f28d 100644 --- a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java +++ b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java @@ -25,12 +25,33 @@ public class Path { * @return A path that goes through the given list of nodes. * @throws IllegalArgumentException If the list of nodes is not valid, i.e. two * consecutive nodes in the list are not connected in the graph. - * @deprecated Need to be implemented. */ public static Path createFastestPathFromNodes(Graph graph, List nodes) throws IllegalArgumentException { List arcs = new ArrayList(); - // TODO: + + if (nodes.size() == 1) { return new Path(graph, nodes.get(0)); } + + for (int i = 0; i < nodes.size() - 1; i++) { + Arc bestArc = null; + double bestSpeed = Double.MAX_VALUE; + for (Arc arcsucc : nodes.get(i).getSuccessors()) { + if (arcsucc.getDestination().equals(nodes.get(i+1))) { + int succspeed = arcsucc.getRoadInformation().getMaximumSpeed(); + if (arcsucc.getTravelTime(succspeed) < bestSpeed) { + bestArc = arcsucc; + bestSpeed = arcsucc.getTravelTime(succspeed); + } + } + + } + if (bestArc == null) { + throw new IllegalArgumentException(); + } else { + arcs.add(bestArc); + } + } + return new Path(graph, arcs); } From 6f126202ca85062d3f6d28c500327a719be1bcd4 Mon Sep 17 00:00:00 2001 From: moll Date: Wed, 15 Apr 2026 18:08:01 +0200 Subject: [PATCH 4/4] done Launch.java --- .../org/insa/graphs/gui/simple/Launch.java | 20 +++++++++++-------- .../main/java/org/insa/graphs/model/Path.java | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/be-graphes-gui/src/main/java/org/insa/graphs/gui/simple/Launch.java b/be-graphes-gui/src/main/java/org/insa/graphs/gui/simple/Launch.java index aa7ea04..0a8e01e 100644 --- a/be-graphes-gui/src/main/java/org/insa/graphs/gui/simple/Launch.java +++ b/be-graphes-gui/src/main/java/org/insa/graphs/gui/simple/Launch.java @@ -14,6 +14,7 @@ import org.insa.graphs.gui.drawing.components.BasicDrawing; import org.insa.graphs.model.Graph; import org.insa.graphs.model.Path; import org.insa.graphs.model.io.BinaryGraphReader; +import org.insa.graphs.model.io.BinaryPathReader; import org.insa.graphs.model.io.GraphReader; import org.insa.graphs.model.io.PathReader; @@ -57,23 +58,26 @@ public class Launch { try (final GraphReader reader = new BinaryGraphReader(new DataInputStream( new BufferedInputStream(new FileInputStream(mapName))))) { - // TODO: read the graph - graph = null; + // DONE: read the graph + graph = reader.read(); } // create the drawing final Drawing drawing = createDrawing(); - // TODO: draw the graph on the drawing + // DONE: draw the graph on the drawing + drawing.drawGraph(graph); - // TODO: create a path reader - try (final PathReader pathReader = null) { + // DONE: create a path reader + try (final PathReader pathReader = new BinaryPathReader(new DataInputStream( + new BufferedInputStream(new FileInputStream(pathName))))) { - // TODO: read the path - path = null; + // DONE: read the path + path = pathReader.readPath(graph); } - // TODO: draw the path on the drawing + // DONE: draw the path on the drawing + drawing.drawPath(path); } } diff --git a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java index 152f28d..2014aeb 100644 --- a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java +++ b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java @@ -3,6 +3,7 @@ package org.insa.graphs.model; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Iterator; /** *

@@ -43,7 +44,6 @@ public class Path { bestSpeed = arcsucc.getTravelTime(succspeed); } } - } if (bestArc == null) { throw new IllegalArgumentException();