# coding: utf-8

"""
    Adobe Experience Manager OSGI config (AEM) API

    Swagger AEM OSGI is an OpenAPI specification for Adobe Experience Manager (AEM) OSGI Configurations API  # noqa: E501

    OpenAPI spec version: 1.0.0-pre.0
    Contact: opensource@shinesolutions.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'jdbc_driver_class': 'ConfigNodePropertyString',
        'jdbc_connection_uri': 'ConfigNodePropertyString',
        'jdbc_username': 'ConfigNodePropertyString',
        'jdbc_password': 'ConfigNodePropertyString',
        'jdbc_validation_query': 'ConfigNodePropertyString',
        'default_readonly': 'ConfigNodePropertyBoolean',
        'default_autocommit': 'ConfigNodePropertyBoolean',
        'pool_size': 'ConfigNodePropertyInteger',
        'pool_max_wait_msec': 'ConfigNodePropertyInteger',
        'datasource_name': 'ConfigNodePropertyString',
        'datasource_svc_properties': 'ConfigNodePropertyArray'
    }

    attribute_map = {
        'jdbc_driver_class': 'jdbc.driver.class',
        'jdbc_connection_uri': 'jdbc.connection.uri',
        'jdbc_username': 'jdbc.username',
        'jdbc_password': 'jdbc.password',
        'jdbc_validation_query': 'jdbc.validation.query',
        'default_readonly': 'default.readonly',
        'default_autocommit': 'default.autocommit',
        'pool_size': 'pool.size',
        'pool_max_wait_msec': 'pool.max.wait.msec',
        'datasource_name': 'datasource.name',
        'datasource_svc_properties': 'datasource.svc.properties'
    }

    def __init__(self, jdbc_driver_class=None, jdbc_connection_uri=None, jdbc_username=None, jdbc_password=None, jdbc_validation_query=None, default_readonly=None, default_autocommit=None, pool_size=None, pool_max_wait_msec=None, datasource_name=None, datasource_svc_properties=None):  # noqa: E501
        """ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties - a model defined in OpenAPI"""  # noqa: E501

        self._jdbc_driver_class = None
        self._jdbc_connection_uri = None
        self._jdbc_username = None
        self._jdbc_password = None
        self._jdbc_validation_query = None
        self._default_readonly = None
        self._default_autocommit = None
        self._pool_size = None
        self._pool_max_wait_msec = None
        self._datasource_name = None
        self._datasource_svc_properties = None
        self.discriminator = None

        if jdbc_driver_class is not None:
            self.jdbc_driver_class = jdbc_driver_class
        if jdbc_connection_uri is not None:
            self.jdbc_connection_uri = jdbc_connection_uri
        if jdbc_username is not None:
            self.jdbc_username = jdbc_username
        if jdbc_password is not None:
            self.jdbc_password = jdbc_password
        if jdbc_validation_query is not None:
            self.jdbc_validation_query = jdbc_validation_query
        if default_readonly is not None:
            self.default_readonly = default_readonly
        if default_autocommit is not None:
            self.default_autocommit = default_autocommit
        if pool_size is not None:
            self.pool_size = pool_size
        if pool_max_wait_msec is not None:
            self.pool_max_wait_msec = pool_max_wait_msec
        if datasource_name is not None:
            self.datasource_name = datasource_name
        if datasource_svc_properties is not None:
            self.datasource_svc_properties = datasource_svc_properties

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


        :return: The jdbc_driver_class of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._jdbc_driver_class

    @jdbc_driver_class.setter
    def jdbc_driver_class(self, jdbc_driver_class):
        """Sets the jdbc_driver_class of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param jdbc_driver_class: The jdbc_driver_class of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._jdbc_driver_class = jdbc_driver_class

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


        :return: The jdbc_connection_uri of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._jdbc_connection_uri

    @jdbc_connection_uri.setter
    def jdbc_connection_uri(self, jdbc_connection_uri):
        """Sets the jdbc_connection_uri of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param jdbc_connection_uri: The jdbc_connection_uri of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._jdbc_connection_uri = jdbc_connection_uri

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


        :return: The jdbc_username of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._jdbc_username

    @jdbc_username.setter
    def jdbc_username(self, jdbc_username):
        """Sets the jdbc_username of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param jdbc_username: The jdbc_username of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._jdbc_username = jdbc_username

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


        :return: The jdbc_password of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._jdbc_password

    @jdbc_password.setter
    def jdbc_password(self, jdbc_password):
        """Sets the jdbc_password of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param jdbc_password: The jdbc_password of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._jdbc_password = jdbc_password

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


        :return: The jdbc_validation_query of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._jdbc_validation_query

    @jdbc_validation_query.setter
    def jdbc_validation_query(self, jdbc_validation_query):
        """Sets the jdbc_validation_query of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param jdbc_validation_query: The jdbc_validation_query of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._jdbc_validation_query = jdbc_validation_query

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


        :return: The default_readonly of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyBoolean
        """
        return self._default_readonly

    @default_readonly.setter
    def default_readonly(self, default_readonly):
        """Sets the default_readonly of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param default_readonly: The default_readonly of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyBoolean
        """

        self._default_readonly = default_readonly

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


        :return: The default_autocommit of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyBoolean
        """
        return self._default_autocommit

    @default_autocommit.setter
    def default_autocommit(self, default_autocommit):
        """Sets the default_autocommit of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param default_autocommit: The default_autocommit of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyBoolean
        """

        self._default_autocommit = default_autocommit

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


        :return: The pool_size of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyInteger
        """
        return self._pool_size

    @pool_size.setter
    def pool_size(self, pool_size):
        """Sets the pool_size of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param pool_size: The pool_size of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyInteger
        """

        self._pool_size = pool_size

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


        :return: The pool_max_wait_msec of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyInteger
        """
        return self._pool_max_wait_msec

    @pool_max_wait_msec.setter
    def pool_max_wait_msec(self, pool_max_wait_msec):
        """Sets the pool_max_wait_msec of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param pool_max_wait_msec: The pool_max_wait_msec of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyInteger
        """

        self._pool_max_wait_msec = pool_max_wait_msec

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


        :return: The datasource_name of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._datasource_name

    @datasource_name.setter
    def datasource_name(self, datasource_name):
        """Sets the datasource_name of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param datasource_name: The datasource_name of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._datasource_name = datasource_name

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


        :return: The datasource_svc_properties of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._datasource_svc_properties

    @datasource_svc_properties.setter
    def datasource_svc_properties(self, datasource_svc_properties):
        """Sets the datasource_svc_properties of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.


        :param datasource_svc_properties: The datasource_svc_properties of this ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._datasource_svc_properties = datasource_svc_properties

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

        for attr, _ in six.iteritems(self.openapi_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

        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, ComDayCommonsDatasourceJdbcpoolJdbcPoolServiceProperties):
            return False

        return self.__dict__ == other.__dict__

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