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

org.opentripplanner.model.modes.AllowedTransitMode Maven / Gradle / Ivy

package org.opentripplanner.model.modes;

import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
import org.opentripplanner.model.TransitMode;

/**
 * Used to filter out modes for routing requests. If both mainMode and subMode are specified, they
 * must match exactly. If subMode is set to null, that means that all possible subModes are accepted.
 * This class is separated from the TransitMode class because the meanings of the fields are slightly
 * different.
 */
public class AllowedTransitMode {

  private final TransitMode mainMode;

  private final String subMode;

  public static AllowedTransitMode fromMainModeEnum(TransitMode mainMode) {
    return new AllowedTransitMode(mainMode, null);
  }

  public AllowedTransitMode(TransitMode mainMode, String subMode) {
    this.mainMode = mainMode;
    this.subMode = subMode;
  }

  /**
   * Check if this filter allows the provided TransitMode
   */
  public boolean allows(TransitMode transitMode, String netexSubMode) {
    return mainMode == transitMode && (
        subMode == null || subMode.equals(netexSubMode)
    );
  }

  public TransitMode getMainMode() {
    return mainMode;
  }

  /**
   * Is the sub-mode set for this main mode
   */
  public boolean hasSubMode() {
    return subMode != null;
  }

  /**
   * Returns a set of AllowedModes that will cover all available TransitModes.
   */
  public static Set getAllTransitModes() {
    return Arrays
        .stream(TransitMode.values())
        .map(m -> new AllowedTransitMode(m, null))
        .collect(Collectors.toSet());
  }

  /**
   * Returns a set of AllowedModes that will cover all available TransitModes except airplane.
   */
  public static Set getAllTransitModesExceptAirplane() {
    return TransitMode.transitModesExceptAirplane().stream()
        .map(m -> new AllowedTransitMode(m, null))
        .collect(Collectors.toSet());
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy