diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..969d625 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# OS specific files and folders +.DS_Store + +# Java specific files and folders +bin +target +doc +*.jar +.settings +.classpath +.vscode + +# Editor specific files and folders +*~ +.project + +# Project specific files and folders +*.mapfg +*.mapgr +*.path +*.tgz 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 7580981..b9accf1 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 @@ -30,7 +30,22 @@ public class Path { public static Path createFastestPathFromNodes(Graph graph, List nodes) throws IllegalArgumentException { List arcs = new ArrayList(); - // TODO: + if (nodes.size() <= 2){ + throw new IllegalArgumentException(); + }else{ + for (int j = 0; j < nodes.size(); j++){ + Node premier = nodes.get(j); + List suc = premier.getSuccessors(); + Arc elu = suc.get(0); + for (int i=0; i < suc.size(); i++){ + + if ( suc.get(i).getMinimumTravelTime() <= elu.getMinimumTravelTime()){ + elu = suc.get(i); + } + arcs.add(elu); + } + } + } return new Path(graph, arcs); } @@ -48,7 +63,24 @@ public class Path { public static Path createShortestPathFromNodes(Graph graph, List nodes) throws IllegalArgumentException { List arcs = new ArrayList(); - // TODO: + if (nodes.size() <= 2){ + throw new IllegalArgumentException(); + }else{ + for (int j = 0; j < nodes.size(); j++){ + Node premier = nodes.get(j); + List suc = premier.getSuccessors(); + Arc elu = suc.get(0); + for (int i=0; i < suc.size(); i++){ + + if ( suc.get(i).getLength() <= elu.getLength()){ + elu = suc.get(i); + } + arcs.add(elu); + } + } + } + + return new Path(graph, arcs); } @@ -186,9 +218,33 @@ public class Path { * @return true if the path is valid, false otherwise. * @deprecated Need to be implemented. */ - public boolean isValid() { - // TODO: + public boolean isValid() { + if(this.arcs.isEmpty()){ + return true ; + } + if ( this.graph.getNodes().size() <= 1 ){ + return true ; + } + + Node origin = this.graph.getNodes().getFirst(); // à revoir ( on prend deux arcs quelconque et compare ) + List firstSucs = origin.getSuccessors(); + List destFirstArc = new ArrayList<>() ; + for( Arc fSuc : firstSucs){ + destFirstArc.add(fSuc.getDestination()) ; + + } + for (Node secondNode : destFirstArc){ + List secondSucs = secondNode.getSuccessors(); + for (Arc sSuc : secondSucs){ + if ( sSuc.getDestination() == origin){ + return true ; + } + } + + } + return false; + } /** @@ -198,8 +254,12 @@ public class Path { * @deprecated Need to be implemented. */ public float getLength() { - // TODO: - return 0; + float sum = 0; + for(Arc a: this.arcs){ + sum += a.getLength(); + + } + return sum; } /** @@ -211,8 +271,12 @@ public class Path { * @deprecated Need to be implemented. */ public double getTravelTime(double speed) { - // TODO: - return 0; + double sum = 0; + for(Arc a: this.arcs){ + sum += a.getTravelTime(speed); + + } + return sum; } /** @@ -223,8 +287,13 @@ public class Path { * @deprecated Need to be implemented. */ public double getMinimumTravelTime() { - // TODO: - return 0; + double sum = 0; + for(Arc a: this.arcs){ + sum += a.getMinimumTravelTime(); + + } + return sum; } + }