All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.updater.bike_rental.NextBikeRentalDataSource Maven / Gradle / Ivy

There is a newer version: 2.6.0
Show newest version
/* This program is free software: you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public License
 as published by the Free Software Foundation, either version 3 of
 the License, or (at your option) any later version.

 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 . */

package org.opentripplanner.updater.bike_rental;

import java.util.HashSet;
import java.util.Map;

import org.opentripplanner.routing.bike_rental.BikeRentalStation;
import org.opentripplanner.util.NonLocalizedString;

/**
 * NextBike bike rental data source.
 * url: https://nextbike.net/maps/nextbike-live.xml?city=
 * Check https://nextbike.net/maps/nextbike-live.xml full feed to find the city uid
 * to use for your data location.
 */
public class NextBikeRentalDataSource extends GenericXmlBikeRentalDataSource {

    private String networkName;

    public NextBikeRentalDataSource(String networkName) {
        super("//city/place");
        // this feed sets values on place node attributes, rather than in child elements
        this.setReadAttributes(true);

        if (networkName != null && !networkName.isEmpty()) {
            this.networkName = networkName;
        } else {
            this.networkName = "NextBike";
        }
    }

    public BikeRentalStation makeStation(Map attributes) {

        // some place entries appear to actually be checked-out bikes, not stations
        if (attributes.get("bike") != null) {
            return null;
        }

        BikeRentalStation brstation = new BikeRentalStation();

        brstation.networks = new HashSet();
        brstation.networks.add(this.networkName);

        brstation.id = attributes.get("number");
        brstation.x = Double.parseDouble(attributes.get("lng"));
        brstation.y = Double.parseDouble(attributes.get("lat"));
        brstation.name = new NonLocalizedString(attributes.get("name"));
        brstation.spacesAvailable = Integer.parseInt(attributes.get("bike_racks"));

        // number of bikes available is reported as "5+" if >= 5
        String numBikes = attributes.get("bikes");
        if (numBikes.equals("5+")) {
            brstation.bikesAvailable = 5;
        } else {
            brstation.bikesAvailable = Integer.parseInt(numBikes);
        }
        
        return brstation;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy