Android Open Source - Go2-Rennes Relay Park Service






From Project

Back to project page Go2-Rennes.

License

The source code is released under:

GNU General Public License

If you think the Android project Go2-Rennes 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) 2011 Michel DAVID mimah35-at-gmail.com
 * /*from w  w  w  .  j ava 2s .  c  om*/
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/
package fr.gotorennes.remote;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

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

import android.content.Context;
import fr.gotorennes.AbstractMapActivity;
import fr.gotorennes.domain.RelayPark;

public class RelayParkService extends RemoteService<RelayPark> {

  public static final String COMMAND = "getrelayparks";
  public static final String NODE = "relaypark";

  private static RelayParkService instance;

  private RelayParkService(Context context) {
    super();
  }

  protected String getVersion() {
    return "2.0";
  }
  
  public static synchronized RelayParkService getInstance(Context context) {
    if (instance == null) {
      instance = new RelayParkService(context);
    }
    return instance;
  }

  private long lastUpdate = 0;
  private List<RelayPark> cache = null;

  public List<RelayPark> getRelayParks() {
    if (cache == null || System.currentTimeMillis() - lastUpdate > 60000) {
      cache = loadList(COMMAND, NODE);
      if (cache != null) {
        lastUpdate = System.currentTimeMillis();
      }
    }
    return cache != null ? new ArrayList<RelayPark>(cache) : cache;
  }

  public List<RelayPark> getRelayParks(double latitudeMin, double latitudeMax, double longitudeMax, double longitudeMin) {
    List<RelayPark> relayParks = getRelayParks();
    if (relayParks == null) {
      return null;
    }
    List<RelayPark> result = new ArrayList<RelayPark>();
    for (RelayPark parc : relayParks) {
      if (parc.latitude >= latitudeMin && parc.latitude <= latitudeMax && parc.longitude >= longitudeMin && parc.longitude <= longitudeMax) {
        result.add(parc);
      }
    }
    return result;
  }

  public List<RelayPark> getProximityRelayParks(final double latitude, final double longitude) {
    List<RelayPark> relayParks = loadList(getProximityCommand(latitude, longitude), NODE);
    if (relayParks != null) {
      Collections.sort(relayParks, new Comparator<RelayPark>() {

        @Override
        public int compare(RelayPark relayPark1, RelayPark relayPark2) {
          double distance1 = AbstractMapActivity.getDistance(latitude, longitude, relayPark1.latitude, relayPark1.longitude);
          double distance2 = AbstractMapActivity.getDistance(latitude, longitude, relayPark2.latitude, relayPark2.longitude);
          return Double.compare(distance1, distance2);
        }
      });
    }
    return relayParks;
  }

  public RelayPark getRelayPark(String name) {
    List<RelayPark> relayParks = getRelayParks();
    if (relayParks == null) {
      return null;
    }

    for (RelayPark relayPark : relayParks) {
      if (relayPark.name.equals(name)) {
        return relayPark;
      }
    }
    return null;
  }

  protected String getProximityCommand(double latitude, double longitude) {
    StringBuilder stringBuilder = new StringBuilder(COMMAND);
    stringBuilder.append("&latitude=");
    stringBuilder.append(String.valueOf(latitude));
    stringBuilder.append("&longitude=");
    stringBuilder.append(String.valueOf(longitude));
    return stringBuilder.toString();
  }

  @Override
  protected RelayPark populate(JSONObject jsonObject) throws JSONException {
    RelayPark relayPark = new RelayPark();
    relayPark.name = jsonObject.getString("name");
    relayPark.state = Integer.parseInt(jsonObject.getString("state"));
    relayPark.capacity = Integer.parseInt(jsonObject.getString("carparkcapacity"));
    relayPark.available = Integer.parseInt(jsonObject.getString("carparkavailable"));
    relayPark.latitude = Double.parseDouble(jsonObject.getString("latitude"));
    relayPark.longitude = Double.parseDouble(jsonObject.getString("longitude"));
    return relayPark;
  }

}




Java Source Code List

