TrafficEnums.java

package org.heigit.ors.routing.graphhopper.extensions.reader.traffic;

public class TrafficEnums {
    public enum PatternResolution {
        MINUTES_15(15);

        private final int value;

        PatternResolution(int resolution) {
            this.value = resolution;
        }

        public int getValue() {
            return value;
        }
    }

    public enum FerryType {
        NO('H'),
        BOAT('B'),
        RAIL('R');

        private final char ferryType;

        FerryType(char value) {
            this.ferryType = value;
        }

        public static FerryType forValue(char v) {
            for (FerryType enumItem : FerryType.values()) {
                if (enumItem.ferryType == v)
                    return enumItem;
            }
            return null;
        }
    }

    public enum NoYesEnum {
        YES('Y'),
        NO('N');

        private final char noYesEnum;

        NoYesEnum(char value) {
            this.noYesEnum = value;
        }

        public static NoYesEnum forValue(char v) {
            for (NoYesEnum enumItem : NoYesEnum.values()) {
                if (enumItem.noYesEnum == v)
                    return enumItem;
            }
            return null;
        }
    }

    /**
     *
     */
    public enum FunctionalClass {
        CLASS1(1),
        CLASS2(2),
        CLASS3(3),
        CLASS4(4),
        CLASS5(5);

        private final int functionalClass;

        FunctionalClass(int value) {
            this.functionalClass = value;
        }

        public static FunctionalClass forValue(int v) {
            for (FunctionalClass enumItem : FunctionalClass.values()) {
                if (enumItem.functionalClass == v)
                    return enumItem;
            }
            return null;
        }


        public int getFunctionalClass() {
            return functionalClass;
        }
    }

    /**
     * Describes the travel direction of the link (road segment).
     * - or T is the direction from the From Node
     * + or F is the direction towards the From Node
     */
    public enum LinkTravelDirection {
        TO("T"),
        FROM("F"),
        BOTH("B");

        private final String direction;

        LinkTravelDirection(String value) {
            this.direction = value;
        }

        public static LinkTravelDirection forValue(String v) {
            for (LinkTravelDirection enumItem : LinkTravelDirection.values()) {
                if (enumItem.direction.equals(v.trim()))
                    return enumItem;
            }
            return null;
        }

        public String getDirection() {
            return direction;
        }
    }

    /**
     * Describes the travel direction of the link (road segment).
     * - or T is the direction from the From Node
     * + or F is the direction towards the From Node
     */
    public enum TravelDirection {
        TO("T", '-'),
        FROM("F", '+');

        private final String direction;
        private final char abbreviation;

        TravelDirection(String direction, char abbreviation) {
            this.direction = direction;
            this.abbreviation = abbreviation;
        }

        public static TravelDirection forValue(String v) {
            for (TravelDirection enumItem : TravelDirection.values()) {
                if (enumItem.direction.equals(v.trim()))
                    return enumItem;
            }
            return null;
        }

        public String getDirection() {
            return direction;
        }

    }

    public enum WeekDay {
        SUNDAY("U", 12, 1),
        MONDAY("M", 0, 2),
        TUESDAY("T", 2, 3),
        WEDNESDAY("W", 4, 4),
        THURSDAY("R", 6, 5),
        FRIDAY("F", 8, 6),
        SATURDAY("S", 10, 7);

        private final String value;
        private final int byteLocation;
        private final int canonical;

        WeekDay(String weekday, int byteLocation, int canonical) {
            this.value = weekday;
            this.byteLocation = byteLocation;
            this.canonical = canonical;
        }

        /**
         * Get the correct Weekday by using 1 (Monday) -7 (Sunday)
         *
         * @param weekDay 1 (Monday) -7 (Sunday)
         * @return Correct Weekday enum
         */
        public static WeekDay valueOfCanonical(int weekDay) {
            for (WeekDay enumItem : WeekDay.values()) {
                if (enumItem.canonical == weekDay)
                    return enumItem;
            }
            return null;
        }

        public String getValue() {
            return value;
        }

        public int getByteLocation() {
            return byteLocation;
        }
    }
}