mirror of
https://github.com/opentripplanner/OpenTripPlanner.git
synced 2026-04-03 05:51:24 +02:00
70 lines
2.4 KiB
Java
70 lines
2.4 KiB
Java
package org.opentripplanner.netex.mapping.calendar;
|
|
|
|
import java.time.DayOfWeek;
|
|
import java.util.Collection;
|
|
import java.util.EnumSet;
|
|
import java.util.Set;
|
|
import org.rutebanken.netex.model.DayOfWeekEnumeration;
|
|
|
|
/**
|
|
* Map between NeTEx {@link DayOfWeekEnumeration} to Java {@link DayOfWeek}. The NeTEx version have
|
|
* "collection" type elements like WEEKDAYS, WEEKEND, EVERYDAY and NONE. Beacuse of this, the
|
|
* mapping is not ono-to-one, but rather one-to-many.
|
|
*/
|
|
class DayOfWeekMapper {
|
|
|
|
/** Utility class with static methods, prevent instantiation with private constructor */
|
|
private DayOfWeekMapper() {}
|
|
|
|
/**
|
|
* Return a set Java DayOfWeek representing a union of all input values given. Each value is
|
|
* mapped to a set of Java DayOfWeek, which is merged into one set.
|
|
* <p>
|
|
* [MONDAY, SATURDAY, WEEKEND] => [MONDAY, SATURDAY, SUNDAY]
|
|
*/
|
|
static Set<DayOfWeek> mapDayOfWeeks(Collection<DayOfWeekEnumeration> values) {
|
|
EnumSet<DayOfWeek> result = EnumSet.noneOf(DayOfWeek.class);
|
|
for (DayOfWeekEnumeration it : values) {
|
|
result.addAll(mapDayOfWeek(it));
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Maps given {@code value} into a set of Java DayOfWeek.
|
|
* <ul>
|
|
* <li>MONDAY to SUNDAY is mapped to a Set with one element
|
|
* <li>NONE is mapped to an empty set
|
|
* <li>WEEKDAYS is mapped to a set of MONDAY..FRIDAY
|
|
* <li>WEEKEND is mapped to a set of SATURDAY..SUNDAY
|
|
* <li>EVERYDAY is mapped to a set of MONDAY..SUNDAY
|
|
* </ul>
|
|
*/
|
|
static Set<DayOfWeek> mapDayOfWeek(DayOfWeekEnumeration value) {
|
|
switch (value) {
|
|
case MONDAY:
|
|
return EnumSet.of(DayOfWeek.MONDAY);
|
|
case TUESDAY:
|
|
return EnumSet.of(DayOfWeek.TUESDAY);
|
|
case WEDNESDAY:
|
|
return EnumSet.of(DayOfWeek.WEDNESDAY);
|
|
case THURSDAY:
|
|
return EnumSet.of(DayOfWeek.THURSDAY);
|
|
case FRIDAY:
|
|
return EnumSet.of(DayOfWeek.FRIDAY);
|
|
case SATURDAY:
|
|
return EnumSet.of(DayOfWeek.SATURDAY);
|
|
case SUNDAY:
|
|
return EnumSet.of(DayOfWeek.SUNDAY);
|
|
case WEEKDAYS:
|
|
return EnumSet.range(DayOfWeek.MONDAY, DayOfWeek.FRIDAY);
|
|
case WEEKEND:
|
|
return EnumSet.range(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY);
|
|
case EVERYDAY:
|
|
return EnumSet.range(DayOfWeek.MONDAY, DayOfWeek.SUNDAY);
|
|
case NONE:
|
|
return EnumSet.noneOf(DayOfWeek.class);
|
|
}
|
|
throw new IllegalArgumentException("Day of week enum mapping missing: " + value);
|
|
}
|
|
}
|