// 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/map/StopZone.java
// public class StopZone {
//     private int _id;
//     private int cityway_id;
//     private int tam_id;
//     private String name;
//     private String search_name;
//     private ArrayList<Line> lines;
//     private ArrayList<Stop> stops;
// 
//     private Location location;
//     private ArrayList<Report> reportList;
//     private float distanceFromUser;
// 
//     public StopZone(String name, int _id, int tam_id, int cityway_id, String search_name, double lat, double lon){
//         this.lines = new ArrayList<>();
//         this.reportList = new ArrayList<>();
//         this.name = name;
//         this.cityway_id = cityway_id;
//         this._id = _id;
//         this.tam_id = tam_id;
//         this.search_name = search_name;
//         this.location = new Location(name);
//         this.location.setLongitude(lon);
//         this.location.setLatitude(lat);
//         this.stops = new ArrayList<>();
//     }
// 
//     public void addLine(Line line) {
//         if (!this.lines.contains(line)) {
//             this.lines.add(line);
//         }
//     }
// 
//     public void addStop(Stop stop) {
//         this.stops.add(stop);
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public ArrayList<Line> getLines() {
//         return this.lines;
//     }
// 
//     public int getID() {
//         return this._id;
//     }
// 
//     public void addReport(Report report) {
//         this.reportList.add(report);
//     }
// 
//     public ArrayList<Report> getReports() {
//         ArrayList<Report> res = new ArrayList<>();
//         Calendar date = Calendar.getInstance();
//         for (Report r : this.reportList) {
//             if (r.isValid(date)) res.add(r);
//         }
//         Collections.reverse(res); // the last is the oldest now.
//         return res;
//     }
// 
//     public void removeReport(Report rep) {
//         this.reportList.remove(rep);
//     }
// 
//     public void calcDistanceFromUser(Location user) {
//         distanceFromUser = user.distanceTo(this.location);
//     }
// 
//     public String getNormalisedName() {
//         return search_name;
//     }
// 
//     public float getDistanceFromUser() {
//         return distanceFromUser;
//     }
// 
//     public ArrayList<Stop> getStops(Line line) {
//         ArrayList<Stop> res = new ArrayList<>();
//         for (Stop stop : stops) {
//             if (stop.getDirection().getLine().getCityway_id() == line.getCityway_id()) {
//                 res.add(stop);
//             }
//         }
//         return res;
//     }
// 
//     public ArrayList<Stop> getStops() {
//         return stops;
//     }
// 
//     @Override
//     public String toString() {
//         return "StopZone{" +
//                 "name='" + name + '\'' +
//                 ", lines=" + lines +
//                 ", stops=" + stops +
//                 '}';
//     }
// }


import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import flying.grub.tamtime.data.Data;
import flying.grub.tamtime.data.map.StopZone;
package flying.grub.tamtime.data.persistence;




public class FavoriteStops {
    private static final String TAG = FavoriteStops.class.getSimpleName();

    private List<StopZone> favoriteStop;
    private Context context;

    public FavoriteStops(Context c) {
        context = c;
        getFromPref();
    }

    private void getFromPref() {
        SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);

        favoriteStop = new ArrayList<>();
        for (String stop_zone_id : defaultSharedPreferences.getStringSet(TAG, new HashSet<String>())) {
// 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/map/StopZone.java
// public class StopZone {
//     private int _id;
//     private int cityway_id;
//     private int tam_id;
//     private String name;
//     private String search_name;
//     private ArrayList<Line> lines;
//     private ArrayList<Stop> stops;
// 
//     private Location location;
//     private ArrayList<Report> reportList;
//     private float distanceFromUser;
// 
//     public StopZone(String name, int _id, int tam_id, int cityway_id, String search_name, double lat, double lon){
//         this.lines = new ArrayList<>();
//         this.reportList = new ArrayList<>();
//         this.name = name;
//         this.cityway_id = cityway_id;
//         this._id = _id;
//         this.tam_id = tam_id;
//         this.search_name = search_name;
//         this.location = new Location(name);
//         this.location.setLongitude(lon);
//         this.location.setLatitude(lat);
//         this.stops = new ArrayList<>();
//     }
// 
//     public void addLine(Line line) {
//         if (!this.lines.contains(line)) {
//             this.lines.add(line);
//         }
//     }
// 
//     public void addStop(Stop stop) {
//         this.stops.add(stop);
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public ArrayList<Line> getLines() {
//         return this.lines;
//     }
// 
//     public int getID() {
//         return this._id;
//     }
// 
//     public void addReport(Report report) {
//         this.reportList.add(report);
//     }
// 
//     public ArrayList<Report> getReports() {
//         ArrayList<Report> res = new ArrayList<>();
//         Calendar date = Calendar.getInstance();
//         for (Report r : this.reportList) {
//             if (r.isValid(date)) res.add(r);
//         }
//         Collections.reverse(res); // the last is the oldest now.
//         return res;
//     }
// 
//     public void removeReport(Report rep) {
//         this.reportList.remove(rep);
//     }
// 
//     public void calcDistanceFromUser(Location user) {
//         distanceFromUser = user.distanceTo(this.location);
//     }
// 
//     public String getNormalisedName() {
//         return search_name;
//     }
// 
//     public float getDistanceFromUser() {
//         return distanceFromUser;
//     }
// 
//     public ArrayList<Stop> getStops(Line line) {
//         ArrayList<Stop> res = new ArrayList<>();
//         for (Stop stop : stops) {
//             if (stop.getDirection().getLine().getCityway_id() == line.getCityway_id()) {
//                 res.add(stop);
//             }
//         }
//         return res;
//     }
// 
//     public ArrayList<Stop> getStops() {
//         return stops;
//     }
// 
//     @Override
//     public String toString() {
//         return "StopZone{" +
//                 "name='" + name + '\'' +
//                 ", lines=" + lines +
//                 ", stops=" + stops +
//                 '}';
//     }
// }


// Path: app/src/main/java/flying/grub/tamtime/data/persistence/FavoriteStops.java
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import flying.grub.tamtime.data.Data;
import flying.grub.tamtime.data.map.StopZone;

package flying.grub.tamtime.data.persistence;




public class FavoriteStops {
    private static final String TAG = FavoriteStops.class.getSimpleName();

    private List<StopZone> favoriteStop;
    private Context context;

    public FavoriteStops(Context c) {
        context = c;
        getFromPref();
    }

    private void getFromPref() {
        SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);

        favoriteStop = new ArrayList<>();
        for (String stop_zone_id : defaultSharedPreferences.getStringSet(TAG, new HashSet<String>())) {
            favoriteStop.add(Data.getData().getMap().getStopZoneById(Integer.parseInt(stop_zone_id)));