# coding: utf-8

"""
    RegObs API

      ## Introduction    RegObs is a tool for collecting observations and events   related to natural hazards. It is currently used by the   Norwegian flood, landslide and avalanche warning service in   Norway, but the data is openly available for anyone through this API.    Regobs has been developed by the Norwegian Water resources and   Energy Directorate (NVE), in collaboration with the Norwegian   Meteorological Institute (MET) and the Norwegian Public Roads   Administration (NPRA).    You can check out our representation of the data at [regobs.no](http://regobs.no).    ## Authentication    Some endpoints require an api key.  You can get an API key by sending an email to   [raek@nve.no](mailto:raek@nve.no?subject=RegObs%20API%20Key).  To use the api key with the swagger ui, fill in the api\\_key input above.   It should then be included with every request in the   `regObs_apptoken` header.    ## Getting started    Get the last 10 observations using python:    ```python  import requests  r = requests.post('https://api.regobs.no/v4/Search',       data={'NumberOfRecords': 10},      headers={'Content-Type': 'application/json'}  )  data = r.json()  print(len(data))  # 10  ```      # noqa: E501

    OpenAPI spec version: v4
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six


class ObsLocationViewModel(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'obs_location_id': 'int',
        'forecast_region_tid': 'int',
        'forecast_region_name': 'str',
        'location_name': 'str',
        'height': 'int',
        'municipal_name': 'str',
        'municipal_no': 'str',
        'country_id': 'int',
        'country_name': 'str',
        'utm_east': 'int',
        'utm_north': 'int',
        'utm_zone': 'int',
        'location_description': 'str',
        'latitude': 'float',
        'longitude': 'float',
        'utm_source_tid': 'int',
        'utm_source_name': 'str',
        'comment': 'str',
        'uncertainty': 'int',
        'title': 'str'
    }

    attribute_map = {
        'obs_location_id': 'ObsLocationID',
        'forecast_region_tid': 'ForecastRegionTID',
        'forecast_region_name': 'ForecastRegionName',
        'location_name': 'LocationName',
        'height': 'Height',
        'municipal_name': 'MunicipalName',
        'municipal_no': 'MunicipalNo',
        'country_id': 'CountryId',
        'country_name': 'CountryName',
        'utm_east': 'UTMEast',
        'utm_north': 'UTMNorth',
        'utm_zone': 'UTMZone',
        'location_description': 'LocationDescription',
        'latitude': 'Latitude',
        'longitude': 'Longitude',
        'utm_source_tid': 'UTMSourceTID',
        'utm_source_name': 'UTMSourceName',
        'comment': 'Comment',
        'uncertainty': 'Uncertainty',
        'title': 'Title'
    }

    def __init__(self, obs_location_id=None, forecast_region_tid=None, forecast_region_name=None, location_name=None, height=None, municipal_name=None, municipal_no=None, country_id=None, country_name=None, utm_east=None, utm_north=None, utm_zone=None, location_description=None, latitude=None, longitude=None, utm_source_tid=None, utm_source_name=None, comment=None, uncertainty=None, title=None):  # noqa: E501
        """ObsLocationViewModel - a model defined in Swagger"""  # noqa: E501
        self._obs_location_id = None
        self._forecast_region_tid = None
        self._forecast_region_name = None
        self._location_name = None
        self._height = None
        self._municipal_name = None
        self._municipal_no = None
        self._country_id = None
        self._country_name = None
        self._utm_east = None
        self._utm_north = None
        self._utm_zone = None
        self._location_description = None
        self._latitude = None
        self._longitude = None
        self._utm_source_tid = None
        self._utm_source_name = None
        self._comment = None
        self._uncertainty = None
        self._title = None
        self.discriminator = None
        if obs_location_id is not None:
            self.obs_location_id = obs_location_id
        if forecast_region_tid is not None:
            self.forecast_region_tid = forecast_region_tid
        if forecast_region_name is not None:
            self.forecast_region_name = forecast_region_name
        if location_name is not None:
            self.location_name = location_name
        if height is not None:
            self.height = height
        if municipal_name is not None:
            self.municipal_name = municipal_name
        if municipal_no is not None:
            self.municipal_no = municipal_no
        if country_id is not None:
            self.country_id = country_id
        if country_name is not None:
            self.country_name = country_name
        if utm_east is not None:
            self.utm_east = utm_east
        if utm_north is not None:
            self.utm_north = utm_north
        if utm_zone is not None:
            self.utm_zone = utm_zone
        if location_description is not None:
            self.location_description = location_description
        if latitude is not None:
            self.latitude = latitude
        if longitude is not None:
            self.longitude = longitude
        if utm_source_tid is not None:
            self.utm_source_tid = utm_source_tid
        if utm_source_name is not None:
            self.utm_source_name = utm_source_name
        if comment is not None:
            self.comment = comment
        if uncertainty is not None:
            self.uncertainty = uncertainty
        if title is not None:
            self.title = title

    @property
    def obs_location_id(self):
        """Gets the obs_location_id of this ObsLocationViewModel.  # noqa: E501


        :return: The obs_location_id of this ObsLocationViewModel.  # noqa: E501
        :rtype: int
        """
        return self._obs_location_id

    @obs_location_id.setter
    def obs_location_id(self, obs_location_id):
        """Sets the obs_location_id of this ObsLocationViewModel.


        :param obs_location_id: The obs_location_id of this ObsLocationViewModel.  # noqa: E501
        :type: int
        """

        self._obs_location_id = obs_location_id

    @property
    def forecast_region_tid(self):
        """Gets the forecast_region_tid of this ObsLocationViewModel.  # noqa: E501


        :return: The forecast_region_tid of this ObsLocationViewModel.  # noqa: E501
        :rtype: int
        """
        return self._forecast_region_tid

    @forecast_region_tid.setter
    def forecast_region_tid(self, forecast_region_tid):
        """Sets the forecast_region_tid of this ObsLocationViewModel.


        :param forecast_region_tid: The forecast_region_tid of this ObsLocationViewModel.  # noqa: E501
        :type: int
        """

        self._forecast_region_tid = forecast_region_tid

    @property
    def forecast_region_name(self):
        """Gets the forecast_region_name of this ObsLocationViewModel.  # noqa: E501


        :return: The forecast_region_name of this ObsLocationViewModel.  # noqa: E501
        :rtype: str
        """
        return self._forecast_region_name

    @forecast_region_name.setter
    def forecast_region_name(self, forecast_region_name):
        """Sets the forecast_region_name of this ObsLocationViewModel.


        :param forecast_region_name: The forecast_region_name of this ObsLocationViewModel.  # noqa: E501
        :type: str
        """

        self._forecast_region_name = forecast_region_name

    @property
    def location_name(self):
        """Gets the location_name of this ObsLocationViewModel.  # noqa: E501


        :return: The location_name of this ObsLocationViewModel.  # noqa: E501
        :rtype: str
        """
        return self._location_name

    @location_name.setter
    def location_name(self, location_name):
        """Sets the location_name of this ObsLocationViewModel.


        :param location_name: The location_name of this ObsLocationViewModel.  # noqa: E501
        :type: str
        """

        self._location_name = location_name

    @property
    def height(self):
        """Gets the height of this ObsLocationViewModel.  # noqa: E501


        :return: The height of this ObsLocationViewModel.  # noqa: E501
        :rtype: int
        """
        return self._height

    @height.setter
    def height(self, height):
        """Sets the height of this ObsLocationViewModel.


        :param height: The height of this ObsLocationViewModel.  # noqa: E501
        :type: int
        """

        self._height = height

    @property
    def municipal_name(self):
        """Gets the municipal_name of this ObsLocationViewModel.  # noqa: E501


        :return: The municipal_name of this ObsLocationViewModel.  # noqa: E501
        :rtype: str
        """
        return self._municipal_name

    @municipal_name.setter
    def municipal_name(self, municipal_name):
        """Sets the municipal_name of this ObsLocationViewModel.


        :param municipal_name: The municipal_name of this ObsLocationViewModel.  # noqa: E501
        :type: str
        """

        self._municipal_name = municipal_name

    @property
    def municipal_no(self):
        """Gets the municipal_no of this ObsLocationViewModel.  # noqa: E501


        :return: The municipal_no of this ObsLocationViewModel.  # noqa: E501
        :rtype: str
        """
        return self._municipal_no

    @municipal_no.setter
    def municipal_no(self, municipal_no):
        """Sets the municipal_no of this ObsLocationViewModel.


        :param municipal_no: The municipal_no of this ObsLocationViewModel.  # noqa: E501
        :type: str
        """

        self._municipal_no = municipal_no

    @property
    def country_id(self):
        """Gets the country_id of this ObsLocationViewModel.  # noqa: E501


        :return: The country_id of this ObsLocationViewModel.  # noqa: E501
        :rtype: int
        """
        return self._country_id

    @country_id.setter
    def country_id(self, country_id):
        """Sets the country_id of this ObsLocationViewModel.


        :param country_id: The country_id of this ObsLocationViewModel.  # noqa: E501
        :type: int
        """

        self._country_id = country_id

    @property
    def country_name(self):
        """Gets the country_name of this ObsLocationViewModel.  # noqa: E501


        :return: The country_name of this ObsLocationViewModel.  # noqa: E501
        :rtype: str
        """
        return self._country_name

    @country_name.setter
    def country_name(self, country_name):
        """Sets the country_name of this ObsLocationViewModel.


        :param country_name: The country_name of this ObsLocationViewModel.  # noqa: E501
        :type: str
        """

        self._country_name = country_name

    @property
    def utm_east(self):
        """Gets the utm_east of this ObsLocationViewModel.  # noqa: E501


        :return: The utm_east of this ObsLocationViewModel.  # noqa: E501
        :rtype: int
        """
        return self._utm_east

    @utm_east.setter
    def utm_east(self, utm_east):
        """Sets the utm_east of this ObsLocationViewModel.


        :param utm_east: The utm_east of this ObsLocationViewModel.  # noqa: E501
        :type: int
        """

        self._utm_east = utm_east

    @property
    def utm_north(self):
        """Gets the utm_north of this ObsLocationViewModel.  # noqa: E501


        :return: The utm_north of this ObsLocationViewModel.  # noqa: E501
        :rtype: int
        """
        return self._utm_north

    @utm_north.setter
    def utm_north(self, utm_north):
        """Sets the utm_north of this ObsLocationViewModel.


        :param utm_north: The utm_north of this ObsLocationViewModel.  # noqa: E501
        :type: int
        """

        self._utm_north = utm_north

    @property
    def utm_zone(self):
        """Gets the utm_zone of this ObsLocationViewModel.  # noqa: E501


        :return: The utm_zone of this ObsLocationViewModel.  # noqa: E501
        :rtype: int
        """
        return self._utm_zone

    @utm_zone.setter
    def utm_zone(self, utm_zone):
        """Sets the utm_zone of this ObsLocationViewModel.


        :param utm_zone: The utm_zone of this ObsLocationViewModel.  # noqa: E501
        :type: int
        """

        self._utm_zone = utm_zone

    @property
    def location_description(self):
        """Gets the location_description of this ObsLocationViewModel.  # noqa: E501


        :return: The location_description of this ObsLocationViewModel.  # noqa: E501
        :rtype: str
        """
        return self._location_description

    @location_description.setter
    def location_description(self, location_description):
        """Sets the location_description of this ObsLocationViewModel.


        :param location_description: The location_description of this ObsLocationViewModel.  # noqa: E501
        :type: str
        """

        self._location_description = location_description

    @property
    def latitude(self):
        """Gets the latitude of this ObsLocationViewModel.  # noqa: E501


        :return: The latitude of this ObsLocationViewModel.  # noqa: E501
        :rtype: float
        """
        return self._latitude

    @latitude.setter
    def latitude(self, latitude):
        """Sets the latitude of this ObsLocationViewModel.


        :param latitude: The latitude of this ObsLocationViewModel.  # noqa: E501
        :type: float
        """

        self._latitude = latitude

    @property
    def longitude(self):
        """Gets the longitude of this ObsLocationViewModel.  # noqa: E501


        :return: The longitude of this ObsLocationViewModel.  # noqa: E501
        :rtype: float
        """
        return self._longitude

    @longitude.setter
    def longitude(self, longitude):
        """Sets the longitude of this ObsLocationViewModel.


        :param longitude: The longitude of this ObsLocationViewModel.  # noqa: E501
        :type: float
        """

        self._longitude = longitude

    @property
    def utm_source_tid(self):
        """Gets the utm_source_tid of this ObsLocationViewModel.  # noqa: E501


        :return: The utm_source_tid of this ObsLocationViewModel.  # noqa: E501
        :rtype: int
        """
        return self._utm_source_tid

    @utm_source_tid.setter
    def utm_source_tid(self, utm_source_tid):
        """Sets the utm_source_tid of this ObsLocationViewModel.


        :param utm_source_tid: The utm_source_tid of this ObsLocationViewModel.  # noqa: E501
        :type: int
        """

        self._utm_source_tid = utm_source_tid

    @property
    def utm_source_name(self):
        """Gets the utm_source_name of this ObsLocationViewModel.  # noqa: E501


        :return: The utm_source_name of this ObsLocationViewModel.  # noqa: E501
        :rtype: str
        """
        return self._utm_source_name

    @utm_source_name.setter
    def utm_source_name(self, utm_source_name):
        """Sets the utm_source_name of this ObsLocationViewModel.


        :param utm_source_name: The utm_source_name of this ObsLocationViewModel.  # noqa: E501
        :type: str
        """

        self._utm_source_name = utm_source_name

    @property
    def comment(self):
        """Gets the comment of this ObsLocationViewModel.  # noqa: E501


        :return: The comment of this ObsLocationViewModel.  # noqa: E501
        :rtype: str
        """
        return self._comment

    @comment.setter
    def comment(self, comment):
        """Sets the comment of this ObsLocationViewModel.


        :param comment: The comment of this ObsLocationViewModel.  # noqa: E501
        :type: str
        """

        self._comment = comment

    @property
    def uncertainty(self):
        """Gets the uncertainty of this ObsLocationViewModel.  # noqa: E501


        :return: The uncertainty of this ObsLocationViewModel.  # noqa: E501
        :rtype: int
        """
        return self._uncertainty

    @uncertainty.setter
    def uncertainty(self, uncertainty):
        """Sets the uncertainty of this ObsLocationViewModel.


        :param uncertainty: The uncertainty of this ObsLocationViewModel.  # noqa: E501
        :type: int
        """

        self._uncertainty = uncertainty

    @property
    def title(self):
        """Gets the title of this ObsLocationViewModel.  # noqa: E501


        :return: The title of this ObsLocationViewModel.  # noqa: E501
        :rtype: str
        """
        return self._title

    @title.setter
    def title(self, title):
        """Sets the title of this ObsLocationViewModel.


        :param title: The title of this ObsLocationViewModel.  # noqa: E501
        :type: str
        """

        self._title = title

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(ObsLocationViewModel, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, ObsLocationViewModel):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
