# Path: tmapi/constants.py
# AUTOMERGE_FEATURE_STRING = TMAPI_FEATURE_STRING_BASE + 'automerge'
# 
# MERGE_BY_TOPIC_NAME_FEATURE_STRING = TMAPI_FEATURE_STRING_BASE + \
#     'merge/byTopicName'
# 
# READ_ONLY_FEATURE_STRING = TMAPI_FEATURE_STRING_BASE + 'readOnly'
# 
# TYPE_INSTANCE_ASSOCIATIONS_FEATURE_STRING = TMAPI_FEATURE_STRING_BASE + \
#     'type-instance-associations'
# 
# Path: tmapi/exceptions.py
# class FeatureNotRecognizedException (FactoryConfigurationException):
# 
#     """Exception raised when the TopicMapSystemFactory does not
#     recognize the name of a feature that the application is trying to
#     enable or disable."""
# 
#     pass
# 
# class FeatureNotSupportedException (FactoryConfigurationException):
# 
#     """Exception raised when the underlying implementation cannot
#     support enabling or disabling a recognised feature. If the feature
#     name is not recognised, implementations must throw a
#     FeatureNotRecognizedException rather than a
#     FeatureNotSupportedException."""
# 
#     pass


from tmapi.constants import AUTOMERGE_FEATURE_STRING, \
    MERGE_BY_TOPIC_NAME_FEATURE_STRING, READ_ONLY_FEATURE_STRING, \
    TYPE_INSTANCE_ASSOCIATIONS_FEATURE_STRING
from tmapi.exceptions import FeatureNotRecognizedException, \
    FeatureNotSupportedException
from tmapi_feature import TMAPIFeature
from topic_map_system import TopicMapSystem
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.





class TopicMapSystemFactory (object):

    """This factory class provides access to a topic map system.

    A new `TopicMapSystem` instance is created by invoking the
    `new_topic_map_system()` method. Configuration properties for the
    new `TopicMapSystem` instance can be set by calling the
    `set_feature(string, boolean)` and/or `set_property(string,
    object)` methods prior to invoking `new_topic_map_system()`.

    """

    # Dictionary of recognised feature strings, specifying their state
    # (enabled/disabled) and whether they are supported.
    _features = {

# Path: tmapi/constants.py
# AUTOMERGE_FEATURE_STRING = TMAPI_FEATURE_STRING_BASE + 'automerge'
# 
# MERGE_BY_TOPIC_NAME_FEATURE_STRING = TMAPI_FEATURE_STRING_BASE + \
#     'merge/byTopicName'
# 
# READ_ONLY_FEATURE_STRING = TMAPI_FEATURE_STRING_BASE + 'readOnly'
# 
# TYPE_INSTANCE_ASSOCIATIONS_FEATURE_STRING = TMAPI_FEATURE_STRING_BASE + \
#     'type-instance-associations'
# 
# Path: tmapi/exceptions.py
# class FeatureNotRecognizedException (FactoryConfigurationException):
# 
#     """Exception raised when the TopicMapSystemFactory does not
#     recognize the name of a feature that the application is trying to
#     enable or disable."""
# 
#     pass
# 
# class FeatureNotSupportedException (FactoryConfigurationException):
# 
#     """Exception raised when the underlying implementation cannot
#     support enabling or disabling a recognised feature. If the feature
#     name is not recognised, implementations must throw a
#     FeatureNotRecognizedException rather than a
#     FeatureNotSupportedException."""
# 
#     pass


# Path: tmapi/models/topic_map_system_factory.py
from tmapi.constants import AUTOMERGE_FEATURE_STRING, \
    MERGE_BY_TOPIC_NAME_FEATURE_STRING, READ_ONLY_FEATURE_STRING, \
    TYPE_INSTANCE_ASSOCIATIONS_FEATURE_STRING
from tmapi.exceptions import FeatureNotRecognizedException, \
    FeatureNotSupportedException
from tmapi_feature import TMAPIFeature
from topic_map_system import TopicMapSystem

# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.





class TopicMapSystemFactory (object):

    """This factory class provides access to a topic map system.

    A new `TopicMapSystem` instance is created by invoking the
    `new_topic_map_system()` method. Configuration properties for the
    new `TopicMapSystem` instance can be set by calling the
    `set_feature(string, boolean)` and/or `set_property(string,
    object)` methods prior to invoking `new_topic_map_system()`.

    """

    # Dictionary of recognised feature strings, specifying their state
    # (enabled/disabled) and whether they are supported.
    _features = {

        AUTOMERGE_FEATURE_STRING: [True, True],