<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _check_data_port_validity(self, check_data_port):
 """Checks the validity of a data port Checks whether the data flows connected to the port do not conflict with the data types. :param rafcon.core.data_port.DataPort check_data_port: The data port to be checked :return bool validity, str message: validity is True, when the data port is valid, False else. message gives more information especially if the data port is not valid """

        valid, message = self._check_data_port_id(check_data_port)
        if not valid:
            return False, message

        valid, message = self._check_data_port_name(check_data_port)
        if not valid:
            return False, message

        # Check whether the type matches any connected data port type
        # Only relevant, if there is a parent state, otherwise the port cannot be connected to data flows
        # TODO: check of internal connections
        if not self.is_root_state:
            # Call the check in the parent state, where the data flows are stored
            return self.parent.check_data_port_connection(check_data_port)
        else:
            from rafcon.core.states.container_state import ContainerState
            if isinstance(self, ContainerState):
                return self.check_data_port_connection(check_data_port)

        return True, "valid"