// Path: src/it/reyboz/bustorino/data/GTTInfoInject.java
// public abstract class GTTInfoInject {
// 
//     public static String findIDWhenMissingByName(String stopName){
//         String stringSwitch = stopName.toUpperCase(Locale.ROOT).trim();
//         //if (stringSwitch.contains("METRO")){
//         String finalID;
//         switch (stringSwitch){
//             case "METRO FERMI":
//                 finalID="8210";
//                 break;
//             case "METRO PARADISO":
//                 finalID="8211";
//                 break;
//             case "METRO MARCHE":
//                 finalID="8212";
//                 break;
//             case "METRO MASSAUA":
//                 finalID="8213";
//                 break;
//             case "METRO POZZO STRADA":
//                 finalID="8214";
//                 break;
//             case "METRO MONTE GRAPPA":
//                 finalID="8215";
//                 break;
//             case "METRO RIVOLI":
//                 finalID="8216";
//                 break;
//             case "METRO RACCONIGI":
//                 finalID="8217";
//                 break;
//             case "METRO BERNINI":
//                 finalID="8218";
//                 break;
//             case "METRO PRINCIPI ACAJA":
//                 finalID="8219";
//                 break;
//             case "METRO XVIII DICEMBRE":
//                 finalID="8220";
//                 break;
//             case "METRO PORTA SUSA":
//                 finalID="8221";
//                 break;
//             case "METRO VINZAGLIO":
//                 finalID="8222";
//                 break;
//             case "METRO RE UMBERTO":
//                 finalID="8223";
//                 break;
//             case "METRO PORTA NUOVA":
//                 finalID="8224";
//                 break;
//             case "METRO MARCONI":
//                 finalID="8225";
//                 break;
//             case "METRO NIZZA":
//                 finalID="8226";
//                 break;
//             case "METRO DANTE":
//                 finalID="8227";
//                 break;
//             case "METRO CARDUCCI":
//                 finalID="8228";
//                 break;
//             case "METRO SPEZIA":
//                 finalID="8229";
//                 break;
//             case "METRO LINGOTTO":
//                 finalID="8230";
//                 break;
//             case "METRO ITALIA 61":
//             case "METRO ITALIA61":
//                 finalID="8231";
//                 break;
//             case "METRO BENGASI":
//                 finalID="8232";
//                 break;
//             default:
//                 finalID="";
//         }
//         return finalID;
//     }
// }


import java.util.concurrent.atomic.AtomicReference;
import androidx.annotation.Nullable;
import android.util.Log;
import it.reyboz.bustorino.data.GTTInfoInject;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.*;
                if(location.trim().equals("_")) location = null;
                String placeName = currentStop.getString("placeName");
                if(placeName.trim().equals("_")) placeName = null;
                String[] lines = currentStop.getString("lines").split(",");
                for(int l = 0; l<lines.length;l++){
                    lines[l] = FiveTNormalizer.routeDisplayToInternal(lines[l]);
                }
                Route.Type t;
                switch (currentStop.getString("type")){
                    case "BUS":
                        t = Route.Type.BUS;
                        break;
                    case "METRO":
                        t = Route.Type.METRO;
                        break;
                    case "TRENO":
                        t = Route.Type.RAILWAY;
                        break;
                    default:
                        t = Route.Type.UNKNOWN;
                }
                String stopName = currentStop.getString("name");
                String stopID;
                if(stopName.toLowerCase().contains("metro"))
                    t= Route.Type.METRO;
                try {
                    stopID = currentStop.getString("id");
                } catch (JSONException exc){
                    // we don't have the ID
                    //check if we have it already as hardcoded
// Path: src/it/reyboz/bustorino/data/GTTInfoInject.java
// public abstract class GTTInfoInject {
// 
//     public static String findIDWhenMissingByName(String stopName){
//         String stringSwitch = stopName.toUpperCase(Locale.ROOT).trim();
//         //if (stringSwitch.contains("METRO")){
//         String finalID;
//         switch (stringSwitch){
//             case "METRO FERMI":
//                 finalID="8210";
//                 break;
//             case "METRO PARADISO":
//                 finalID="8211";
//                 break;
//             case "METRO MARCHE":
//                 finalID="8212";
//                 break;
//             case "METRO MASSAUA":
//                 finalID="8213";
//                 break;
//             case "METRO POZZO STRADA":
//                 finalID="8214";
//                 break;
//             case "METRO MONTE GRAPPA":
//                 finalID="8215";
//                 break;
//             case "METRO RIVOLI":
//                 finalID="8216";
//                 break;
//             case "METRO RACCONIGI":
//                 finalID="8217";
//                 break;
//             case "METRO BERNINI":
//                 finalID="8218";
//                 break;
//             case "METRO PRINCIPI ACAJA":
//                 finalID="8219";
//                 break;
//             case "METRO XVIII DICEMBRE":
//                 finalID="8220";
//                 break;
//             case "METRO PORTA SUSA":
//                 finalID="8221";
//                 break;
//             case "METRO VINZAGLIO":
//                 finalID="8222";
//                 break;
//             case "METRO RE UMBERTO":
//                 finalID="8223";
//                 break;
//             case "METRO PORTA NUOVA":
//                 finalID="8224";
//                 break;
//             case "METRO MARCONI":
//                 finalID="8225";
//                 break;
//             case "METRO NIZZA":
//                 finalID="8226";
//                 break;
//             case "METRO DANTE":
//                 finalID="8227";
//                 break;
//             case "METRO CARDUCCI":
//                 finalID="8228";
//                 break;
//             case "METRO SPEZIA":
//                 finalID="8229";
//                 break;
//             case "METRO LINGOTTO":
//                 finalID="8230";
//                 break;
//             case "METRO ITALIA 61":
//             case "METRO ITALIA61":
//                 finalID="8231";
//                 break;
//             case "METRO BENGASI":
//                 finalID="8232";
//                 break;
//             default:
//                 finalID="";
//         }
//         return finalID;
//     }
// }


// Path: src/it/reyboz/bustorino/backend/FiveTAPIFetcher.java
import java.util.concurrent.atomic.AtomicReference;
import androidx.annotation.Nullable;
import android.util.Log;
import it.reyboz.bustorino.data.GTTInfoInject;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.*;

                if(location.trim().equals("_")) location = null;
                String placeName = currentStop.getString("placeName");
                if(placeName.trim().equals("_")) placeName = null;
                String[] lines = currentStop.getString("lines").split(",");
                for(int l = 0; l<lines.length;l++){
                    lines[l] = FiveTNormalizer.routeDisplayToInternal(lines[l]);
                }
                Route.Type t;
                switch (currentStop.getString("type")){
                    case "BUS":
                        t = Route.Type.BUS;
                        break;
                    case "METRO":
                        t = Route.Type.METRO;
                        break;
                    case "TRENO":
                        t = Route.Type.RAILWAY;
                        break;
                    default:
                        t = Route.Type.UNKNOWN;
                }
                String stopName = currentStop.getString("name");
                String stopID;
                if(stopName.toLowerCase().contains("metro"))
                    t= Route.Type.METRO;
                try {
                    stopID = currentStop.getString("id");
                } catch (JSONException exc){
                    // we don't have the ID
                    //check if we have it already as hardcoded
                    stopID = GTTInfoInject.findIDWhenMissingByName(stopName);