Android Open Source - sthlmtraveling Departures Store






From Project

Back to project page sthlmtraveling.

License

The source code is released under:

Apache License

If you think the Android project sthlmtraveling listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2009-2014 Johan Nilsson <http://markupartist.com>
 */*w ww  .  j a va  2  s .c  om*/
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.markupartist.sthlmtraveling.provider.departure;

import android.content.Context;
import android.text.TextUtils;
import android.util.Log;

import com.crashlytics.android.Crashlytics;
import com.markupartist.sthlmtraveling.provider.site.Site;
import com.markupartist.sthlmtraveling.utils.HttpHelper;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.Serializable;
import java.net.HttpURLConnection;
import java.util.ArrayList;

import static com.markupartist.sthlmtraveling.provider.ApiConf.KEY;
import static com.markupartist.sthlmtraveling.provider.ApiConf.apiEndpoint2;
import static com.markupartist.sthlmtraveling.provider.ApiConf.get;

public class DeparturesStore {
    static String TAG = "DeparturesStore";

    public DeparturesStore() {
    }

    public Departures find(Context context, Site site) throws IllegalArgumentException, IOException {
      if (site == null) {
            Log.w(TAG, "Site is null");
        throw new IllegalArgumentException(TAG + ", Site is null");
      }
      
        Log.d(TAG, "About to get departures for " + site.getName());
        String endpoint = apiEndpoint2()
                + "v1/departures/" + site.getId()
                + "?key=" + get(KEY)
                + "&timewindow=30";

        HttpHelper httpHelper = HttpHelper.getInstance(context);
        HttpURLConnection connection = httpHelper.getConnection(endpoint);

        if (connection.getResponseCode() != 200) {
            Log.w(TAG, "A remote server error occurred when getting departures, status code: " +
                    connection.getResponseCode());
            throw new IOException("A remote server error occurred when getting departures.");
        }

        Departures departures;
        String rawContent = httpHelper.getBody(connection);
        try {
            departures = Departures.fromJson(new JSONObject(rawContent));
        } catch (JSONException e) {
            Crashlytics.logException(e);
            Log.d(TAG, "Could not parse the departure reponse.");
            throw new IOException("Could not parse the response.");
        }

        return departures;
    }

    // TODO: Make this implement Parcelable
    public static class Departures implements Serializable {
        public int siteId;
        public ArrayList<String> servesTypes = new ArrayList<String>();
        public ArrayList<MetroDeparture> metros = new ArrayList<MetroDeparture>();
        public ArrayList<BusDeparture> buses = new ArrayList<BusDeparture>();
        public ArrayList<TramDeparture> trams = new ArrayList<TramDeparture>();
        public ArrayList<TrainDeparture> trains = new ArrayList<TrainDeparture>();

        public static Departures fromJson(JSONObject json) throws JSONException {
            Departures d = new Departures();

            if (!json.isNull("serves_types")) {
                JSONArray jsonServesTypes = json.getJSONArray("serves_types");
                for (int i = 0; i < jsonServesTypes.length(); i++) {
                    d.servesTypes.add(jsonServesTypes.getString(i));
                }
            }

            if (!json.isNull("metros")) {
                JSONObject jsonMetros = json.getJSONObject("metros");
                if (jsonMetros.has("group_of_lines")) {
                    d.metros.add(MetroDeparture.fromJson(jsonMetros));
                }
            }

            if (!json.isNull("buses")) {
                JSONArray jsonBuses = json.getJSONArray("buses");
                for (int i = 0; i < jsonBuses.length(); i++) {
                    d.buses.add(BusDeparture.fromJson(jsonBuses.getJSONObject(i)));
                }
            }

            if (!json.isNull("trams")) {
                JSONArray jsonTrams = json.getJSONArray("trams");
                for (int i = 0; i < jsonTrams.length(); i++) {
                    d.trams.add(TramDeparture.fromJson(jsonTrams.getJSONObject(i)));
                }                
            }

            if (!json.isNull("trains")) {
                JSONArray jsonTrains = json.getJSONArray("trains");
                for (int i = 0; i < jsonTrains.length(); i++) {
                    d.trains.add(TrainDeparture.fromJson(jsonTrains.getJSONObject(i)));
                }
            }

            return d;
        }
    }

