From 8ccefcbf62f64fbcc08b8f4bdca362f049b3077c Mon Sep 17 00:00:00 2001 From: Piet Date: Tue, 5 Dec 2017 10:44:13 +0100 Subject: [PATCH 1/7] Add Save + modify Serializer (Schedule) --- .../lsbdp/agile/algorithm/TemplateTSP.java | 1 + .../lsbdp/agile/controller/Controller.java | 12 ++++++--- .../java/lsbdp/agile/data/SerializerXML.java | 25 +++++++++++-------- .../java/lsbdp/agile/view/EventHandlers.java | 3 ++- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java b/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java index de24966..3daba27 100644 --- a/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java +++ b/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java @@ -18,6 +18,7 @@ public abstract class TemplateTSP implements TSP { @Override public void findSolution(DeliverySchedule schedule, StreetMap map, DeliveriesRequest req) { + schedule.setStartingTime(req.getStartingTime()); count = 0; Intersection warehouse = req.getWarehouse(); List deliveries = req.getDeliveryList(); diff --git a/agile/src/main/java/lsbdp/agile/controller/Controller.java b/agile/src/main/java/lsbdp/agile/controller/Controller.java index 69fc967..247c89c 100644 --- a/agile/src/main/java/lsbdp/agile/controller/Controller.java +++ b/agile/src/main/java/lsbdp/agile/controller/Controller.java @@ -26,10 +26,14 @@ public Controller() { } //Gérer Map - public static void loadMap(File XML) throws ParseException { - map = SerializerXML.deserializeMapXML(XML); + public static void loadMap(File xml) throws ParseException { + map = SerializerXML.deserializeMapXML(xml); WindowManager.drawMap(map); } + public static void saveDeliveries(File xml) { + SerializerXML.serializeDeliveryXML(schedule, xml); + } + public static void drawMap(){ WindowManager.drawMap(map); } @@ -38,8 +42,8 @@ public static StreetMap getMap() { } //Gérer Schedule - public static DeliverySchedule loadDeliveryRequest(File XML) throws ParseException { - deliveries = SerializerXML.deserializeDeliveryXML(XML, map); + public static DeliverySchedule loadDeliveryRequest(File xml) throws ParseException { + deliveries = SerializerXML.deserializeDeliveryXML(xml, map); algo.findSolution(schedule, map, deliveries); WindowManager.colorDeliverySchedule(schedule); WindowManager.loadListView(schedule); diff --git a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java index 66fc486..030ae1f 100644 --- a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java +++ b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java @@ -30,6 +30,7 @@ import lsbdp.agile.model.Delivery; import lsbdp.agile.model.DeliverySchedule; import lsbdp.agile.model.Intersection; +import lsbdp.agile.model.Route; import lsbdp.agile.model.Street; import lsbdp.agile.model.StreetMap; @@ -47,24 +48,26 @@ public class SerializerXML { * @param deliveriesRequest * @param file */ - public static void serializeDeliveryXML(DeliveriesRequest deliveriesRequest, File file) { + public static void serializeDeliveryXML(DeliverySchedule deliveriesSchedule, File file) { SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss"); try { file.createNewFile(); FileWriter ffw=new FileWriter(file); ffw.write("\n"); ffw.write("\n"); - ffw.write("\n"); - for(Delivery d: deliveriesRequest.getDeliveryList()) { - ffw.write("\n"); + for(Pair d: deliveriesSchedule) { + if(d.getValue()!=null) { + ffw.write("\n"); } - ffw.write("\"/>\n"); } ffw.write("\n"); ffw.close(); diff --git a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java index cfc0008..e3a84f6 100644 --- a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java +++ b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java @@ -56,6 +56,7 @@ private void saveDeliveries(ActionEvent event) { new FileChooser.ExtensionFilter("XML File", "*.xml") ); File f = MainWindow.openFileChooserRoadmap(fileChooser); + Controller.saveDeliveries(f); } else { MainWindow.openMessagePopup("Please load a delivery file"); } @@ -89,7 +90,7 @@ private void RedoAction(ActionEvent event) { private void LoadDeliveriesActionHandler(ActionEvent event) throws InterruptedException, ParseException { if(WindowManager.mapLoaded) { FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Choose your deliverires file"); + fileChooser.setTitle("Choose your deliveries file"); fileChooser.getExtensionFilters().addAll( new FileChooser.ExtensionFilter("XML File", "*.xml") ); From ddb8fb2de705914bd567df69290d64c4702e9847 Mon Sep 17 00:00:00 2001 From: Piet Date: Tue, 5 Dec 2017 10:44:13 +0100 Subject: [PATCH 2/7] Add Save + modify Serializer (Schedule) --- .../lsbdp/agile/algorithm/TemplateTSP.java | 1 + .../lsbdp/agile/controller/Controller.java | 12 ++++++--- .../java/lsbdp/agile/data/SerializerXML.java | 25 +++++++++++-------- .../java/lsbdp/agile/view/EventHandlers.java | 3 ++- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java b/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java index de24966..3daba27 100644 --- a/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java +++ b/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java @@ -18,6 +18,7 @@ public abstract class TemplateTSP implements TSP { @Override public void findSolution(DeliverySchedule schedule, StreetMap map, DeliveriesRequest req) { + schedule.setStartingTime(req.getStartingTime()); count = 0; Intersection warehouse = req.getWarehouse(); List deliveries = req.getDeliveryList(); diff --git a/agile/src/main/java/lsbdp/agile/controller/Controller.java b/agile/src/main/java/lsbdp/agile/controller/Controller.java index 8996c29..f58f97c 100644 --- a/agile/src/main/java/lsbdp/agile/controller/Controller.java +++ b/agile/src/main/java/lsbdp/agile/controller/Controller.java @@ -26,10 +26,14 @@ public Controller() { } //Gérer Map - public static void loadMap(File XML) throws ParseException { - map = SerializerXML.deserializeMapXML(XML); + public static void loadMap(File xml) throws ParseException { + map = SerializerXML.deserializeMapXML(xml); WindowManager.drawMap(map); } + public static void saveDeliveries(File xml) { + SerializerXML.serializeDeliveryXML(schedule, xml); + } + public static void drawMap(){ WindowManager.drawMap(map); } @@ -38,8 +42,8 @@ public static StreetMap getMap() { } //Gérer Schedule - public static DeliverySchedule loadDeliveryRequest(File XML) throws ParseException { - deliveries = SerializerXML.deserializeDeliveryXML(XML, map); + public static DeliverySchedule loadDeliveryRequest(File xml) throws ParseException { + deliveries = SerializerXML.deserializeDeliveryXML(xml, map); algo.findSolution(schedule, map, deliveries); WindowManager.colorDeliverySchedule(schedule); WindowManager.loadListView(schedule); diff --git a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java index 66fc486..030ae1f 100644 --- a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java +++ b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java @@ -30,6 +30,7 @@ import lsbdp.agile.model.Delivery; import lsbdp.agile.model.DeliverySchedule; import lsbdp.agile.model.Intersection; +import lsbdp.agile.model.Route; import lsbdp.agile.model.Street; import lsbdp.agile.model.StreetMap; @@ -47,24 +48,26 @@ public class SerializerXML { * @param deliveriesRequest * @param file */ - public static void serializeDeliveryXML(DeliveriesRequest deliveriesRequest, File file) { + public static void serializeDeliveryXML(DeliverySchedule deliveriesSchedule, File file) { SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss"); try { file.createNewFile(); FileWriter ffw=new FileWriter(file); ffw.write("\n"); ffw.write("\n"); - ffw.write("\n"); - for(Delivery d: deliveriesRequest.getDeliveryList()) { - ffw.write("\n"); + for(Pair d: deliveriesSchedule) { + if(d.getValue()!=null) { + ffw.write("\n"); } - ffw.write("\"/>\n"); } ffw.write("\n"); ffw.close(); diff --git a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java index cfc0008..e3a84f6 100644 --- a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java +++ b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java @@ -56,6 +56,7 @@ private void saveDeliveries(ActionEvent event) { new FileChooser.ExtensionFilter("XML File", "*.xml") ); File f = MainWindow.openFileChooserRoadmap(fileChooser); + Controller.saveDeliveries(f); } else { MainWindow.openMessagePopup("Please load a delivery file"); } @@ -89,7 +90,7 @@ private void RedoAction(ActionEvent event) { private void LoadDeliveriesActionHandler(ActionEvent event) throws InterruptedException, ParseException { if(WindowManager.mapLoaded) { FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Choose your deliverires file"); + fileChooser.setTitle("Choose your deliveries file"); fileChooser.getExtensionFilters().addAll( new FileChooser.ExtensionFilter("XML File", "*.xml") ); From f58e7f9f4df24cd732ba20aeacc9333cc99d541d Mon Sep 17 00:00:00 2001 From: Piet Date: Tue, 5 Dec 2017 11:15:40 +0100 Subject: [PATCH 3/7] RoadMap generate --- .../lsbdp/agile/controller/Controller.java | 5 ++++ .../java/lsbdp/agile/data/SerializerXML.java | 25 +++++++++++-------- .../lsbdp/agile/model/DeliverySchedule.java | 11 +++++--- .../java/lsbdp/agile/view/EventHandlers.java | 1 + 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/agile/src/main/java/lsbdp/agile/controller/Controller.java b/agile/src/main/java/lsbdp/agile/controller/Controller.java index f58f97c..d8a05bb 100644 --- a/agile/src/main/java/lsbdp/agile/controller/Controller.java +++ b/agile/src/main/java/lsbdp/agile/controller/Controller.java @@ -1,6 +1,7 @@ package lsbdp.agile.controller; import java.io.File; +import java.io.FileNotFoundException; import java.text.ParseException; import java.util.Date; @@ -54,6 +55,10 @@ public static DeliverySchedule getSchedule() { return schedule; } + public static void generateRoadmapActionHandler(File xml) { + SerializerXML.generateRoadMap(xml, schedule); + } + //Interaction avec Commandes public static void cmdDelete(Delivery element) { Command c = new CommandDelete(element); diff --git a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java index 030ae1f..9a8bf5f 100644 --- a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java +++ b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java @@ -263,15 +263,20 @@ public static ArrayList readDelivery(Element root, StreetMap streetMap * @param d * @throws FileNotFoundException */ - public static void generateRoadMap(File f, DeliverySchedule d) throws FileNotFoundException { - PrintWriter out = new PrintWriter(f); - String timeStamp = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()); - String entete = "-------------------------------------------------\r\n\r\n"; - entete += "| FEUILLE DE ROUTE\r\n"; - entete += "|\r\n"; - entete += "| Date/Heure de génération: " + timeStamp + "\r\n"; - entete += "-------------------------------------------------\r\n\r\n"; - out.print(entete + d.toString()); - out.close(); + public static void generateRoadMap(File f, DeliverySchedule d) { + try { + PrintWriter out = new PrintWriter(f); + String timeStamp = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()); + String entete = "-------------------------------------------------\r\n\r\n"; + entete += "| FEUILLE DE ROUTE\r\n"; + entete += "|\r\n"; + entete += "| Date/Heure de génération: " + timeStamp + "\r\n"; + entete += "-------------------------------------------------\r\n\r\n"; + out.print(entete + d.toString()); + out.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } } diff --git a/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java b/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java index 8c7b78c..2b22731 100644 --- a/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java +++ b/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java @@ -1,4 +1,5 @@ package lsbdp.agile.model; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -15,9 +16,11 @@ public Intersection getWhareHouse() { } public String toString() { + SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss"); + Intersection entrepot = this.getWhareHouse(); String s = "Entrepôt\r\n"; - s += "Localisation" + entrepot.getX() + " " + entrepot.getY() + "\r\n"; + s += "Localisation " + entrepot.getX() + " " + entrepot.getY() + "\r\n"; s += this.startingTime + ": départ"; //TODO implement stratingTime for(int i = 0; i < this.size() ; i++) { @@ -37,11 +40,11 @@ public String toString() { if(i == this.size()-1) { s += "Entrepôt\r\n"; - s += "Localisation" + entrepot.getX() + " " + entrepot.getY() + "\r\n"; + s += "Localisation " + entrepot.getX() + " " + entrepot.getY() + "\r\n"; s += this.endingTime + ": arrivée\r\n"; // TODO implement eta :) } else { - s += "Livraison " + i; - s += "Localisation" + pair.getValue().getLocation().getX() + " | " + pair.getValue().getLocation().getY() + "\r\n"; + s += "LIVRAISON " + i; + s += " Localisation " + pair.getValue().getLocation().getX() + " | " + pair.getValue().getLocation().getY() + "\r\n"; s += pair.getValue().getTimespanStart() + ": arrivée\r\n"; s += " |\r\n"; s += pair.getValue().getTimespanStart() + ": départ"; diff --git a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java index e3a84f6..ed1be51 100644 --- a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java +++ b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java @@ -71,6 +71,7 @@ private void generateRoadmapActionHandler(ActionEvent event) throws InterruptedE new FileChooser.ExtensionFilter("txt File", "*.txt") ); File f = MainWindow.openFileChooserRoadmap(fileChooser); + Controller.generateRoadmapActionHandler(f); } else { MainWindow.openMessagePopup("Please load a delivery file"); } From b963fa18b9fd117c61cb563ba542856351df9b41 Mon Sep 17 00:00:00 2001 From: Piet Date: Tue, 5 Dec 2017 10:44:13 +0100 Subject: [PATCH 4/7] Add Save + modify Serializer (Schedule) --- .../lsbdp/agile/algorithm/TemplateTSP.java | 1 + .../lsbdp/agile/controller/Controller.java | 12 ++++++--- .../java/lsbdp/agile/data/SerializerXML.java | 25 +++++++++++-------- .../java/lsbdp/agile/view/EventHandlers.java | 3 ++- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java b/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java index 35a8591..62de17f 100644 --- a/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java +++ b/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java @@ -18,6 +18,7 @@ public abstract class TemplateTSP implements TSP { @Override public void findSolution(DeliverySchedule schedule, StreetMap map, DeliveriesRequest req) { + schedule.setStartingTime(req.getStartingTime()); count = 0; Intersection warehouse = req.getWarehouse(); List deliveries = req.getDeliveryList(); diff --git a/agile/src/main/java/lsbdp/agile/controller/Controller.java b/agile/src/main/java/lsbdp/agile/controller/Controller.java index 8996c29..f58f97c 100644 --- a/agile/src/main/java/lsbdp/agile/controller/Controller.java +++ b/agile/src/main/java/lsbdp/agile/controller/Controller.java @@ -26,10 +26,14 @@ public Controller() { } //Gérer Map - public static void loadMap(File XML) throws ParseException { - map = SerializerXML.deserializeMapXML(XML); + public static void loadMap(File xml) throws ParseException { + map = SerializerXML.deserializeMapXML(xml); WindowManager.drawMap(map); } + public static void saveDeliveries(File xml) { + SerializerXML.serializeDeliveryXML(schedule, xml); + } + public static void drawMap(){ WindowManager.drawMap(map); } @@ -38,8 +42,8 @@ public static StreetMap getMap() { } //Gérer Schedule - public static DeliverySchedule loadDeliveryRequest(File XML) throws ParseException { - deliveries = SerializerXML.deserializeDeliveryXML(XML, map); + public static DeliverySchedule loadDeliveryRequest(File xml) throws ParseException { + deliveries = SerializerXML.deserializeDeliveryXML(xml, map); algo.findSolution(schedule, map, deliveries); WindowManager.colorDeliverySchedule(schedule); WindowManager.loadListView(schedule); diff --git a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java index 66fc486..030ae1f 100644 --- a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java +++ b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java @@ -30,6 +30,7 @@ import lsbdp.agile.model.Delivery; import lsbdp.agile.model.DeliverySchedule; import lsbdp.agile.model.Intersection; +import lsbdp.agile.model.Route; import lsbdp.agile.model.Street; import lsbdp.agile.model.StreetMap; @@ -47,24 +48,26 @@ public class SerializerXML { * @param deliveriesRequest * @param file */ - public static void serializeDeliveryXML(DeliveriesRequest deliveriesRequest, File file) { + public static void serializeDeliveryXML(DeliverySchedule deliveriesSchedule, File file) { SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss"); try { file.createNewFile(); FileWriter ffw=new FileWriter(file); ffw.write("\n"); ffw.write("\n"); - ffw.write("\n"); - for(Delivery d: deliveriesRequest.getDeliveryList()) { - ffw.write("\n"); + for(Pair d: deliveriesSchedule) { + if(d.getValue()!=null) { + ffw.write("\n"); } - ffw.write("\"/>\n"); } ffw.write("\n"); ffw.close(); diff --git a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java index cfc0008..e3a84f6 100644 --- a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java +++ b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java @@ -56,6 +56,7 @@ private void saveDeliveries(ActionEvent event) { new FileChooser.ExtensionFilter("XML File", "*.xml") ); File f = MainWindow.openFileChooserRoadmap(fileChooser); + Controller.saveDeliveries(f); } else { MainWindow.openMessagePopup("Please load a delivery file"); } @@ -89,7 +90,7 @@ private void RedoAction(ActionEvent event) { private void LoadDeliveriesActionHandler(ActionEvent event) throws InterruptedException, ParseException { if(WindowManager.mapLoaded) { FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Choose your deliverires file"); + fileChooser.setTitle("Choose your deliveries file"); fileChooser.getExtensionFilters().addAll( new FileChooser.ExtensionFilter("XML File", "*.xml") ); From d3d8e0b0fbd4ea85c3491d182daf7ca2a2b79979 Mon Sep 17 00:00:00 2001 From: Piet Date: Tue, 5 Dec 2017 11:15:40 +0100 Subject: [PATCH 5/7] RoadMap generate --- .../lsbdp/agile/controller/Controller.java | 5 ++++ .../java/lsbdp/agile/data/SerializerXML.java | 25 +++++++++++-------- .../lsbdp/agile/model/DeliverySchedule.java | 11 +++++--- .../java/lsbdp/agile/view/EventHandlers.java | 1 + 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/agile/src/main/java/lsbdp/agile/controller/Controller.java b/agile/src/main/java/lsbdp/agile/controller/Controller.java index f58f97c..d8a05bb 100644 --- a/agile/src/main/java/lsbdp/agile/controller/Controller.java +++ b/agile/src/main/java/lsbdp/agile/controller/Controller.java @@ -1,6 +1,7 @@ package lsbdp.agile.controller; import java.io.File; +import java.io.FileNotFoundException; import java.text.ParseException; import java.util.Date; @@ -54,6 +55,10 @@ public static DeliverySchedule getSchedule() { return schedule; } + public static void generateRoadmapActionHandler(File xml) { + SerializerXML.generateRoadMap(xml, schedule); + } + //Interaction avec Commandes public static void cmdDelete(Delivery element) { Command c = new CommandDelete(element); diff --git a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java index 030ae1f..9a8bf5f 100644 --- a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java +++ b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java @@ -263,15 +263,20 @@ public static ArrayList readDelivery(Element root, StreetMap streetMap * @param d * @throws FileNotFoundException */ - public static void generateRoadMap(File f, DeliverySchedule d) throws FileNotFoundException { - PrintWriter out = new PrintWriter(f); - String timeStamp = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()); - String entete = "-------------------------------------------------\r\n\r\n"; - entete += "| FEUILLE DE ROUTE\r\n"; - entete += "|\r\n"; - entete += "| Date/Heure de génération: " + timeStamp + "\r\n"; - entete += "-------------------------------------------------\r\n\r\n"; - out.print(entete + d.toString()); - out.close(); + public static void generateRoadMap(File f, DeliverySchedule d) { + try { + PrintWriter out = new PrintWriter(f); + String timeStamp = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()); + String entete = "-------------------------------------------------\r\n\r\n"; + entete += "| FEUILLE DE ROUTE\r\n"; + entete += "|\r\n"; + entete += "| Date/Heure de génération: " + timeStamp + "\r\n"; + entete += "-------------------------------------------------\r\n\r\n"; + out.print(entete + d.toString()); + out.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } } diff --git a/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java b/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java index 8c7b78c..2b22731 100644 --- a/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java +++ b/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java @@ -1,4 +1,5 @@ package lsbdp.agile.model; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -15,9 +16,11 @@ public Intersection getWhareHouse() { } public String toString() { + SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss"); + Intersection entrepot = this.getWhareHouse(); String s = "Entrepôt\r\n"; - s += "Localisation" + entrepot.getX() + " " + entrepot.getY() + "\r\n"; + s += "Localisation " + entrepot.getX() + " " + entrepot.getY() + "\r\n"; s += this.startingTime + ": départ"; //TODO implement stratingTime for(int i = 0; i < this.size() ; i++) { @@ -37,11 +40,11 @@ public String toString() { if(i == this.size()-1) { s += "Entrepôt\r\n"; - s += "Localisation" + entrepot.getX() + " " + entrepot.getY() + "\r\n"; + s += "Localisation " + entrepot.getX() + " " + entrepot.getY() + "\r\n"; s += this.endingTime + ": arrivée\r\n"; // TODO implement eta :) } else { - s += "Livraison " + i; - s += "Localisation" + pair.getValue().getLocation().getX() + " | " + pair.getValue().getLocation().getY() + "\r\n"; + s += "LIVRAISON " + i; + s += " Localisation " + pair.getValue().getLocation().getX() + " | " + pair.getValue().getLocation().getY() + "\r\n"; s += pair.getValue().getTimespanStart() + ": arrivée\r\n"; s += " |\r\n"; s += pair.getValue().getTimespanStart() + ": départ"; diff --git a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java index e3a84f6..ed1be51 100644 --- a/agile/src/main/java/lsbdp/agile/view/EventHandlers.java +++ b/agile/src/main/java/lsbdp/agile/view/EventHandlers.java @@ -71,6 +71,7 @@ private void generateRoadmapActionHandler(ActionEvent event) throws InterruptedE new FileChooser.ExtensionFilter("txt File", "*.txt") ); File f = MainWindow.openFileChooserRoadmap(fileChooser); + Controller.generateRoadmapActionHandler(f); } else { MainWindow.openMessagePopup("Please load a delivery file"); } From be7f64c4fbc4ae6ce30cb8b8ee39d4a5c64e530d Mon Sep 17 00:00:00 2001 From: Piet Date: Tue, 5 Dec 2017 17:41:24 +0100 Subject: [PATCH 6/7] Feuille de route update + println DELETE --- .../lsbdp/agile/algorithm/TemplateTSP.java | 9 ---- .../java/lsbdp/agile/data/SerializerXML.java | 18 ++++---- .../main/java/lsbdp/agile/model/Delivery.java | 4 +- .../lsbdp/agile/model/DeliverySchedule.java | 33 +++++++-------- .../main/java/lsbdp/agile/model/Route.java | 42 ++++++++++++++++++- 5 files changed, 66 insertions(+), 40 deletions(-) diff --git a/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java b/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java index 62de17f..a773c11 100644 --- a/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java +++ b/agile/src/main/java/lsbdp/agile/algorithm/TemplateTSP.java @@ -46,10 +46,6 @@ public void findSolution(DeliverySchedule schedule, StreetMap map, DeliveriesReq branchAndBound(timeCost.length - 1, nonView, view, 0f, timeCost, duration, timeWindows); if (solutionFound) { - System.out.println("Best Solution found : cost : " + bestSolutionCost); - System.out.println(Arrays.toString(bestSolution)); - System.out.println(Arrays.toString(timeOfArrival)); - for (int i = 0; i < bestSolution.length - 1; i++) { Delivery d = deliveries.get(bestSolution[i + 1]); Route r = graphTSP[bestSolution[i]][bestSolution[i + 1]]; @@ -63,11 +59,8 @@ public void findSolution(DeliverySchedule schedule, StreetMap map, DeliveriesReq schedule.setEndingTime(delTime); Route r = graphTSP[bestSolution[bestSolution.length - 1]][graphTSP.length - 1]; schedule.add(new Pair<>(r, null)); - } else { - System.out.println("No Solution Found"); } - System.out.println("Number of call : " + count); //TODO : What to do with the come back to the warehouse ?? } @@ -89,8 +82,6 @@ private void branchAndBound(int crtNode, ArrayList nonView, ArrayList idIdentifier; /** - * Méthode permettant de sérialiser des objets Java en un document XML dans le but de faire une sauvegarde + * Methode permettant de serialiser des objets Java en un document XML dans le but de faire une sauvegarde * @param deliveriesRequest * @param file */ @@ -78,7 +78,7 @@ public static void serializeDeliveryXML(DeliverySchedule deliveriesSchedule, Fil } /** - * Méthode permettant de désérialiser une map à partir d'un fichier XML + * Methode permettant de deserialiser une map a partir d'un fichier XML * @param fileXML * @return */ @@ -101,7 +101,7 @@ public static StreetMap deserializeMapXML(File fileXML) { return streetMap; } /** - * Méthode permettant de lire et de créer toutes les intersections à partir d'un fichier XML + * Methode permettant de lire et de creer toutes les intersections a partir d'un fichier XML * @param root * @return */ @@ -140,7 +140,7 @@ public static StreetMap readIntersection (Element root) { } /** - * Méthode permettant de lire et de créer toutes les rues à partir d'un fichier XML + * Methode permettant de lire et de creer toutes les rues a partir d'un fichier XML * @param root * @param streetMap */ @@ -166,7 +166,7 @@ public static void readTroncon (Element root, StreetMap streetMap) { } /** - * Méthode permettant de lire un fichier de livraisons et de créer un parcours de livraisons à partir d'un fichier XML + * Methode permettant de lire un fichier de livraisons et de creer un parcours de livraisons a partir d'un fichier XML * @param fileXML * @param streetMap * @return @@ -192,7 +192,7 @@ public static DeliveriesRequest deserializeDeliveryXML(File fileXML, StreetMap s } /** - * Méthode permettant de lire un entrepôt et une heure de départ de livraison à partir d'un fichier XML + * Methode permettant de lire un entrepot et une heure de depart de livraison a partir d'un fichier XML * @param root * @param streetMap * @return @@ -222,7 +222,7 @@ public static Pair readWarehouse (Element root, StreetMap s } /** - * Méthode permettant de lire et de créer un lieu de livraison à partir d'un fichier XML + * Methode permettant de lire et de creer un lieu de livraison a partir d'un fichier XML * @param root * @param streetMap * @return @@ -258,7 +258,7 @@ public static ArrayList readDelivery(Element root, StreetMap streetMap } /** - * Méthode permettant de générer une feuille de route + * Methode permettant de generer une feuille de route * @param f * @param d * @throws FileNotFoundException diff --git a/agile/src/main/java/lsbdp/agile/model/Delivery.java b/agile/src/main/java/lsbdp/agile/model/Delivery.java index 4cd5544..6e7a255 100644 --- a/agile/src/main/java/lsbdp/agile/model/Delivery.java +++ b/agile/src/main/java/lsbdp/agile/model/Delivery.java @@ -52,7 +52,7 @@ public Date getDeliveryTime() { return deliveryTime; } - public void setDeliveryTime(long deliveryTime) { - this.deliveryTime.setTime(deliveryTime); + public void setDeliveryTime(Date deliveryTime) { + this.deliveryTime = deliveryTime; } } diff --git a/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java b/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java index 2b22731..6905c29 100644 --- a/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java +++ b/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java @@ -2,7 +2,6 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; -import java.util.List; import javafx.util.Pair; @@ -20,35 +19,33 @@ public String toString() { Intersection entrepot = this.getWhareHouse(); String s = "Entrepôt\r\n"; - s += "Localisation " + entrepot.getX() + " " + entrepot.getY() + "\r\n"; - s += this.startingTime + ": départ"; //TODO implement stratingTime + s += "Localisation : Coordonnées X " + entrepot.getX() + " | Y " + entrepot.getY() + "\r\n"; + s += "Heure de départ : " + formater.format(this.startingTime) +"\r\n"; for(int i = 0; i < this.size() ; i++) { Pair pair = this.get(i); if(i == 0) { - s += "------ Itinéraire Entrepôt -> Livraison 1 ------"; + s += "--------- Itinéraire Entrepôt -> Livraison 1 ---------\r\n"; } else { - s += "------ Itinéraire Livraison " + i + " -> Livraison " + i + " ------"; + s += "--------- Itinéraire Livraison " + i + " -> Livraison " + (i+1) + " ---------\r\n"; } - + s += pair.getKey().toString(); s += "\r\n"; - - pair.getKey().toString(); //Call Route toString method - - s += "--------------------------------------------------\r\n\r\n"; + + s += "------------------------------------------------------------------------------------------------\r\n"; + s += "------------------------------------------------------------------------------------------------\r\n\r\n"; if(i == this.size()-1) { s += "Entrepôt\r\n"; - s += "Localisation " + entrepot.getX() + " " + entrepot.getY() + "\r\n"; - s += this.endingTime + ": arrivée\r\n"; // TODO implement eta :) + s += "Localisation : Coordonnées X " + entrepot.getX() + " | Y " + entrepot.getY() + "\r\n"; + s += "Heure d'arrivée estimée : " + formater.format(this.endingTime) + "\r\n"; } else { - s += "LIVRAISON " + i; - s += " Localisation " + pair.getValue().getLocation().getX() + " | " + pair.getValue().getLocation().getY() + "\r\n"; - s += pair.getValue().getTimespanStart() + ": arrivée\r\n"; - s += " |\r\n"; - s += pair.getValue().getTimespanStart() + ": départ"; - s += "\r\n\r\n"; + s += "LIVRAISON " + (i+1) + "\r\n"; + s += "Localisation : Coordonnées X " + pair.getValue().getLocation().getX() + "| Y " + pair.getValue().getLocation().getY() + "\r\n"; + s += "Heure d'arrivée sur place : " + formater.format(pair.getValue().getTimespanStart()) + "\r\n"; + s += " |\r\n"; + s += "Heure de départ : " + formater.format(pair.getValue().getTimespanEnd()) + "\r\n\r\n"; } } return s; diff --git a/agile/src/main/java/lsbdp/agile/model/Route.java b/agile/src/main/java/lsbdp/agile/model/Route.java index 30d5b34..ef6bc8f 100644 --- a/agile/src/main/java/lsbdp/agile/model/Route.java +++ b/agile/src/main/java/lsbdp/agile/model/Route.java @@ -42,9 +42,33 @@ public float getTotalLength() { } public String toString() { - String s = "Point de départ: " + startingPoint.getX() + " | " + startingPoint.getY() + "\r\n"; + String s = "Point de départ : X " + startingPoint.getX() + " | Y " + startingPoint.getY() + "\r\n"; + s+= "DEBUT DU TRAJET\r\n"; + String previousStreet = null; + float length = 0; for(Street street: streets) { - s += street.toString(); + if(streets.indexOf(street)==0) { + previousStreet = street.getName(); + length = street.getLength(); + }else if(streets.indexOf(street)==streets.size()-1){ + length += street.getLength(); + s+= "Prendre la route " + street.getName() + " sur une longueur de " + ((int)(length/10)*10) + "m et vous êtes arrivé."; + s+= "\r\n"; + s+="FIN DU TRAJET"; + }else { + if(street.getName().compareTo(previousStreet)==0) { + length += street.getLength(); + }else{ + if(length==0) length = street.getLength(); + s+= "Prendre la route " + previousStreet + " sur une longueur de " + ((int)(length/10)*10) + "m jusqu'à l'intersection avec " + street.getName(); + s+= "\r\n"; + previousStreet = street.getName(); + length = 0; +// int index = streets.indexOf(street); +// if(index<2) CalculeAngle(startingPoint, streets.get(index-1).getEnd(), street.getEnd()); +// else CalculeAngle(startingPoint, streets.get(index-1).getEnd(), street.getEnd()); + } + } } return s; } @@ -52,4 +76,18 @@ public String toString() { public float getTotalTime() { return getTotalLength()/MEAN_SPEED; } + +// public static String CalculeAngle(Intersection first, Intersection second, Intersection third) { +// //Calcule sens d'arrivée +// int deltaFromX = second.getX() - first.getX(); +// int deltaFromY = second.getY() - first.getY(); +// int deltaToX = third.getX() - second.getX(); +// int deltaToY = third.getY() - third.getY(); +// double angle = (-deltaFromX)*(deltaToX)+(-deltaFromY)*(deltaToY); +// angle /= Math.sqrt( Math.pow(deltaFromX, 2) + Math.pow(deltaFromY, 2)); +// angle /= Math.sqrt( Math.pow(deltaToX , 2) + Math.pow(deltaToY , 2)); +// angle = Math.acos(angle) * 180 / Math.PI; +// System.out.println(angle); +// return "calcul ANgle = " + angle; +// } } From 9d4dca0d69f6958497de1c5b12888755d800cc78 Mon Sep 17 00:00:00 2001 From: Piet Date: Tue, 5 Dec 2017 18:01:24 +0100 Subject: [PATCH 7/7] DELETE PrintLN (because Papy) + Correction warehouse + serializer --- agile/src/main/java/lsbdp/agile/data/SerializerXML.java | 2 +- agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java | 4 ++-- agile/src/main/java/lsbdp/agile/view/WindowManager.java | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java index 9594005..04a86de 100644 --- a/agile/src/main/java/lsbdp/agile/data/SerializerXML.java +++ b/agile/src/main/java/lsbdp/agile/data/SerializerXML.java @@ -49,7 +49,7 @@ public class SerializerXML { * @param file */ public static void serializeDeliveryXML(DeliverySchedule deliveriesSchedule, File file) { - SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss"); + SimpleDateFormat formater = new SimpleDateFormat("H:m:s"); try { file.createNewFile(); FileWriter ffw=new FileWriter(file); diff --git a/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java b/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java index 6905c29..a2ec225 100644 --- a/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java +++ b/agile/src/main/java/lsbdp/agile/model/DeliverySchedule.java @@ -10,14 +10,14 @@ public class DeliverySchedule extends ArrayList>{ private Date startingTime; private Date endingTime; - public Intersection getWhareHouse() { + public Intersection getWarehouse() { return this.get(0).getKey().getStartingPoint(); } public String toString() { SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss"); - Intersection entrepot = this.getWhareHouse(); + Intersection entrepot = this.getWarehouse(); String s = "Entrepôt\r\n"; s += "Localisation : Coordonnées X " + entrepot.getX() + " | Y " + entrepot.getY() + "\r\n"; s += "Heure de départ : " + formater.format(this.startingTime) +"\r\n"; diff --git a/agile/src/main/java/lsbdp/agile/view/WindowManager.java b/agile/src/main/java/lsbdp/agile/view/WindowManager.java index 999aaa2..defddc1 100644 --- a/agile/src/main/java/lsbdp/agile/view/WindowManager.java +++ b/agile/src/main/java/lsbdp/agile/view/WindowManager.java @@ -87,7 +87,6 @@ public static void colorDeliverySchedule (DeliverySchedule ds) { Intersection warehouse = ds.get(0).getKey().getStartingPoint(); canvasDrawer.drawWarehouse(overlay, warehouse, Color.GREEN, 5d); for (Pair p : ds) { - System.out.println(p.getKey() +" " + p.getValue()); if(p.getKey() != null && p.getValue() != null) { colorRoute(p.getKey(), p.getValue()); }