"""
Dictionaries module saves all transformations of functions and usages to access the catalogs
SPDX - License - Identifier: LGPL - 3.0 - or -later
Copyright © 2022 Concordia CERC group
Project Coder Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca
"""

import hub.helpers.constants as cte


class Dictionaries:
  """
  Dictionaries class
  """
  _usage_to_hft_usage = {
    cte.RESIDENTIAL: 'residential',
    cte.SINGLE_FAMILY_HOUSE: 'single family house',
    cte.MULTI_FAMILY_HOUSE: 'multifamily house',
    cte.ROW_HOUSE: 'single family house',
    cte.MID_RISE_APARTMENT: 'multifamily house',
    cte.HIGH_RISE_APARTMENT: 'multifamily house',
    cte.OFFICE_AND_ADMINISTRATION: 'office and administration',
    cte.SMALL_OFFICE: 'office and administration',
    cte.MEDIUM_OFFICE: 'office and administration',
    cte.LARGE_OFFICE: 'office and administration',
    cte.COURTHOUSE: 'office and administration',
    cte.FIRE_STATION: 'office and administration',
    cte.PENITENTIARY: 'school with shower',
    cte.POLICE_STATION: 'office and administration',
    cte.POST_OFFICE: 'office and administration',
    cte.LIBRARY: 'office and administration',
    cte.EDUCATION: 'education',
    cte.PRIMARY_SCHOOL: 'school without shower',
    cte.PRIMARY_SCHOOL_WITH_SHOWER: 'school with shower',
    cte.SECONDARY_SCHOOL: 'education',
    cte.UNIVERSITY: 'education',
    cte.LABORATORY_AND_RESEARCH_CENTER: 'laboratory and research centers',
    cte.STAND_ALONE_RETAIL: 'retail',
    cte.HOSPITAL: 'health care',
    cte.OUT_PATIENT_HEALTH_CARE: 'health care',
    cte.HEALTH_CARE: 'health care',
    cte.RETIREMENT_HOME_OR_ORPHANAGE: 'Home for the aged or orphanage',
    cte.COMMERCIAL: 'retail',
    cte.STRIP_MALL: 'retail',
    cte.SUPERMARKET: 'retail shop / refrigerated food',
    cte.RETAIL_SHOP_WITHOUT_REFRIGERATED_FOOD: 'retail',
    cte.RETAIL_SHOP_WITH_REFRIGERATED_FOOD: 'retail shop / refrigerated food',
    cte.RESTAURANT: 'restaurant',
    cte.QUICK_SERVICE_RESTAURANT: 'restaurant',
    cte.FULL_SERVICE_RESTAURANT: 'restaurant',
    cte.HOTEL: 'hotel',
    cte.HOTEL_MEDIUM_CLASS: 'hotel (Medium-class)',
    cte.SMALL_HOTEL: 'hotel',
    cte.LARGE_HOTEL: 'hotel',
    cte.DORMITORY: 'dormitory',
    cte.EVENT_LOCATION: 'event location',
    cte.CONVENTION_CENTER: 'event location',
    cte.HALL: 'hall',
    cte.GREEN_HOUSE: 'green house',
    cte.INDUSTRY: 'industry',
    cte.WORKSHOP: 'industry',
    cte.WAREHOUSE: 'industry',
    cte.WAREHOUSE_REFRIGERATED: 'industry',
    cte.SPORTS_LOCATION: 'sport location',
    cte.SPORTS_ARENA: 'sport location',
    cte.GYMNASIUM: 'sport location',
    cte.MOTION_PICTURE_THEATRE: 'event location',
    cte.MUSEUM: 'event location',
    cte.PERFORMING_ARTS_THEATRE: 'event location',
    cte.TRANSPORTATION: 'n/a',
    cte.AUTOMOTIVE_FACILITY: 'n/a',
    cte.PARKING_GARAGE: 'n/a',
    cte.RELIGIOUS: 'event location',
    cte.NON_HEATED: 'non-heated'
  }

  _usage_to_comnet_usage = {
    cte.RESIDENTIAL: 'BA Multifamily',
    cte.SINGLE_FAMILY_HOUSE: 'BA Multifamily',
    cte.MULTI_FAMILY_HOUSE: 'BA Multifamily',
    cte.ROW_HOUSE: 'BA Multifamily',
    cte.MID_RISE_APARTMENT: 'BA Multifamily',
    cte.HIGH_RISE_APARTMENT: 'BA Multifamily',
    cte.OFFICE_AND_ADMINISTRATION: 'BA Office',
    cte.SMALL_OFFICE: 'BA Office',
    cte.MEDIUM_OFFICE: 'BA Office',
    cte.LARGE_OFFICE: 'BA Office',
    cte.COURTHOUSE: 'BA Courthouse',
    cte.FIRE_STATION: 'BA Fire Station',
    cte.PENITENTIARY: 'BA Penitentiary',
    cte.POLICE_STATION: 'BA Police Station',
    cte.POST_OFFICE: 'BA Post Office',
    cte.LIBRARY: 'BA Library',
    cte.EDUCATION: 'BA School/University',
    cte.PRIMARY_SCHOOL: 'BA School/University',
    cte.PRIMARY_SCHOOL_WITH_SHOWER: 'BA School/University',
    cte.SECONDARY_SCHOOL: 'BA School/University',
    cte.UNIVERSITY: 'BA School/University',
    cte.LABORATORY_AND_RESEARCH_CENTER: 'BA School/University',
    cte.STAND_ALONE_RETAIL: 'BA Retail',
    cte.HOSPITAL: 'BA Hospital',
    cte.OUT_PATIENT_HEALTH_CARE: 'BA Healthcare Clinic',
    cte.HEALTH_CARE: 'BA Healthcare Clinic',
    cte.RETIREMENT_HOME_OR_ORPHANAGE: 'BA Healthcare Clinic',
    cte.COMMERCIAL: 'BA Retail',
    cte.STRIP_MALL: 'BA Retail',
    cte.SUPERMARKET: 'BA Retail',
    cte.RETAIL_SHOP_WITHOUT_REFRIGERATED_FOOD: 'BA Retail',
    cte.RETAIL_SHOP_WITH_REFRIGERATED_FOOD: 'BA Retail',
    cte.RESTAURANT: 'BA Dining: Bar Lounge/Leisure',
    cte.QUICK_SERVICE_RESTAURANT: 'BA Dining: Cafeteria/Fast Food',
    cte.FULL_SERVICE_RESTAURANT: 'BA Dining: Bar Lounge/Leisure',
    cte.HOTEL: 'BA Hotel',
    cte.HOTEL_MEDIUM_CLASS: 'BA Motel',
    cte.SMALL_HOTEL: 'BA Motel',
    cte.LARGE_HOTEL: 'BA Hotel',
    cte.DORMITORY: 'BA Dormitory',
    cte.EVENT_LOCATION: 'BA Convention Center',
    cte.CONVENTION_CENTER: 'BA Convention Center',
    cte.HALL: 'BA Town Hall',
    cte.GREEN_HOUSE: 'n/a',
    cte.INDUSTRY: 'BA Manufacturing Facility',
    cte.WORKSHOP: 'BA Workshop',
    cte.WAREHOUSE: 'BA Warehouse',
    cte.WAREHOUSE_REFRIGERATED: 'BA Warehouse',
    cte.SPORTS_LOCATION: 'BA Exercise Center',
    cte.SPORTS_ARENA: 'BA Sports Arena',
    cte.GYMNASIUM: 'BA Gymnasium',
    cte.MOTION_PICTURE_THEATRE: 'BA Motion Picture Theater',
    cte.MUSEUM: 'BA Museum',
    cte.PERFORMING_ARTS_THEATRE: 'BA Performing Arts Theater',
    cte.TRANSPORTATION: 'BA Transportation',
    cte.AUTOMOTIVE_FACILITY: 'BA Automotive Facility',
    cte.PARKING_GARAGE: 'BA Parking Garage',
    cte.RELIGIOUS: 'BA Religious Building',
    cte.NON_HEATED: 'n/a'
  }

  _usage_to_nrcan_usage = {
    cte.RESIDENTIAL: 'Multi-unit residential building',
    cte.SINGLE_FAMILY_HOUSE: 'Multi-unit residential building',
    cte.MULTI_FAMILY_HOUSE: 'Multi-unit residential building',
    cte.ROW_HOUSE: 'Multi-unit residential building',
    cte.MID_RISE_APARTMENT: 'Multi-unit residential building',
    cte.HIGH_RISE_APARTMENT: 'Multi-unit residential building',
    cte.OFFICE_AND_ADMINISTRATION: 'Office',
    cte.SMALL_OFFICE: 'Office',
    cte.MEDIUM_OFFICE: 'Office',
    cte.LARGE_OFFICE: 'Office',
    cte.COURTHOUSE: 'Courthouse',
    cte.FIRE_STATION: 'Fire station',
    cte.PENITENTIARY: 'Penitentiary',
    cte.POLICE_STATION: 'Police station',
    cte.POST_OFFICE: 'Post office',
    cte.LIBRARY: 'Library',
    cte.EDUCATION: 'School/university',
    cte.PRIMARY_SCHOOL: 'School/university',
    cte.PRIMARY_SCHOOL_WITH_SHOWER: 'School/university',
    cte.SECONDARY_SCHOOL: 'School/university',
    cte.UNIVERSITY: 'School/university',
    cte.LABORATORY_AND_RESEARCH_CENTER: 'School/university',
    cte.STAND_ALONE_RETAIL: 'Retail',
    cte.HOSPITAL: 'Hospital',
    cte.OUT_PATIENT_HEALTH_CARE: 'Health-care clinic',
    cte.HEALTH_CARE: 'Health-care clinic',
    cte.RETIREMENT_HOME_OR_ORPHANAGE: 'Health-care clinic',
    cte.COMMERCIAL: 'Retail',
    cte.STRIP_MALL: 'Retail',
    cte.SUPERMARKET: 'Retail',
    cte.RETAIL_SHOP_WITHOUT_REFRIGERATED_FOOD: 'Retail',
    cte.RETAIL_SHOP_WITH_REFRIGERATED_FOOD: 'Retail',
    cte.RESTAURANT: 'Dining - bar/lounge',
    cte.QUICK_SERVICE_RESTAURANT: 'Dining - cafeteria',
    cte.FULL_SERVICE_RESTAURANT: 'Dining - bar/lounge',
    cte.HOTEL: 'Hotel',
    cte.HOTEL_MEDIUM_CLASS: 'Motel',
    cte.SMALL_HOTEL: 'Motel',
    cte.LARGE_HOTEL: 'Hotel',
    cte.DORMITORY: 'Dormitory',
    cte.EVENT_LOCATION: 'Convention centre',
    cte.CONVENTION_CENTER: 'Convention centre',
    cte.HALL: 'Town hall',
    cte.GREEN_HOUSE: 'n/a',
    cte.INDUSTRY: 'Manufacturing facility',
    cte.WORKSHOP: 'Workshop',
    cte.WAREHOUSE: 'Warehouse',
    cte.WAREHOUSE_REFRIGERATED: 'Warehouse - refrigerated',
    cte.SPORTS_LOCATION: 'Exercise centre',
    cte.SPORTS_ARENA: 'Sports arena',
    cte.GYMNASIUM: 'Gymnasium',
    cte.MOTION_PICTURE_THEATRE: 'Motion picture theatre',
    cte.MUSEUM: 'Museum',
    cte.PERFORMING_ARTS_THEATRE: 'Performing arts theatre',
    cte.TRANSPORTATION: 'Transportation',
    cte.AUTOMOTIVE_FACILITY: 'Automotive facility',
    cte.PARKING_GARAGE: 'Parking garage',
    cte.RELIGIOUS: 'Religious',
    cte.NON_HEATED: 'n/a'
  }

  _function_to_nrcan_construction_function = {
    cte.RESIDENTIAL: 'MidriseApartment',
    cte.SINGLE_FAMILY_HOUSE: 'MidriseApartment',
    cte.MULTI_FAMILY_HOUSE: 'HighriseApartment',
    cte.ROW_HOUSE: 'MidriseApartment',
    cte.MID_RISE_APARTMENT: 'MidriseApartment',
    cte.HIGH_RISE_APARTMENT: 'HighriseApartment',
    cte.OFFICE_AND_ADMINISTRATION: 'MediumOffice',
    cte.SMALL_OFFICE: 'SmallOffice',
    cte.MEDIUM_OFFICE: 'MediumOffice',
    cte.LARGE_OFFICE: 'LargeOffice',
    cte.COURTHOUSE: 'MediumOffice',
    cte.FIRE_STATION: 'n/a',
    cte.PENITENTIARY: 'LargeHotel',
    cte.POLICE_STATION: 'n/a',
    cte.POST_OFFICE: 'MediumOffice',
    cte.LIBRARY: 'MediumOffice',
    cte.EDUCATION: 'SecondarySchool',
    cte.PRIMARY_SCHOOL: 'PrimarySchool',
    cte.PRIMARY_SCHOOL_WITH_SHOWER: 'PrimarySchool',
    cte.SECONDARY_SCHOOL: 'SecondarySchool',
    cte.UNIVERSITY: 'SecondarySchool',
    cte.LABORATORY_AND_RESEARCH_CENTER: 'SecondarySchool',
    cte.STAND_ALONE_RETAIL: 'RetailStandalone',
    cte.HOSPITAL: 'Hospital',
    cte.OUT_PATIENT_HEALTH_CARE: 'Outpatient',
    cte.HEALTH_CARE: 'Outpatient',
    cte.RETIREMENT_HOME_OR_ORPHANAGE: 'SmallHotel',
    cte.COMMERCIAL: 'RetailStripmall',
    cte.STRIP_MALL: 'RetailStripmall',
    cte.SUPERMARKET: 'RetailStripmall',
    cte.RETAIL_SHOP_WITHOUT_REFRIGERATED_FOOD: 'RetailStandalone',
    cte.RETAIL_SHOP_WITH_REFRIGERATED_FOOD: 'RetailStandalone',
    cte.RESTAURANT: 'FullServiceRestaurant',
    cte.QUICK_SERVICE_RESTAURANT: 'QuickServiceRestaurant',
    cte.FULL_SERVICE_RESTAURANT: 'FullServiceRestaurant',
    cte.HOTEL: 'SmallHotel',
    cte.HOTEL_MEDIUM_CLASS: 'SmallHotel',
    cte.SMALL_HOTEL: 'SmallHotel',
    cte.LARGE_HOTEL: 'LargeHotel',
    cte.DORMITORY: 'SmallHotel',
    cte.EVENT_LOCATION: 'n/a',
    cte.CONVENTION_CENTER: 'n/a',
    cte.HALL: 'n/a',
    cte.GREEN_HOUSE: 'n/a',
    cte.INDUSTRY: 'n/a',
    cte.WORKSHOP: 'n/a',
    cte.WAREHOUSE: 'Warehouse',
    cte.WAREHOUSE_REFRIGERATED: 'Warehouse',
    cte.SPORTS_LOCATION: 'n/a',
    cte.SPORTS_ARENA: 'n/a',
    cte.GYMNASIUM: 'n/a',
    cte.MOTION_PICTURE_THEATRE: 'n/a',
    cte.MUSEUM: 'n/a',
    cte.PERFORMING_ARTS_THEATRE: 'n/a',
    cte.TRANSPORTATION: 'n/a',
    cte.AUTOMOTIVE_FACILITY: 'n/a',
    cte.PARKING_GARAGE: 'n/a',
    cte.RELIGIOUS: 'n/a',
    cte.NON_HEATED: 'n/a'
  }

  _function_to_nrel_construction_function = {
    cte.RESIDENTIAL: 'residential',
    cte.SINGLE_FAMILY_HOUSE: 'residential',
    cte.MULTI_FAMILY_HOUSE: 'midrise apartment',
    cte.ROW_HOUSE: 'midrise apartment',
    cte.MID_RISE_APARTMENT: 'midrise apartment',
    cte.HIGH_RISE_APARTMENT: 'high-rise apartment',
    cte.OFFICE_AND_ADMINISTRATION: 'medium office',
    cte.SMALL_OFFICE: 'small office',
    cte.MEDIUM_OFFICE: 'medium office',
    cte.LARGE_OFFICE: 'large office',
    cte.COURTHOUSE: 'medium office',
    cte.FIRE_STATION: 'n/a',
    cte.PENITENTIARY: 'large hotel',
    cte.POLICE_STATION: 'n/a',
    cte.POST_OFFICE: 'medium office',
    cte.LIBRARY: 'medium office',
    cte.EDUCATION: 'secondary school',
    cte.PRIMARY_SCHOOL: 'primary school',
    cte.PRIMARY_SCHOOL_WITH_SHOWER: 'primary school',
    cte.SECONDARY_SCHOOL: 'secondary school',
    cte.UNIVERSITY: 'secondary school',
    cte.LABORATORY_AND_RESEARCH_CENTER: 'secondary school',
    cte.STAND_ALONE_RETAIL: 'stand-alone retail',
    cte.HOSPITAL: 'hospital',
    cte.OUT_PATIENT_HEALTH_CARE: 'outpatient healthcare',
    cte.HEALTH_CARE: 'outpatient healthcare',
    cte.RETIREMENT_HOME_OR_ORPHANAGE: 'small hotel',
    cte.COMMERCIAL: 'strip mall',
    cte.STRIP_MALL: 'strip mall',
    cte.SUPERMARKET: 'supermarket',
    cte.RETAIL_SHOP_WITHOUT_REFRIGERATED_FOOD: 'stand-alone retail',
    cte.RETAIL_SHOP_WITH_REFRIGERATED_FOOD: 'stand-alone retail',
    cte.RESTAURANT: 'full service restaurant',
    cte.QUICK_SERVICE_RESTAURANT: 'quick service restaurant',
    cte.FULL_SERVICE_RESTAURANT: 'full service restaurant',
    cte.HOTEL: 'small hotel',
    cte.HOTEL_MEDIUM_CLASS: 'small hotel',
    cte.SMALL_HOTEL: 'small hotel',
    cte.LARGE_HOTEL: 'large hotel',
    cte.DORMITORY: 'small hotel',
    cte.EVENT_LOCATION: 'n/a',
    cte.CONVENTION_CENTER: 'n/a',
    cte.HALL: 'n/a',
    cte.GREEN_HOUSE: 'n/a',
    cte.INDUSTRY: 'n/a',
    cte.WORKSHOP: 'n/a',
    cte.WAREHOUSE: 'warehouse',
    cte.WAREHOUSE_REFRIGERATED: 'warehouse',
    cte.SPORTS_LOCATION: 'n/a',
    cte.SPORTS_ARENA: 'n/a',
    cte.GYMNASIUM: 'n/a',
    cte.MOTION_PICTURE_THEATRE: 'n/a',
    cte.MUSEUM: 'n/a',
    cte.PERFORMING_ARTS_THEATRE: 'n/a',
    cte.TRANSPORTATION: 'n/a',
    cte.AUTOMOTIVE_FACILITY: 'n/a',
    cte.PARKING_GARAGE: 'n/a',
    cte.RELIGIOUS: 'n/a',
    cte.NON_HEATED: 'n/a'
  }

  _pluto_function_to_hub_function = {
    'A0': cte.SINGLE_FAMILY_HOUSE,
    'A1': cte.SINGLE_FAMILY_HOUSE,
    'A2': cte.SINGLE_FAMILY_HOUSE,
    'A3': cte.SINGLE_FAMILY_HOUSE,
    'A4': cte.SINGLE_FAMILY_HOUSE,
    'A5': cte.SINGLE_FAMILY_HOUSE,
    'A6': cte.SINGLE_FAMILY_HOUSE,
    'A7': cte.SINGLE_FAMILY_HOUSE,
    'A8': cte.SINGLE_FAMILY_HOUSE,
    'A9': cte.SINGLE_FAMILY_HOUSE,
    'B1': cte.MULTI_FAMILY_HOUSE,
    'B2': cte.MULTI_FAMILY_HOUSE,
    'B3': cte.MULTI_FAMILY_HOUSE,
    'B9': cte.MULTI_FAMILY_HOUSE,
    'C0': cte.RESIDENTIAL,
    'C1': cte.RESIDENTIAL,
    'C2': cte.RESIDENTIAL,
    'C3': cte.RESIDENTIAL,
    'C4': cte.RESIDENTIAL,
    'C5': cte.RESIDENTIAL,
    'C6': cte.RESIDENTIAL,
    'C7': cte.RESIDENTIAL,
    'C8': cte.RESIDENTIAL,
    'C9': cte.RESIDENTIAL,
    'D0': cte.RESIDENTIAL,
    'D1': cte.RESIDENTIAL,
    'D2': cte.RESIDENTIAL,
    'D3': cte.RESIDENTIAL,
    'D4': cte.RESIDENTIAL,
    'D5': cte.RESIDENTIAL,
    'D6': cte.RESIDENTIAL,
    'D7': cte.RESIDENTIAL,
    'D8': cte.RESIDENTIAL,
    'D9': cte.RESIDENTIAL,
    'E1': cte.WAREHOUSE,
    'E3': cte.WAREHOUSE,
    'E4': cte.WAREHOUSE,
    'E5': cte.WAREHOUSE,
    'E7': cte.WAREHOUSE,
    'E9': cte.WAREHOUSE,
    'F1': cte.WAREHOUSE,
    'F2': cte.WAREHOUSE,
    'F4': cte.WAREHOUSE,
    'F5': cte.WAREHOUSE,
    'F8': cte.WAREHOUSE,
    'F9': cte.WAREHOUSE,
    'G0': cte.SMALL_OFFICE,
    'G1': cte.SMALL_OFFICE,
    'G2': cte.SMALL_OFFICE,
    'G3': cte.SMALL_OFFICE,
    'G4': cte.SMALL_OFFICE,
    'G5': cte.SMALL_OFFICE,
    'G6': cte.SMALL_OFFICE,
    'G7': cte.SMALL_OFFICE,
    'G8': cte.SMALL_OFFICE,
    'G9': cte.SMALL_OFFICE,
    'H1': cte.HOTEL,
    'H2': cte.HOTEL,
    'H3': cte.HOTEL,
    'H4': cte.HOTEL,
    'H5': cte.HOTEL,
    'H6': cte.HOTEL,
    'H7': cte.HOTEL,
    'H8': cte.HOTEL,
    'H9': cte.HOTEL,
    'HB': cte.HOTEL,
    'HH': cte.HOTEL,
    'HR': cte.HOTEL,
    'HS': cte.HOTEL,
    'I1': cte.HOSPITAL,
    'I2': cte.OUT_PATIENT_HEALTH_CARE,
    'I3': cte.OUT_PATIENT_HEALTH_CARE,
    'I4': cte.RESIDENTIAL,
    'I5': cte.OUT_PATIENT_HEALTH_CARE,
    'I6': cte.OUT_PATIENT_HEALTH_CARE,
    'I7': cte.OUT_PATIENT_HEALTH_CARE,
    'I9': cte.OUT_PATIENT_HEALTH_CARE,
    'J1': cte.LARGE_OFFICE,
    'J2': cte.LARGE_OFFICE,
    'J3': cte.LARGE_OFFICE,
    'J4': cte.LARGE_OFFICE,
    'J5': cte.LARGE_OFFICE,
    'J6': cte.LARGE_OFFICE,
    'J7': cte.LARGE_OFFICE,
    'J8': cte.LARGE_OFFICE,
    'J9': cte.LARGE_OFFICE,
    'K1': cte.STRIP_MALL,
    'K2': cte.STRIP_MALL,
    'K3': cte.STRIP_MALL,
    'K4': cte.RESIDENTIAL,
    'K5': cte.RESTAURANT,
    'K6': cte.SUPERMARKET,
    'K7': cte.SUPERMARKET,
    'K8': cte.SUPERMARKET,
    'K9': cte.SUPERMARKET,
    'L1': cte.RESIDENTIAL,
    'L2': cte.RESIDENTIAL,
    'L3': cte.RESIDENTIAL,
    'L8': cte.RESIDENTIAL,
    'L9': cte.RESIDENTIAL,
    'M1': cte.LARGE_OFFICE,
    'M2': cte.LARGE_OFFICE,
    'M3': cte.LARGE_OFFICE,
    'M4': cte.LARGE_OFFICE,
    'M9': cte.LARGE_OFFICE,
    'N1': cte.RESIDENTIAL,
    'N2': cte.RESIDENTIAL,
    'N3': cte.RESIDENTIAL,
    'N4': cte.RESIDENTIAL,
    'N9': cte.RESIDENTIAL,
    'O1': cte.SMALL_OFFICE,
    'O2': cte.SMALL_OFFICE,
    'O3': cte.SMALL_OFFICE,
    'O4': cte.SMALL_OFFICE,
    'O5': cte.SMALL_OFFICE,
    'O6': cte.SMALL_OFFICE,
    'O7': cte.SMALL_OFFICE,
    'O8': cte.SMALL_OFFICE,
    'O9': cte.SMALL_OFFICE,
    'P1': cte.LARGE_OFFICE,
    'P2': cte.HOTEL,
    'P3': cte.SMALL_OFFICE,
    'P4': cte.SMALL_OFFICE,
    'P5': cte.SMALL_OFFICE,
    'P6': cte.SMALL_OFFICE,
    'P7': cte.LARGE_OFFICE,
    'P8': cte.LARGE_OFFICE,
    'P9': cte.SMALL_OFFICE,
    'Q0': cte.SMALL_OFFICE,
    'Q1': cte.SMALL_OFFICE,
    'Q2': cte.SMALL_OFFICE,
    'Q3': cte.SMALL_OFFICE,
    'Q4': cte.SMALL_OFFICE,
    'Q5': cte.SMALL_OFFICE,
    'Q6': cte.SMALL_OFFICE,
    'Q7': cte.SMALL_OFFICE,
    'Q8': cte.SMALL_OFFICE,
    'Q9': cte.SMALL_OFFICE,
    'R0': cte.RESIDENTIAL,
    'R1': cte.RESIDENTIAL,
    'R2': cte.RESIDENTIAL,
    'R3': cte.RESIDENTIAL,
    'R4': cte.RESIDENTIAL,
    'R5': cte.RESIDENTIAL,
    'R6': cte.RESIDENTIAL,
    'R7': cte.RESIDENTIAL,
    'R8': cte.RESIDENTIAL,
    'R9': cte.RESIDENTIAL,
    'RA': cte.RESIDENTIAL,
    'RB': cte.RESIDENTIAL,
    'RC': cte.RESIDENTIAL,
    'RD': cte.RESIDENTIAL,
    'RG': cte.RESIDENTIAL,
    'RH': cte.RESIDENTIAL,
    'RI': cte.RESIDENTIAL,
    'RK': cte.RESIDENTIAL,
    'RM': cte.RESIDENTIAL,
    'RR': cte.RESIDENTIAL,
    'RS': cte.RESIDENTIAL,
    'RW': cte.RESIDENTIAL,
    'RX': cte.RESIDENTIAL,
    'RZ': cte.RESIDENTIAL,
    'S0': cte.RESIDENTIAL,
    'S1': cte.RESIDENTIAL,
    'S2': cte.RESIDENTIAL,
    'S3': cte.RESIDENTIAL,
    'S4': cte.RESIDENTIAL,
    'S5': cte.RESIDENTIAL,
    'S9': cte.RESIDENTIAL,
    'U0': cte.WAREHOUSE,
    'U1': cte.WAREHOUSE,
    'U2': cte.WAREHOUSE,
    'U3': cte.WAREHOUSE,
    'U4': cte.WAREHOUSE,
    'U5': cte.WAREHOUSE,
    'U6': cte.WAREHOUSE,
    'U7': cte.WAREHOUSE,
    'U8': cte.WAREHOUSE,
    'U9': cte.WAREHOUSE,
    'W1': cte.PRIMARY_SCHOOL,
    'W2': cte.PRIMARY_SCHOOL,
    'W3': cte.SECONDARY_SCHOOL,
    'W4': cte.EDUCATION,
    'W5': cte.SECONDARY_SCHOOL,
    'W6': cte.SECONDARY_SCHOOL,
    'W7': cte.SECONDARY_SCHOOL,
    'W8': cte.PRIMARY_SCHOOL,
    'W9': cte.SECONDARY_SCHOOL,
    'Y1': cte.LARGE_OFFICE,
    'Y2': cte.LARGE_OFFICE,
    'Y3': cte.LARGE_OFFICE,
    'Y4': cte.LARGE_OFFICE,
    'Y5': cte.LARGE_OFFICE,
    'Y6': cte.LARGE_OFFICE,
    'Y7': cte.LARGE_OFFICE,
    'Y8': cte.LARGE_OFFICE,
    'Y9': cte.LARGE_OFFICE,
    'Z1': cte.LARGE_OFFICE
  }
  _hft_function_to_hub_function = {
    'residential': cte.RESIDENTIAL,
    'single family house': cte.SINGLE_FAMILY_HOUSE,
    'multifamily house': cte.MULTI_FAMILY_HOUSE,
    'hotel': cte.HOTEL,
    'hospital': cte.HOSPITAL,
    'outpatient': cte.OUT_PATIENT_HEALTH_CARE,
    'commercial': cte.SUPERMARKET,
    'strip mall': cte.STRIP_MALL,
    'warehouse': cte.WAREHOUSE,
    'primary school': cte.PRIMARY_SCHOOL,
    'secondary school': cte.EDUCATION,
    'office': cte.MEDIUM_OFFICE,
    'large office': cte.LARGE_OFFICE
  }

  @property
  def hub_usage_to_hft_usage(self):
    """
    Get HfT usage from the given internal usage
    :return: dict
    """
    return self._usage_to_hft_usage

  @property
  def hub_usage_to_comnet_usage(self):
    """
    Get Comnet usage from the given internal usage
    :return: dict
    """
    return self._usage_to_comnet_usage

  @property
  def hub_usage_to_nrcan_usage(self):
    """
    Get Nrcan usage from the given internal usage
    :return: dict
    """
    return self._usage_to_nrcan_usage

  @property
  def hub_function_to_nrcan_construction_function(self):
    """
    Get Nrcan construction function from the given internal function
    :return: dict
    """
    return self._function_to_nrcan_construction_function

  @property
  def hub_function_to_nrel_construction_function(self):
    """
    Get Nrel construction function from the given internal function
    :return: dict
    """
    return self._function_to_nrel_construction_function

  @property
  def pluto_function_to_hub_function(self):
    """
    Set internal function from pluto standard
    :return: dict
    """
    return self._pluto_function_to_hub_function

  @property
  def hft_function_to_hub_function(self):
    """
    Set internal function from functions used in hft files
    :return: dict
    """
    return self._hft_function_to_hub_function