    public static class Departure implements Serializable {
        public String stopAreaName;
        public String stopAreaNumber;
    }

    public static class MetroDeparture extends Departure {
        public ArrayList<GroupOfLine> groupOfLines = new ArrayList<GroupOfLine>();

        public static MetroDeparture fromJson(JSONObject json) throws JSONException {
            MetroDeparture md = new MetroDeparture();
            JSONArray jsonGroupOfLines = json.getJSONArray("group_of_lines");
            for (int i = 0; i < jsonGroupOfLines.length(); i++) {
                try {
                    md.groupOfLines.add(GroupOfLine.fromJson(jsonGroupOfLines.getJSONObject(i)));
                } catch (JSONException e) {
                    e.printStackTrace();
                    Log.d(TAG, "Failed to parse group of line for metros: " + e.getMessage());
                }
            }
            return md;
        }
    }

    public static class BusDeparture extends Departure {
        public ArrayList<DisplayRow> departures = new ArrayList<DisplayRow>();

        public static BusDeparture fromJson(JSONObject jsonObject) throws JSONException {
            BusDeparture bd = new BusDeparture();
            bd.stopAreaName = jsonObject.getString("stop_area_name");
            bd.stopAreaNumber = jsonObject.getString("stop_area_number");
            JSONArray jsonObjects = jsonObject.getJSONArray("departures");
            for (int i = 0; i < jsonObjects.length(); i++) {
                bd.departures.add(DisplayRow.fromJson(jsonObjects.getJSONObject(i)));
            }
            return bd;
        }
    }

    public static class TramDeparture extends Departure {
        public ArrayList<DisplayRow> direction1 = new ArrayList<DisplayRow>();
        public ArrayList<DisplayRow> direction2 = new ArrayList<DisplayRow>();
        public static TramDeparture fromJson(JSONObject jsonObject) throws JSONException {
            TramDeparture td = new TramDeparture();
            td.stopAreaName = jsonObject.getString("stop_area_name");
            td.stopAreaNumber = jsonObject.getString("stop_area_number");

            JSONArray jsonDirection1 = jsonObject.getJSONArray("direction1");
            for (int i = 0; i < jsonDirection1.length(); i++) {
                td.direction1.add(DisplayRow.fromJson(jsonDirection1.getJSONObject(i)));
            }

            JSONArray jsonDirection2 = jsonObject.getJSONArray("direction2");
            for (int i = 0; i < jsonDirection2.length(); i++) {
                td.direction2.add(DisplayRow.fromJson(jsonDirection2.getJSONObject(i)));
            }

            return td;
        }
    }

    public static class TrainDeparture extends Departure {
        public ArrayList<DisplayRow> direction1 = new ArrayList<DisplayRow>();
        public ArrayList<DisplayRow> direction2 = new ArrayList<DisplayRow>();
        
        public static TrainDeparture fromJson(JSONObject jsonObject) throws JSONException {
            TrainDeparture td = new TrainDeparture();
            td.stopAreaName = jsonObject.getString("stop_area_name");
            td.stopAreaNumber = jsonObject.getString("stop_area_number");

            JSONArray jsonDirection1 = jsonObject.getJSONArray("direction1");
            for (int i = 0; i < jsonDirection1.length(); i++) {
                td.direction1.add(DisplayRow.fromJson(jsonDirection1.getJSONObject(i)));
            }

            JSONArray jsonDirection2 = jsonObject.getJSONArray("direction2");
            for (int i = 0; i < jsonDirection2.length(); i++) {
                td.direction2.add(DisplayRow.fromJson(jsonDirection2.getJSONObject(i)));
            }

            return td;
        }
    }