fr.gotorennes.AbstractActivity.java
fr.gotorennes.AbstractConfigurationActivity.java
fr.gotorennes.AbstractMapActivity.java
fr.gotorennes.AbstractWidgetProvider.java
fr.gotorennes.BikeStationActivity.java
fr.gotorennes.BikeStationWidgetConfigurationActivity.java
fr.gotorennes.BikeStationWidgetProvider.java
fr.gotorennes.BikeStationsActivity.java
fr.gotorennes.BikeWidgetProvider.java
fr.gotorennes.BusArretActivity.java
fr.gotorennes.BusCircuitsActivity.java
fr.gotorennes.BusCircuitsWidgetConfigurationActivity.java
fr.gotorennes.BusLignesActivity.java
fr.gotorennes.BusLignesWidgetConfigurationActivity.java
fr.gotorennes.BusStationActivity.java
fr.gotorennes.BusStationGroupsActivity.java
fr.gotorennes.BusStationsActivity.java
fr.gotorennes.BusStationsMapActivity.java
fr.gotorennes.BusStopWidgetConfigurationActivity.java
fr.gotorennes.BusStopWidgetProvider.java
fr.gotorennes.BusTripActivity.java
fr.gotorennes.CadenasActivity.java
fr.gotorennes.ClockActivity.java
fr.gotorennes.CreditsActivity.java
fr.gotorennes.FavorisActivity.java
fr.gotorennes.GoToRennesActivity.java
fr.gotorennes.GoToRennes.java
fr.gotorennes.ItineraireActivity.java
fr.gotorennes.ItineraireBusDetailActivity.java
fr.gotorennes.ItineraireBusResultActivity.java
fr.gotorennes.ItineraireMapActivity.java
fr.gotorennes.ItineraireVeloResultActivity.java
fr.gotorennes.MetroStationActivity.java
fr.gotorennes.MetroStationsActivity.java
fr.gotorennes.PointDeVenteActivity.java
fr.gotorennes.PointDeVentesActivity.java
fr.gotorennes.ProximiteActivity.java
fr.gotorennes.ProximiteResultActivity.java
fr.gotorennes.ProximityMapActivity.java
fr.gotorennes.RelayParkActivity.java
fr.gotorennes.RelayParkWidgetConfigurationActivity.java
fr.gotorennes.RelayParkWidgetProvider.java
fr.gotorennes.RelayParksActivity.java
fr.gotorennes.domain.Arret.java
fr.gotorennes.domain.BikeStation.java
fr.gotorennes.domain.Circuit.java
fr.gotorennes.domain.EquipementStatus.java
fr.gotorennes.domain.Equipement.java
fr.gotorennes.domain.Ligne.java
fr.gotorennes.domain.LineAlert.java
fr.gotorennes.domain.Localisable.java
fr.gotorennes.domain.MetroStation.java
fr.gotorennes.domain.NextDeparture.java
fr.gotorennes.domain.NextMetroDeparture.java
fr.gotorennes.domain.PointDeVenteCommune.java
fr.gotorennes.domain.PointDeVenteQuartier.java
fr.gotorennes.domain.PointDeVente.java
fr.gotorennes.domain.RelayPark.java
fr.gotorennes.domain.SensCirculation.java
fr.gotorennes.domain.StationGroup.java
fr.gotorennes.domain.Station.java
fr.gotorennes.persistence.BusDao.java
fr.gotorennes.persistence.BusDatabase.java
fr.gotorennes.remote.BikeStationService.java
fr.gotorennes.remote.BusStationService.java
fr.gotorennes.remote.CommuneService.java
fr.gotorennes.remote.EquipementService.java
fr.gotorennes.remote.EquipementStatusService.java
fr.gotorennes.remote.LineAlertService.java
fr.gotorennes.remote.MetroStationService.java
fr.gotorennes.remote.MetroStationStatusService.java
fr.gotorennes.remote.NextDepartureService.java
fr.gotorennes.remote.NextMetroDepartureService.java
fr.gotorennes.remote.PointDeVenteService.java
fr.gotorennes.remote.QuartierService.java
fr.gotorennes.remote.RelayParkService.java
fr.gotorennes.remote.RemoteService.java
fr.gotorennes.util.AsciiUtils.java
fr.gotorennes.util.BackgroundTask.java
fr.gotorennes.util.JoursUtils.java
fr.gotorennes.util.LocationUtils.java
fr.gotorennes.util.UpdateUtils.java
fr.gotorennes.view.ExpandableView.java
fr.gotorennes.view.FilterBar.java
fr.gotorennes.view.FilterSortBar.java
fr.gotorennes.view.LockPopupWindow.java
fr.gotorennes.view.MapDrawable.java
fr.gotorennes.view.TitleBar.java