From 56e180906856e9bc7c5e81e4c9eea6647c51c365 Mon Sep 17 00:00:00 2001 From: diegospillo <123877541+diegospillo@users.noreply.github.com> Date: Wed, 4 Jun 2025 16:49:37 +0200 Subject: [PATCH] Add stop visualization workflow --- src/controller/GeneralController.java | 14 ++++++- src/controller/StopController.java | 57 ++++++++++++++++++++++----- 2 files changed, 61 insertions(+), 10 deletions(-) diff --git a/src/controller/GeneralController.java b/src/controller/GeneralController.java index 4e9d69f..6df8760 100644 --- a/src/controller/GeneralController.java +++ b/src/controller/GeneralController.java @@ -35,6 +35,18 @@ public void visualizzaLinea(String idLinea,boolean direction) { } public void visualizzaFermata(String stop_id) { - + // 1. Reset dati precedenti + Set waypoints = stopController.get_Waypoints(); + mapController.clearWaypoint(waypoints); + + // 2. Carica le informazioni della fermata + stopController.viewStopById(stop_id); + waypoints = stopController.get_Waypoints(); + + // 3. Aggiorna la mappa con la singola fermata + mapController.initStopspoint("", waypoints); + + // 4. Mostra la fermata nella vista laterale + stopController.showFermata(); } } diff --git a/src/controller/StopController.java b/src/controller/StopController.java index 8938f7d..155be00 100644 --- a/src/controller/StopController.java +++ b/src/controller/StopController.java @@ -1,27 +1,26 @@ package controller; -import java.util.HashSet; -import java.util.Set; +import java.util.*; import org.jxmapviewer.viewer.GeoPosition; -import service.DataRow; -import service.GTFSManager; -import service.Stop_Times; +import service.*; import view.MainView; import waypoint.MyWaypoint; public class StopController { - private final GTFSManager gtfsManager; - private final MainView mainView; - private final Set waypoints = new HashSet<>(); + private final GTFSManager gtfsManager; + private final MainView mainView; + private final Set waypoints = new HashSet<>(); + private String stopId; + private String stopName; public StopController(MainView mainView){ this.gtfsManager = GTFSManager.getInstance(); this.mainView = mainView; } - public void loadStopWaypoint(String shape_id) { + public void loadStopWaypoint(String shape_id) { for (Stop_Times item : Stop_Times.getStops_times()) { MyWaypoint.PointType point; DataRow row = gtfsManager.getStopById(item.getStop_id()); @@ -55,6 +54,46 @@ else if(item.getTimepoint().equals("1")) { } System.out.println("waypoints: " + waypoints.size()); } + + public void viewStopById(String stop_id) { + this.stopId = stop_id; + waypoints.clear(); + mainView.get_modelFermate().clear(); + mainView.get_modelOrari().clear(); + + DataRow row = gtfsManager.getStopById(stop_id); + if (row == null) { + return; + } + this.stopName = row.get("stop_name"); + + MyWaypoint wayPoint = new MyWaypoint(0, stopName, MyWaypoint.PointType.STOPS, + mainView.get_event(), + new GeoPosition(Double.parseDouble(row.get("stop_lat")), Double.parseDouble(row.get("stop_lon")))); + waypoints.add(wayPoint); + + List stopRoutes = GTFSReader.filterStop_timesByStop_id(stop_id, gtfsManager); + if (stopRoutes != null) { + Stop_Routes.SetStopRoutes(stopRoutes); + Map> routes = Stop_Routes.GetStopRoutes(); + for (Map.Entry> entry : routes.entrySet()) { + String route = entry.getKey(); + Stop_Routes.setCurrentTimeIndex(route); + Integer idx = Stop_Routes.getCurrentTimeIndex(route); + if (idx != null) { + Stop_Routes sr = entry.getValue().get(idx); + mainView.get_modelOrari().addElement(route + " " + sr.getTrip_headsign() + " " + sr.getArrival_time()); + } + } + } + } + + public void showFermata() { + mainView.get_lblLinea().setText(stopName + " (" + stopId + ")"); + mainView.get_btnInvertiDirezione().setVisible(false); + mainView.get_btnIndietro().setVisible(false); + mainView.get_scrollPanel().setViewportView(mainView.get_orariList()); + } public Set get_Waypoints() { return waypoints;