    public static class GroupOfLine implements Serializable {
        public String name;
        public ArrayList<DisplayRow> direction1 = new ArrayList<DisplayRow>();
        public ArrayList<DisplayRow> direction2 = new ArrayList<DisplayRow>();
        public static GroupOfLine fromJson(JSONObject json)
                throws JSONException {
            GroupOfLine gol = new GroupOfLine();

            gol.name = json.getString("name");

            JSONArray jsonDirection1 = json.getJSONArray("direction1");
            for (int i = 0; i < jsonDirection1.length(); i++) {
                DisplayRow dr = DisplayRow.fromJson(jsonDirection1.getJSONObject(i));
                if (dr.looksValid()) {
                    gol.direction1.add(dr);
                }
            }
            JSONArray jsonDirection2 = json.getJSONArray("direction2");
            for (int i = 0; i < jsonDirection2.length(); i++) {
                DisplayRow dr = DisplayRow.fromJson(jsonDirection2.getJSONObject(i));
                if (dr.looksValid()) {
                    gol.direction2.add(dr);
                }
            }

            return gol;
        }
    }

    public static class DisplayRow implements Serializable {
        public String destination;
        public String lineNumber;
        public String displayTime;
        public String timeTabledDateTime;
        public String expectedDateTime;
        public String message;

        @Override
        public String toString() {
            return "DisplayRow{" +
                    "destination='" + destination + '\'' +
                    ", lineNumber='" + lineNumber + '\'' +
                    ", displayTime='" + displayTime + '\'' +
                    ", timeTabledDateTime='" + timeTabledDateTime + '\'' +
                    ", expectedDateTime='" + expectedDateTime + '\'' +
                    ", message='" + message + '\'' +
                    '}';
        }

        public static DisplayRow fromJson(JSONObject json) throws JSONException {
            DisplayRow dr = new DisplayRow();
            if (json.has("destination")) {
                dr.destination = json.isNull("destination") ?
                        null : json.getString("destination");
            }
            if (json.has("line_number")) {
                dr.lineNumber = json.isNull("line_number") ?
                        null : json.getString("line_number");
            }
            if (json.has("display_time")) {
                dr.displayTime = json.isNull("display_time") ?
                        null : json.getString("display_time");
            }
            if (json.has("time_tabled_date_time")) {
                dr.timeTabledDateTime = json.isNull("time_tabled_date_time") ?
                        null : json.getString("time_tabled_date_time");
            }
            if (json.has("expected_date_time")) {
                dr.expectedDateTime = json.isNull("expected_date_time") ?
                        null : json.getString("expected_date_time");
            }
            if (json.has("message")) {
                dr.message = json.isNull("message") ?
                        null : json.getString("message");
            }

            return dr;
        }

        public boolean looksValid() {
            return (!TextUtils.isEmpty(destination)
                    || !TextUtils.isEmpty(message));
        }
    }
}




Java Source Code List

