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

org.opentripplanner.ext.dataoverlay.routing.DataOverlayContext Maven / Gradle / Ivy

There is a newer version: 2.5.0
Show newest version
package org.opentripplanner.ext.dataoverlay.routing;

import static org.opentripplanner.ext.dataoverlay.api.DataOverlayParameters.toStringKey;
import static org.opentripplanner.ext.dataoverlay.api.ParameterType.PENALTY;
import static org.opentripplanner.ext.dataoverlay.api.ParameterType.THRESHOLD;

import java.util.ArrayList;
import java.util.List;
import org.opentripplanner.ext.dataoverlay.api.DataOverlayParameters;
import org.opentripplanner.ext.dataoverlay.api.ParameterName;
import org.opentripplanner.ext.dataoverlay.api.ParameterType;
import org.opentripplanner.ext.dataoverlay.configuration.DataOverlayConfig;
import org.opentripplanner.ext.dataoverlay.configuration.DataOverlayParameterBindings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DataOverlayContext {

    private static final Logger LOG = LoggerFactory.getLogger(DataOverlayContext.class);

    private final List parameters = new ArrayList<>();

    public DataOverlayContext(
            DataOverlayParameterBindings parameterBindings,
            DataOverlayParameters requestParameters
    ) {
        for (ParameterName paramName : requestParameters.listParameterNames()) {
            addParameter(paramName, parameterBindings, requestParameters);
        }
    }

    private void addParameter(
            ParameterName paramName,
            DataOverlayParameterBindings parameterBindings,
            DataOverlayParameters requestParameters
    ) {
        var penalty = requestParameters.get(paramName, PENALTY);

        if(isParameterValueInvalid(penalty, paramName, PENALTY)) { return; }

        var threshold = requestParameters.get(paramName, THRESHOLD);

        if(isParameterValueInvalid(threshold, paramName, THRESHOLD)) { return; }

        var binding = parameterBindings.getParameterBinding(paramName);

        if(binding.isEmpty()) {
            LOG.warn("Request parameter config not found. Parameter: {}", paramName);
            return;
        }

        this.parameters.add(new Parameter(binding.get(), threshold, penalty));
    }

    public Iterable getParameters() {
        return parameters;
    }

    private boolean isParameterValueInvalid(Double value, ParameterName name, ParameterType type) {
        if(value == null || value < 0d) {
            LOG.warn("Request parameter required. Parameter: {}", toStringKey(name, type));
            return true;
        }
        else {
            return false;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy