// Path: app/src/main/java/flying/grub/tamtime/data/Data.java
// public class Data {
// 
//     private static final String TAG = Data.class.getSimpleName();
// 
//     private DisruptEventHandler disruptEventHandler;
//     private ReportEvent reportEvent;
//     private RealTimes realTimes;
//     private TamMap map;
//     private RealTimeToUpdate toUpdate;
// 
//     private static Data data;
// 
//     private Data() {
//         data = this;
//     }
// 
//     public void init(Context context) {
//         reportEvent = new ReportEvent(context);
//         disruptEventHandler = new DisruptEventHandler(context);
//         realTimes = new RealTimes(context);
//         map = new TamMap(context);
//     }
// 
//     public static synchronized Data getData() {
//         if (data == null) {
//             return new Data();
//         } else {
//             return data;
//         }
//     }
// 
//     public void update() {
//         if (toUpdate != null) {
//             if (toUpdate.isLine()) {
//                 realTimes.updateLine(toUpdate.getLine());
//             } else {
//                 realTimes.updateStops(toUpdate.getStops());
//             }
//         }
//         reportEvent.getReports();
//         //disruptEventHandler.getReports();
//     }
// 
//     public DisruptEventHandler getDisruptEventHandler() {
//         return disruptEventHandler;
//     }
// 
//     public TamMap getMap() {
//         return map;
//     }
// 
//     public void setToUpdate(RealTimeToUpdate toUpdate) {
//         this.toUpdate = toUpdate;
//         update();
//     }
// 
//     public RealTimes getRealTimes() {
//         return realTimes;
//     }
// 
//     public ReportEvent getReportEvent() {
//         return reportEvent;
//     }
// }
// 
// Path: app/src/main/java/flying/grub/tamtime/data/real_time/Time.java
// public class Time {
//     String waitingTime;
//     int hour;
//     int minute;
// 
//     public Time(String waitingTime, int hour, int minute) {
//         this.waitingTime = waitingTime;
//         this.hour = hour;
//         this.minute = minute;
//     }
// 
//     public String getWaitingTime() {
//         return waitingTime;
//     }
// }


import android.content.Context;
import android.location.Location;
import java.text.Normalizer;
import java.util.ArrayList;
import flying.grub.tamtime.data.Data;
import flying.grub.tamtime.data.real_time.Time;
        ArrayList<StopZone> res = new ArrayList<>();
        for (StopZone s : stopZones) {
            if (s.getDistanceFromUser() <= 500) { // in meter
                res.add(s);
            }
        }
        return res;
    }

    public ArrayList<Stop> getStops() {
        return stops;
    }

    public void addTimeToStop(int tam_id, int cityway_id, ArrayList<Time> times) {
        if (tam_id == -1) {
            addTimeToStopByCitywayId(cityway_id, times);
        } else {
            addTimeToStopByTamId(tam_id, times);
        }
    }

    private void addTimeToStopByTamId(int id, ArrayList<Time> times) {
        for (int i = 0; i < Data.getData().getMap().getStops().size(); i++) {
            if (stops.get(i).getTam_id() == id) {
                stops.get(i).setTimes(times);
                return;
            }
        }
    }

// Path: app/src/main/java/flying/grub/tamtime/data/Data.java
// public class Data {
// 
//     private static final String TAG = Data.class.getSimpleName();
// 
//     private DisruptEventHandler disruptEventHandler;
//     private ReportEvent reportEvent;
//     private RealTimes realTimes;
//     private TamMap map;
//     private RealTimeToUpdate toUpdate;
// 
//     private static Data data;
// 
//     private Data() {
//         data = this;
//     }
// 
//     public void init(Context context) {
//         reportEvent = new ReportEvent(context);
//         disruptEventHandler = new DisruptEventHandler(context);
//         realTimes = new RealTimes(context);
//         map = new TamMap(context);
//     }
// 
//     public static synchronized Data getData() {
//         if (data == null) {
//             return new Data();
//         } else {
//             return data;
//         }
//     }
// 
//     public void update() {
//         if (toUpdate != null) {
//             if (toUpdate.isLine()) {
//                 realTimes.updateLine(toUpdate.getLine());
//             } else {
//                 realTimes.updateStops(toUpdate.getStops());
//             }
//         }
//         reportEvent.getReports();
//         //disruptEventHandler.getReports();
//     }
// 
//     public DisruptEventHandler getDisruptEventHandler() {
//         return disruptEventHandler;
//     }
// 
//     public TamMap getMap() {
//         return map;
//     }
// 
//     public void setToUpdate(RealTimeToUpdate toUpdate) {
//         this.toUpdate = toUpdate;
//         update();
//     }
// 
//     public RealTimes getRealTimes() {
//         return realTimes;
//     }
// 
//     public ReportEvent getReportEvent() {
//         return reportEvent;
//     }
// }
// 
// Path: app/src/main/java/flying/grub/tamtime/data/real_time/Time.java
// public class Time {
//     String waitingTime;
//     int hour;
//     int minute;
// 
//     public Time(String waitingTime, int hour, int minute) {
//         this.waitingTime = waitingTime;
//         this.hour = hour;
//         this.minute = minute;
//     }
// 
//     public String getWaitingTime() {
//         return waitingTime;
//     }
// }


// Path: app/src/main/java/flying/grub/tamtime/data/map/TamMap.java
import android.content.Context;
import android.location.Location;
import java.text.Normalizer;
import java.util.ArrayList;
import flying.grub.tamtime.data.Data;
import flying.grub.tamtime.data.real_time.Time;

        ArrayList<StopZone> res = new ArrayList<>();
        for (StopZone s : stopZones) {
            if (s.getDistanceFromUser() <= 500) { // in meter
                res.add(s);
            }
        }
        return res;
    }

    public ArrayList<Stop> getStops() {
        return stops;
    }

    public void addTimeToStop(int tam_id, int cityway_id, ArrayList<Time> times) {
        if (tam_id == -1) {
            addTimeToStopByCitywayId(cityway_id, times);
        } else {
            addTimeToStopByTamId(tam_id, times);
        }
    }

    private void addTimeToStopByTamId(int id, ArrayList<Time> times) {
        for (int i = 0; i < Data.getData().getMap().getStops().size(); i++) {
            if (stops.get(i).getTam_id() == id) {
                stops.get(i).setTimes(times);
                return;
            }
        }
    }

    private void addTimeToStopByCitywayId(int id, ArrayList<Time> times) {