com.markupartist.sthlmtraveling.AboutActivity.java
com.markupartist.sthlmtraveling.AllTests.java
com.markupartist.sthlmtraveling.AppConfig.java
com.markupartist.sthlmtraveling.AutoCompleteStopAdapter.java
com.markupartist.sthlmtraveling.BaseActivity.java
com.markupartist.sthlmtraveling.BaseFragmentActivity.java
com.markupartist.sthlmtraveling.BaseFragment.java
com.markupartist.sthlmtraveling.BaseListActivity.java
com.markupartist.sthlmtraveling.BaseListFragmentActivity.java
com.markupartist.sthlmtraveling.BaseListFragment.java
com.markupartist.sthlmtraveling.BasePreferenceActivity.java
com.markupartist.sthlmtraveling.ChangeRouteTimeActivity.java
com.markupartist.sthlmtraveling.DepartureAdapter.java
com.markupartist.sthlmtraveling.DeparturesActivity.java
com.markupartist.sthlmtraveling.DeviationDetailActivity.java
com.markupartist.sthlmtraveling.DeviationsActivity.java
com.markupartist.sthlmtraveling.DialogHelper.java
com.markupartist.sthlmtraveling.FavoritesFragment.java
com.markupartist.sthlmtraveling.MultipleListAdapter.java
com.markupartist.sthlmtraveling.MyApplication.java
com.markupartist.sthlmtraveling.MyLocationManager.java
com.markupartist.sthlmtraveling.NearbyActivity.java
com.markupartist.sthlmtraveling.PlannerFragmentActivity.java
com.markupartist.sthlmtraveling.PlannerFragment.java
com.markupartist.sthlmtraveling.PointOnMapActivity.java
com.markupartist.sthlmtraveling.RouteDetailActivity.java
com.markupartist.sthlmtraveling.RouteParserTest.java
com.markupartist.sthlmtraveling.RoutesActivity.java
com.markupartist.sthlmtraveling.SearchDeparturesFragmentActivity.java
com.markupartist.sthlmtraveling.SearchDeparturesFragment.java
com.markupartist.sthlmtraveling.SectionedAdapter.java
com.markupartist.sthlmtraveling.SettingsActivity.java
com.markupartist.sthlmtraveling.StartActivity.java
com.markupartist.sthlmtraveling.TrafficStatusFragment.java
com.markupartist.sthlmtraveling.ViewOnMapActivity.java
com.markupartist.sthlmtraveling.provider.FavoritesDbAdapter.java
com.markupartist.sthlmtraveling.provider.HistoryDbAdapter.java
com.markupartist.sthlmtraveling.provider.JourneysProvider.java
com.markupartist.sthlmtraveling.provider.PlacesProvider.java
com.markupartist.sthlmtraveling.provider.TransportMode.java
com.markupartist.sthlmtraveling.provider.departure.DeparturesStore.java
com.markupartist.sthlmtraveling.provider.deviation.DeviationNotificationDbAdapter.java
com.markupartist.sthlmtraveling.provider.deviation.DeviationStore.java
com.markupartist.sthlmtraveling.provider.deviation.Deviation.java
com.markupartist.sthlmtraveling.provider.planner.JourneyQuery.java
com.markupartist.sthlmtraveling.provider.planner.Planner.java
com.markupartist.sthlmtraveling.provider.site.Site.java
com.markupartist.sthlmtraveling.provider.site.SitesStore.java
com.markupartist.sthlmtraveling.receivers.OnAlarmReceiver.java
com.markupartist.sthlmtraveling.receivers.OnBootReceiver.java
com.markupartist.sthlmtraveling.service.DataMigrationService.java
com.markupartist.sthlmtraveling.service.DeviationService.java
com.markupartist.sthlmtraveling.service.WakefulIntentService.java
com.markupartist.sthlmtraveling.ui.view.DelayAutoCompleteTextView.java
com.markupartist.sthlmtraveling.ui.view.LineSegment.java
com.markupartist.sthlmtraveling.ui.view.SmsTicketDialog.java
com.markupartist.sthlmtraveling.ui.view.TripView.java
com.markupartist.sthlmtraveling.utils.Analytics.java
com.markupartist.sthlmtraveling.utils.BarcodeScannerIntegrator.java
com.markupartist.sthlmtraveling.utils.DateTimeUtil.java
com.markupartist.sthlmtraveling.utils.DisplayMetricsHelper.java
com.markupartist.sthlmtraveling.utils.ErrorReporter.java
com.markupartist.sthlmtraveling.utils.HttpHelper.java
com.markupartist.sthlmtraveling.utils.IntentUtil.java
com.markupartist.sthlmtraveling.utils.LocationUtils.java
com.markupartist.sthlmtraveling.utils.StreamUtils.java
com.markupartist.sthlmtraveling.utils.StringUtils.java
com.markupartist.sthlmtraveling.utils.ViewHelper.java
com.viewpagerindicator.CirclePageIndicator.java
com.viewpagerindicator.IconPageIndicator.java
com.viewpagerindicator.IconPagerAdapter.java
com.viewpagerindicator.IcsLinearLayout.java
com.viewpagerindicator.LinePageIndicator.java
com.viewpagerindicator.PageIndicator.java
com.viewpagerindicator.TabPageIndicator.java
com.viewpagerindicator.TitlePageIndicator.java
com.viewpagerindicator.UnderlinePageIndicator.java