"""Enumeration of available units on the Platform."""
#   Copyright 2021 WolkAbout Technology s.r.o.
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
from enum import Enum


class Unit(Enum):
    """
    Enumeration of default available units on the Platform.

    Units are grouped by reading type, along with a comment
    that indicates what data type that unit expects.

    """

    # GENERIC
    TEXT = "TEXT"  # STRING
    NUMERIC = "NUMERIC"  # NUMERIC
    BOOLEAN = "BOOLEAN"  # BOOLEAN
    PERCENT = "PERCENT"  # PERCENT
    DECIBEL = "DECIBEL"  # NUMERIC
    LOCATION = "LOCATION"  # LOCATION

    # ACCELERATION
    METRES_PER_SQUARE_SECOND = "METRES_PER_SQUARE_SECOND"  # NUMERIC
    G = "G"  # NUMERIC

    # AMOUNT_OF_SUBSTANCE
    MOLE = "MOLE"  # NUMERIC
    ATOM = "ATOM"  # NUMERIC

    # ANGLE
    RADIAN = "RADIAN"  # NUMERIC
    REVOLUTION = "REVOLUTION"  # NUMERIC
    DEGREE_ANGLE = "DEGREE_ANGLE"  # NUMERIC
    MINUTE_ANGLE = "MINUTE_ANGLE"  # NUMERIC
    SECOND_ANGLE = "SECOND_ANGLE"  # NUMERIC
    CENTIRADIAN = "CENTIRADIAN"  # NUMERIC
    GRADE = "GRADE"  # NUMERIC

    # AREA
    SQUARE_METRE = "SQUARE_METRE"  # NUMERIC
    ARE = "ARE"  # NUMERIC
    HECTARE = "HECTARE"  # NUMERIC

    # CATALYTIC_ACTIVITY
    KATAL = "KATAL"  # NUMERIC

    # DATA_AMOUNT
    BIT = "BIT"  # NUMERIC
    BYTE = "BYTE"  # NUMERIC

    # DURATION
    SECOND = "SECOND"  # NUMERIC
    MINUTE = "MINUTE"  # NUMERIC
    HOUR = "HOUR"  # NUMERIC
    DAY = "DAY"  # NUMERIC
    WEEK = "WEEK"  # NUMERIC
    YEAR = "YEAR"  # NUMERIC
    MONTH = "MONTH"  # NUMERIC
    DAY_SIDEREAL = "DAY_SIDEREAL"  # NUMERIC
    YEAR_SIDEREAL = "YEAR_SIDEREAL"  # NUMERIC
    YEAR_CALENDAR = "YEAR_CALENDAR"  # NUMERIC

    # DYNAMIC_VISCOSITY
    POISE = "POISE"  # NUMERIC

    # ELECTRIC_CAPACITANCE
    FARAD = "FARAD"  # NUMERIC

    # ELECTRIC_CHARGE
    COULOMB = "COULOMB"  # NUMERIC
    E = "E"  # NUMERIC
    FARADAY = "FARADAY"  # NUMERIC
    FRANKLIN = "FRANKLIN"  # NUMERIC

    # ELECTRIC_CONDUCTANCE
    SIEMENS = "SIEMENS"  # NUMERIC

    # ELECTRIC_CURRENT
    AMPERE = "AMPERE"  # NUMERIC
    GILBERT = "GILBERT"  # NUMERIC

    # ELECTRIC_INDUCTANCE
    HENRY = "HENRY"  # NUMERIC

    # ELECTRIC_POTENTIAL
    VOLT = "VOLT"  # NUMERIC
    CENTIVOLT = "CENTIVOLT"  # NUMERIC
    MILLIVOLT = "MILLIVOLT"  # NUMERIC

    # ELECTRIC_RESISTANCE
    OHM = "OHM"  # NUMERIC

    # ENERGY
    JOULE = "JOULE"  # NUMERIC
    ERG = "ERG"  # NUMERIC
    ELECTRON_VOLT = "ELECTRON_VOLT"  # NUMERIC

    # FORCE
    NEWTON = "NEWTON"  # NUMERIC
    DYNE = "DYNE"  # NUMERIC
    KILOGRAM_FORCE = "KILOGRAM_FORCE"  # NUMERIC
    POUND_FORCE = "POUND_FORCE"  # NUMERIC

    # FREQUENCY
    HERTZ = "HERTZ"  # NUMERIC
    MEGAHERTZ = "MEGAHERTZ"  # NUMERIC
    GIGAHERTZ = "GIGAHERTZ"  # NUMERIC

    # ILLUMINANCE
    LUX = "LUX"  # NUMERIC
    LAMBERT = "LAMBERT"  # NUMERIC

    # KINEMATIC_VISCOSITY
    STOKE = "STOKE"  # NUMERIC

    # LENGTH
    METRE = "METRE"  # NUMERIC
    KILOMETRE = "KILOMETRE"  # NUMERIC
    CENTIMETRE = "CENTIMETRE"  # NUMERIC
    MILLIMETRE = "MILLIMETRE"  # NUMERIC
    FOOT = "FOOT"  # NUMERIC
    FOOT_SURVEY_US = "FOOT_SURVEY_US"  # NUMERIC
    YARD = "YARD"  # NUMERIC
    INCH = "INCH"  # NUMERIC
    MILE = "MILE"  # NUMERIC
    NAUTICAL_MILE = "NAUTICAL_MILE"  # NUMERIC
    ANGSTROM = "ANGSTROM"  # NUMERIC
    ASTRONOMICAL_UNIT = "ASTRONOMICAL_UNIT"  # NUMERIC
    LIGHT_YEAR = "LIGHT_YEAR"  # NUMERIC
    PARSEC = "PARSEC"  # NUMERIC
    POINT = "POINT"  # NUMERIC
    PIXEL = "PIXEL"  # NUMERIC

    # LUMINOUS_FLUX
    LUMEN = "LUMEN"  # NUMERIC

    # LUMINOUS_INTENSITY
    CANDELA = "CANDELA"  # NUMERIC

    # MAGNETIC_FLUX
    WEBER = "WEBER"  # NUMERIC
    MAXWELL = "MAXWELL"  # NUMERIC

    # MAGNETIC_FLUX_DENSITY
    TESLA = "TESLA"  # NUMERIC
    GAUSS = "GAUSS"  # NUMERIC

    # MASS
    KILOGRAM = "KILOGRAM"  # NUMERIC
    GRAM = "GRAM"  # NUMERIC
    ATOMIC_MASS = "ATOMIC_MASS"  # NUMERIC
    ELECTRON_MASS = "ELECTRON_MASS"  # NUMERIC
    POUND = "POUND"  # NUMERIC
    OUNCE = "OUNCE"  # NUMERIC
    TON_US = "TON_US"  # NUMERIC
    TON_UK = "TON_UK"  # NUMERIC
    METRIC_TON = "METRIC_TON"  # NUMERIC

    # POWER
    WATT = "WATT"  # NUMERIC
    HORSEPOWER = "HORSEPOWER"  # NUMERIC

    # PRESSURE
    PASCAL = "PASCAL"  # NUMERIC
    HECTOPASCAL = "HECTOPASCAL"  # NUMERIC
    ATMOSPHERE = "ATMOSPHERE"  # NUMERIC
    BAR = "BAR"  # NUMERIC
    MILLIBAR = "MILLIBAR"  # NUMERIC
    MILLIMETER_OF_MERCURY = "MILLIMETER_OF_MERCURY"  # NUMERIC
    INCH_OF_MERCURY = "INCH_OF_MERCURY"  # NUMERIC

    # RADIATION_DOSE_ABSORBED
    GRAY = "GRAY"  # NUMERIC
    RAD = "RAD"  # NUMERIC

    # RADIATION_DOSE_EFFECTIVE
    SIEVERT = "SIEVERT"  # NUMERIC
    REM = "REM"  # NUMERIC

    # RADIOACTIVE_ACTIVITY
    BECQUEREL = "BECQUEREL"  # NUMERIC
    CURIE = "CURIE"  # NUMERIC
    RUTHERFORD = "RUTHERFORD"  # NUMERIC

    # ROENTGEN
    ROENTGEN = "ROENTGEN"  # NUMERIC

    # SOLID_ANGLE
    STERADIAN = "STERADIAN"  # NUMERIC
    SPHERE = "SPHERE"  # NUMERIC

    # TEMPERATURE
    KELVIN = "KELVIN"  # NUMERIC
    CELSIUS = "CELSIUS"  # NUMERIC
    RANKINE = "RANKINE"  # NUMERIC
    FAHRENHEIT = "FAHRENHEIT"  # NUMERIC

    # VELOCITY
    METRES_PER_SECOND = "METRES_PER_SECOND"  # NUMERIC
    MILES_PER_HOUR = "MILES_PER_HOUR"  # NUMERIC
    KILOMETRES_PER_HOUR = "KILOMETRES_PER_HOUR"  # NUMERIC
    KNOT = "KNOT"  # NUMERIC
    MACH = "MACH"  # NUMERIC
    C = "C"  # NUMERIC

    # VOLUME
    CUBIC_METRE = "CUBIC_METRE"  # NUMERIC
    LITRE = "LITRE"  # NUMERIC
    DECILITRE = "DECILITRE"  # NUMERIC
    MILLILITRE = "MILLILITRE"  # NUMERIC
    CUBIC_INCH = "CUBIC_INCH"  # NUMERIC
    GALLON_DRY_US = "GALLON_DRY_US"  # NUMERIC
    GALLON_UK = "GALLON_UK"  # NUMERIC
    OUNCE_LIQUID_UK = "OUNCE_LIQUID_UK"  # NUMERIC
