package com.mehmetakiftutuncu.eshotroid.utility; import java.util.ArrayList; import android.util.Log; import com.mehmetakiftutuncu.eshotroid.BuildConfig; import com.mehmetakiftutuncu.eshotroid.model.Bus; import com.mehmetakiftutuncu.eshotroid.model.BusTime; /** A utility class for processing the parsed information * * @author mehmetakiftutuncu */ public class Processor { // Separators used in processing public static final String BUS_NUMBER_SEPARATOR = ":"; public static final String BUS_PLACE_SEPARATOR = "\\-"; /** Tag for debugging */ public static final String LOG_TAG = "Eshotroid_Processor"; /** Processes the list of parsed busses and generates a list of {@link Bus} * objects * * @param busses List of parsed busses * * @return List of {@link Bus} objects, null if any error occurs */ public static ArrayList<Bus> processListOfBusses(ArrayList<String> busses) { if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Processing list of busses..."); try { // Resulting list ArrayList<Bus> list = new ArrayList<Bus>(); // For each String (parsed information) "i" in busses (the parsed list) for(String i : busses) { // Separate number and the places String[] temp = i.split(BUS_NUMBER_SEPARATOR); // Get the number int number = Integer.parseInt(temp[0].trim()); // Separate the places as source and destination temp = temp[1].trim().split(BUS_PLACE_SEPARATOR); // Get source and destination String source = temp[0].trim(); String destination = temp[1].trim(); // Generate the object Bus bus = new Bus(number, source, destination, "", false, null, null, null, true, true, true); // Add the object to the list list.add(bus); } return list; } catch(Exception e) { Log.e(LOG_TAG, "Error occured while processing busses!", e); return null; } } /** Processes the list of parsed bus times and generates a list of * {@link BusTime} objects * * @param busTimes List of parsed bus times * * @return List of {@link BusTime} objects, null if any error occurs */ public static ArrayList<BusTime> processBusTimes(ArrayList<String> busTimes) { if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Processing bus times..."); try { // Resulting list ArrayList<BusTime> list = new ArrayList<BusTime>(); // For every 2 items for(int i = 0; i < busTimes.size(); i += 2) { // Get first as source time String sourceText = busTimes.get(i); String[] sourceTokens = sourceText.split(BusTime.BUS_TIME_SEPARATOR); String source = sourceTokens[0]; boolean isWheelChairEnabledSource = sourceTokens[1].equals("true"); // Get second as destination time String destinationText = busTimes.get(i + 1); String[] destinationTokens = destinationText.split(BusTime.BUS_TIME_SEPARATOR); String destination = destinationTokens[0]; boolean isWheelChairEnabledDestination = destinationTokens[1].equals("true"); // If a time is not available, replace it with empty String if(source.startsWith(" ")) { source = ""; isWheelChairEnabledSource = false; } if(destination.startsWith(" ")) { destination = ""; isWheelChairEnabledDestination = false; } // Generate a new object and add the object to the list list.add(new BusTime(source, destination, isWheelChairEnabledSource, isWheelChairEnabledDestination)); } return list; } catch(Exception e) { Log.e(LOG_TAG, "Error occured while processing bus times!", e); return null; } } }