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

com.graphhopper.gtfs.fare.TicketPurchase Maven / Gradle / Ivy

There is a newer version: 10.0
Show newest version
/*
 *  Licensed to GraphHopper GmbH under one or more contributor
 *  license agreements. See the NOTICE file distributed with this work for
 *  additional information regarding copyright ownership.
 *
 *  GraphHopper GmbH licenses this file to you 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.graphhopper.gtfs.fare;

import java.util.*;

class TicketPurchase {
    public final List fareAssignments;

    TicketPurchase(List fareAssignments) {
        this.fareAssignments = fareAssignments;
    }

    List getTickets() {
        Map currentTickets = new HashMap<>();
        for (FareAssignment fareAssignment : fareAssignments) {
            if (fareAssignment.fare != null) {
                currentTickets.computeIfAbsent(fareKey(fareAssignment), fareId -> new TicketPurchaseScoreCalculator.TempTicket());
                currentTickets.compute(fareKey(fareAssignment), (s, tempTicket) -> {
                    if (fareAssignment.segment.getStartTime() > tempTicket.validUntil
                            || tempTicket.nMoreTransfers == 0) {
                        tempTicket.feed_id = fareAssignment.segment.feed_id;
                        tempTicket.fare = fareAssignment.fare;
                        tempTicket.validUntil = fareAssignment.segment.getStartTime() + fareAssignment.fare.fare_attribute.transfer_duration;
                        tempTicket.nMoreTransfers = fareAssignment.fare.fare_attribute.transfers;
                        tempTicket.totalNumber++;
                        return tempTicket;
                    } else {
                        tempTicket.nMoreTransfers--;
                        return tempTicket;
                    }
                });
            }
        }
        ArrayList tickets = new ArrayList<>();
        for (TicketPurchaseScoreCalculator.TempTicket t : currentTickets.values()) {
            for (int i = 0; i assignment.fare == null).count();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy