package fi.hsl.parkandride.core.domain;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiFunction;
import static com.google.common.collect.Sets.newHashSet;
import static java.util.Collections.singleton;
public final class FacilityUtil {
private FacilityUtil() { /** prevent instantiation */}
public static Map<CapacityType, Set<Usage>> usagesByCapacityType(Facility facility) {
Map<CapacityType, Set<Usage>> usagesByCapacityType = new HashMap<>();
if (facility.pricingMethod == PricingMethod.PARK_AND_RIDE_247_FREE) {
facility.builtCapacity.keySet().forEach(k -> usagesByCapacityType.put(k, singleton(Usage.PARK_AND_RIDE)));
} else {
facility.pricing.stream().forEach(pricing ->
usagesByCapacityType
.computeIfAbsent(pricing.capacityType, c -> newHashSet())
.add(pricing.usage)
);
}
return usagesByCapacityType;
}
public static <T, C extends Collection<T>> BiFunction<C, C, C> combine() {
return (left, right) -> {
left.addAll(right);
return left;
};
}
}