From 0b08b70cb9a5169ad909e9f5f34e4f1ddb5d30e4 Mon Sep 17 00:00:00 2001 From: Brendan Saint-Germes Date: Tue, 19 May 2026 08:24:43 +0200 Subject: [PATCH] =?UTF-8?q?ajout:=20Ajout=20du=20mode=20de=20d=C3=A9placem?= =?UTF-8?q?ent=20en=20v=C3=A9lo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../graphs/algorithm/ArcInspectorFactory.java | 66 ++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java index 45c1a75..7bf06da 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java @@ -110,6 +110,70 @@ public class ArcInspectorFactory { } }; + private static class BicyleByTime implements ArcInspector { + static int maxBicycleSpeed = 20; + + @Override + public boolean isAllowed(Arc arc) { + return arc.getRoadInformation().getAccessRestrictions().isAllowedForAny( + AccessMode.BICYCLE, + EnumSet.complementOf(EnumSet.of(AccessRestriction.FORBIDDEN, + AccessRestriction.PRIVATE))); + } + + @Override + public double getCost(Arc arc) { + return arc.getTravelTime(Math.min(maxBicycleSpeed, arc.getRoadInformation().getMaximumSpeed())); + } + + @Override + public int getMaximumSpeed() { + return 20; + } + + @Override + public Mode getMode() { + return Mode.TIME; + } + + @Override + public String toString() { + return "Le plus rapide, chemin accessible en vélo uniquement"; + } + } + + private static class BicyleByLength implements ArcInspector { + static int maxBicycleSpeed = 20; + + @Override + public boolean isAllowed(Arc arc) { + return arc.getRoadInformation().getAccessRestrictions().isAllowedForAny( + AccessMode.BICYCLE, + EnumSet.complementOf(EnumSet.of(AccessRestriction.FORBIDDEN, + AccessRestriction.PRIVATE))); + } + + @Override + public double getCost(Arc arc) { + return arc.getLength(); + } + + @Override + public int getMaximumSpeed() { + return 20; + } + + @Override + public Mode getMode() { + return Mode.LENGTH; + } + + @Override + public String toString() { + return "Le plus court, chemin accessible en vélo uniquement"; + } + } + /** * @return List of all arc filters in this factory. */ @@ -118,7 +182,7 @@ public class ArcInspectorFactory { // to get an understandable output!): return Arrays.asList(new NoFilterByLengthArcInspector(), new OnlyCarsByLengthArcInspector(), new OnlyCarsByTimeArcInspector(), - new OnlyPedestrianByTime()); + new OnlyPedestrianByTime(), new BicyleByLength(), new BicyleByTime()); } }