# coding: utf-8

"""
    rainbond cloud app market OpenAPI.

    the purpose of this application is to provide an application that is using plain go code to define an API  This should demonstrate all the possible comment annotations that are available to turn go code into a fully compliant swagger 2.0 spec  # noqa: E501

    OpenAPI spec version: 0.0.1
    Contact: 576501057@qq.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from swagger_client.models.store_app_version_templete_plugin_config_group_option import StoreAppVersionTempletePluginConfigGroupOption  # noqa: F401,E501


class StoreAppVersionTempletePluginConfigGroup(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 = {
        'id': 'int',
        'build_version': 'str',
        'config_name': 'str',
        'injection': 'str',
        'options': 'list[StoreAppVersionTempletePluginConfigGroupOption]',
        'plugin_id': 'str',
        'service_meta_type': 'str'
    }

    attribute_map = {
        'id': 'ID',
        'build_version': 'build_version',
        'config_name': 'config_name',
        'injection': 'injection',
        'options': 'options',
        'plugin_id': 'plugin_id',
        'service_meta_type': 'service_meta_type'
    }

    def __init__(self, id=None, build_version=None, config_name=None, injection=None, options=None, plugin_id=None, service_meta_type=None):  # noqa: E501
        """StoreAppVersionTempletePluginConfigGroup - a model defined in Swagger"""  # noqa: E501

        self._id = None
        self._build_version = None
        self._config_name = None
        self._injection = None
        self._options = None
        self._plugin_id = None
        self._service_meta_type = None
        self.discriminator = None

        if id is not None:
            self.id = id
        if build_version is not None:
            self.build_version = build_version
        if config_name is not None:
            self.config_name = config_name
        if injection is not None:
            self.injection = injection
        if options is not None:
            self.options = options
        if plugin_id is not None:
            self.plugin_id = plugin_id
        if service_meta_type is not None:
            self.service_meta_type = service_meta_type

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


        :return: The id of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this StoreAppVersionTempletePluginConfigGroup.


        :param id: The id of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :type: int
        """

        self._id = id

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


        :return: The build_version of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :rtype: str
        """
        return self._build_version

    @build_version.setter
    def build_version(self, build_version):
        """Sets the build_version of this StoreAppVersionTempletePluginConfigGroup.


        :param build_version: The build_version of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :type: str
        """

        self._build_version = build_version

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


        :return: The config_name of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :rtype: str
        """
        return self._config_name

    @config_name.setter
    def config_name(self, config_name):
        """Sets the config_name of this StoreAppVersionTempletePluginConfigGroup.


        :param config_name: The config_name of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :type: str
        """

        self._config_name = config_name

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


        :return: The injection of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :rtype: str
        """
        return self._injection

    @injection.setter
    def injection(self, injection):
        """Sets the injection of this StoreAppVersionTempletePluginConfigGroup.


        :param injection: The injection of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :type: str
        """

        self._injection = injection

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


        :return: The options of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :rtype: list[StoreAppVersionTempletePluginConfigGroupOption]
        """
        return self._options

    @options.setter
    def options(self, options):
        """Sets the options of this StoreAppVersionTempletePluginConfigGroup.


        :param options: The options of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :type: list[StoreAppVersionTempletePluginConfigGroupOption]
        """

        self._options = options

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


        :return: The plugin_id of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :rtype: str
        """
        return self._plugin_id

    @plugin_id.setter
    def plugin_id(self, plugin_id):
        """Sets the plugin_id of this StoreAppVersionTempletePluginConfigGroup.


        :param plugin_id: The plugin_id of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :type: str
        """

        self._plugin_id = plugin_id

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


        :return: The service_meta_type of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :rtype: str
        """
        return self._service_meta_type

    @service_meta_type.setter
    def service_meta_type(self, service_meta_type):
        """Sets the service_meta_type of this StoreAppVersionTempletePluginConfigGroup.


        :param service_meta_type: The service_meta_type of this StoreAppVersionTempletePluginConfigGroup.  # noqa: E501
        :type: str
        """

        self._service_meta_type = service_meta_type

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

        return self.__dict__ == other.__dict__

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