Ejemplo n.º 1
0
    def mount(self, namespace: str, adapter: 'StorageAdapterBase') -> None:
        """registers a namespace and assigns creates a storage adapter for that namespace"""
        with logger._enter_scope(self._TAG, self._ctx, self.mount.__name__):
            if not namespace:
                logger.error(self._ctx, self._TAG,
                             StorageManager.mount.__name__, None,
                             CdmLogCode.ERR_STORAGE_NULL_NAMESPACE)
                return None

            from cdm.objectmodel import CdmFolderDefinition

            if adapter:
                if isinstance(adapter, StorageAdapterBase):
                    adapter.ctx = self._ctx
                self.namespace_adapters[namespace] = adapter
                fd = CdmFolderDefinition(self._ctx, '')
                fd._corpus = self._corpus
                fd.namespace = namespace
                fd.folder_path = '/'
                self._namespace_folders[namespace] = fd
                if namespace in self._system_defined_namespaces:
                    self._system_defined_namespaces.remove(namespace)
            else:
                logger.error(self._ctx, self._TAG,
                             StorageManager.mount.__name__, None,
                             CdmLogCode.ERR_STORAGE_NULL_ADAPTER)
    def test_document_collection_add_range(self):
        manifest = generate_manifest('C:\\Root\\Path')
        folder = CdmFolderDefinition(manifest.ctx, 'Folder')
        folder._corpus = manifest.ctx.corpus
        folder._folder_path = 'FolderPath/'
        folder._namespace = 'Namespace'

        self.assertEqual(0, len(folder.documents))

        document = CdmDocumentDefinition(manifest.ctx, 'DocumentName')
        document2 = CdmDocumentDefinition(manifest.ctx, 'DocumentName2')

        documentList = [document, document2]
        folder.documents.extend(documentList)
        self.assertEqual(2, len(folder.documents))
        self.assertEqual(document, folder.documents[0])
        self.assertEqual(document2, folder.documents[1])

        self.assertEqual('DocumentName', document.name)
        self.assertEqual('FolderPath/', document._folder_path)
        self.assertEqual(folder, document.owner)
        self.assertEqual('Namespace', document._namespace)
        self.assertTrue(document._needs_indexing)

        self.assertEqual('DocumentName2', document2.name)
        self.assertEqual('FolderPath/', document2._folder_path)
        self.assertEqual(folder, document2.owner)
        self.assertEqual('Namespace', document2._namespace)
        self.assertTrue(document2._needs_indexing)
Ejemplo n.º 3
0
    def mount(self, namespace: str, adapter: 'StorageAdapterBase') -> None:
        """registers a namespace and assigns creates a storage adapter for that namespace"""
        from cdm.objectmodel import CdmFolderDefinition

        if adapter:
            self._namespace_adapters[namespace] = adapter
            fd = CdmFolderDefinition(self.ctx, '')
            fd.corpus = self.corpus
            fd.namespace = namespace
            self._namespace_folders[namespace] = fd
    def test_document_collection_remove_at(self):
        manifest = generate_manifest('C:\\Root\\Path')
        folder = CdmFolderDefinition(manifest.ctx, 'Folder')
        folder._corpus = manifest.ctx.corpus
        folder.folder_path = 'FolderPath/'
        folder.namespace = 'Namespace'

        self.assertEqual(0, len(folder.documents))

        document = folder.documents.append('DocumentName')
        document2 = folder.documents.append('DocumentName2')
        document3 = folder.documents.append('DocumentName3')

        self.assertEqual(
            3,
            len(manifest.ctx.corpus._document_library._list_all_documents()))
        self.assertTrue(
            manifest.ctx.corpus._document_library._contains(
                (folder, document)))
        self.assertTrue(
            manifest.ctx.corpus._document_library._contains(
                (folder, document2)))
        self.assertTrue(
            manifest.ctx.corpus._document_library._contains(
                (folder, document3)))

        self.assertEqual(3, len(folder._document_lookup))
        self.assertTrue((document.name) in folder._document_lookup)
        self.assertTrue((document.name) in folder._document_lookup)
        self.assertTrue((document.name) in folder._document_lookup)

        folder.documents.pop(1)
        folder.documents.remove('DocumentName')
        folder.documents.remove(document3)

        self.assertEqual(
            0,
            len(manifest.ctx.corpus._document_library._list_all_documents()))
        self.assertFalse(
            manifest.ctx.corpus._document_library._contains(
                (folder, document)))
        self.assertFalse(
            manifest.ctx.corpus._document_library._contains(
                (folder, document2)))
        self.assertFalse(
            manifest.ctx.corpus._document_library._contains(
                (folder, document3)))

        self.assertEqual(0, len(folder._document_lookup))
        self.assertFalse((document.name) in folder._document_lookup)
        self.assertFalse((document.name) in folder._document_lookup)
        self.assertFalse((document.name) in folder._document_lookup)
Ejemplo n.º 5
0
    def mount(self, namespace: str, adapter: 'StorageAdapterBase') -> None:
        """registers a namespace and assigns creates a storage adapter for that namespace"""
        from cdm.objectmodel import CdmFolderDefinition

        if adapter:
            self._namespace_adapters[namespace] = adapter
            fd = CdmFolderDefinition(self._ctx, '')
            fd._corpus = self._corpus
            fd.namespace = namespace
            fd.folder_path = '/'
            self._namespace_folders[namespace] = fd
            if namespace in self._system_defined_namespaces:
                self._system_defined_namespaces.remove(namespace)
Ejemplo n.º 6
0
    def test_cdm_trait_collection_insert(self):
        manifest = generate_manifest()
        parent_folder = CdmFolderDefinition(manifest.ctx, 'ParentFolder')
        parent_folder.in_document = manifest
        parent_folder._namespace = 'TheNamespace'
        parent_folder._folder_path = 'ParentFolderPath/'

        child_folders = parent_folder.child_folders
        child_folder = CdmFolderDefinition(manifest.ctx, 'ChildFolder1')

        child1 = child_folders.append('child1')
        child2 = child_folders.append('child2')
        child_folder._is_dirty = False

        child_folders.insert(1, child_folder)

        self.assertEqual(3, len(child_folders))
        self.assertTrue(manifest._is_dirty)
        self.assertEqual(child1, child_folders[0])
        self.assertEqual(child_folder, child_folders[1])
        self.assertEqual(child2, child_folders[2])
        self.assertEqual(manifest.ctx, child_folder.ctx)
        self.assertEqual('ChildFolder1', child_folder.name)
        self.assertEqual(parent_folder, child_folder.owner)
        self.assertEqual('TheNamespace', child_folder._namespace)
        self.assertEqual(parent_folder._folder_path + child_folder.name + '/',
                         child_folder._folder_path)
Ejemplo n.º 7
0
    def test_cdm_trait_collection_insert(self):
        manifest = generate_manifest("C:\\Root\\Path")
        parent_folder = CdmFolderDefinition(manifest.ctx, "ParentFolder")
        parent_folder.in_document = manifest
        parent_folder.namespace = "TheNamespace"
        parent_folder.folder_path = "ParentFolderPath/"

        child_folders = parent_folder.child_folders
        child_folder = CdmFolderDefinition(manifest.ctx, "ChildFolder1")

        child1 = child_folders.append("child1")
        child2 = child_folders.append("child2")
        child_folder._is_dirty = False

        child_folders.insert(1, child_folder)

        self.assertEqual(3, len(child_folders))
        self.assertTrue(manifest._is_dirty)
        self.assertEqual(child1, child_folders[0])
        self.assertEqual(child_folder, child_folders[1])
        self.assertEqual(child2, child_folders[2])
        self.assertEqual(manifest.ctx, child_folder.ctx)
        self.assertEqual("ChildFolder1", child_folder.name)
        self.assertEqual(parent_folder, child_folder.owner)
        self.assertEqual("TheNamespace", child_folder.namespace)
        self.assertEqual(parent_folder.folder_path + child_folder.name + "/",
                         child_folder.folder_path)
Ejemplo n.º 8
0
    def test_folder_collection_remove(self):
        manifest = generate_manifest("C:\\Root\\Path")
        parent_folder = CdmFolderDefinition(manifest.ctx, "ParentFolder")
        parent_folder.namespace = "TheNamespace"
        parent_folder.folder_path = "ParentFolderPath/"

        child_folders = parent_folder.child_folders
        child_folder = CdmFolderDefinition(manifest.ctx, "ChildFolder1")

        self.assertEqual(0, len(child_folders))
        child_folders.append(child_folder)
        self.assertEqual(1, len(child_folders))
        child_folders.remove(child_folder)
        self.assertEqual(0, len(child_folders))
Ejemplo n.º 9
0
    def test_folder_collection_remove(self):
        manifest = generate_manifest()
        parent_folder = CdmFolderDefinition(manifest.ctx, 'ParentFolder')
        parent_folder._namespace = 'TheNamespace'
        parent_folder._folder_path = 'ParentFolderPath/'

        child_folders = parent_folder.child_folders
        child_folder = CdmFolderDefinition(manifest.ctx, 'ChildFolder1')

        self.assertEqual(0, len(child_folders))
        child_folders.append(child_folder)
        self.assertEqual(1, len(child_folders))
        child_folders.remove(child_folder)
        self.assertEqual(0, len(child_folders))
    def test_cdm_definition_collection_add(self):
        document = generate_manifest('C:\\Nothing')
        document._is_dirty = False

        attribute = CdmAttributeContext(document.ctx, 'the attribute')
        folder = CdmFolderDefinition(document.ctx, 'The folder')
        trait = CdmTraitDefinition(document.ctx, 'The trait')

        added_attribute = document.definitions.append(attribute)
        added_folder = document.definitions.append(folder)
        added_trait = document.definitions.append(trait)

        self.assertTrue(document._is_dirty)
        self.assertEqual(3, len(document.definitions))
        self.assertEqual(attribute, added_attribute)
        self.assertEqual(folder, added_folder)
        self.assertEqual(trait, added_trait)
        self.assertEqual(attribute, document.definitions[0])
        self.assertEqual(folder, document.definitions[1])
        self.assertEqual(trait, document.definitions[2])
        self.assertEqual(document, attribute.in_document)
        self.assertEqual(document, trait.in_document)
        self.assertEqual(document, attribute.owner)
        self.assertEqual(document, folder.owner)
        self.assertEqual(document, trait.owner)
    def test_document_collection_add(self):
        manifest = generate_manifest('C:\\Nothing')
        folder = CdmFolderDefinition(manifest.ctx, 'Folder')
        folder._corpus = manifest.ctx.corpus
        folder.folder_path = 'FolderPath/'
        folder.namespace = 'Namespace'
        document = CdmDocumentDefinition(manifest.ctx, 'DocumentName')

        self.assertEqual(0, len(folder.documents))
        added_document = folder.documents.append(document)
        self.assertEqual(1, len(folder.documents))
        self.assertEqual(document, folder.documents[0])
        self.assertEqual(document, added_document)
        self.assertEqual('FolderPath/', document.folder_path)
        self.assertEqual(folder, document.owner)
        self.assertEqual('Namespace', document.namespace)
        self.assertTrue(document._needs_indexing)
Ejemplo n.º 12
0
    def test_folder_collection_add_with_name_parameter(self):
        manifest = generate_manifest('C:\\Root\\Path')
        parent_folder = CdmFolderDefinition(manifest. ctx, 'ParentFolder')
        parent_folder._namespace = 'TheNamespace'
        parent_folder._folder_path = 'ParentFolderPath/'

        child_folders = parent_folder.child_folders

        self.assertEqual(0, len(child_folders))
        child_folder = child_folders.append('ChildFolder1')
        self.assertEqual(1, len(child_folders))
        self.assertEqual(child_folder, child_folders[0])
        self.assertEqual(manifest.ctx, child_folder.ctx)
        self.assertEqual('ChildFolder1', child_folder.name)
        self.assertEqual(parent_folder, child_folder.owner)
        self.assertEqual('TheNamespace', child_folder._namespace)
        self.assertEqual(parent_folder._folder_path + child_folder.name + '/', child_folder._folder_path)
Ejemplo n.º 13
0
    def test_document_collection_add_with_document_name(self):
        manifest = generate_manifest('C:\\Root\\Path')
        folder = CdmFolderDefinition(manifest.ctx, 'Folder')
        folder._corpus = manifest.ctx.corpus
        folder._folder_path = 'FolderPath/'
        folder._namespace = 'Namespace'

        self.assertEqual(0, len(folder.documents))
        document = folder.documents.append('DocumentName')
        self.assertEqual(1, len(folder.documents))

        self.assertEqual('DocumentName', document.name)
        self.assertEqual(document, folder.documents[0])
        self.assertEqual('FolderPath/', document._folder_path)
        self.assertEqual(folder, document.owner)
        self.assertEqual('Namespace', document._namespace)
        self.assertTrue(document._needs_indexing)
Ejemplo n.º 14
0
    def test_folder_collection_add_with_name_parameter(self):
        manifest = generate_manifest("C:\\Root\\Path")
        parent_folder = CdmFolderDefinition(manifest.ctx, "ParentFolder")
        parent_folder.namespace = "TheNamespace"
        parent_folder.folder_path = "ParentFolderPath/"

        child_folders = parent_folder.child_folders

        self.assertEqual(0, len(child_folders))
        child_folder = child_folders.append("ChildFolder1")
        self.assertEqual(1, len(child_folders))
        self.assertEqual(child_folder, child_folders[0])
        self.assertEqual(manifest.ctx, child_folder.ctx)
        self.assertEqual("ChildFolder1", child_folder.name)
        self.assertEqual(parent_folder, child_folder.owner)
        self.assertEqual("TheNamespace", child_folder.namespace)
        self.assertEqual(parent_folder.folder_path + child_folder.name + "/",
                         child_folder.folder_path)
Ejemplo n.º 15
0
    def test_document_collection_clear(self):
        manifest = generate_manifest('C:\\Root\\Path')
        folder = CdmFolderDefinition(manifest.ctx, 'Folder')
        folder._corpus = manifest.ctx.corpus
        folder._folder_path = 'FolderPath/'
        folder._namespace = 'Namespace'

        self.assertEqual(0, len(folder.documents))

        folder.documents.append('DocumentName')
        folder.documents.append('DocumentName2')
        folder.documents.append('DocumentName3')

        folder.documents.clear()

        self.assertEqual(0, len(folder._document_lookup))
        self.assertEqual(0, len(manifest.ctx.corpus._document_library._list_all_documents()))
        self.assertEqual(0, len(folder.documents))
Ejemplo n.º 16
0
    def mount(self, namespace: str, adapter: 'StorageAdapterBase') -> None:
        """registers a namespace and assigns creates a storage adapter for that namespace"""
        if not namespace:
            logger.error(self._TAG, self._ctx, 'The namespace cannot be null or empty.', StorageManager.mount.__name__)
            return None

        from cdm.objectmodel import CdmFolderDefinition

        if adapter:
            self._namespace_adapters[namespace] = adapter
            fd = CdmFolderDefinition(self._ctx, '')
            fd._corpus = self._corpus
            fd.namespace = namespace
            fd.folder_path = '/'
            self._namespace_folders[namespace] = fd
            if namespace in self._system_defined_namespaces:
                self._system_defined_namespaces.remove(namespace)
        else:
            logger.error(self._TAG, self._ctx, 'The adapter cannot be null.', StorageManager.mount.__name__)
Ejemplo n.º 17
0
    def test_document_collection_insert(self):
        manifest = generate_manifest('C:\\Root\\Path')
        folder = CdmFolderDefinition(manifest.ctx, 'Folder')
        folder.in_document = manifest
        folder._corpus = manifest.ctx.corpus
        folder._folder_path = 'FolderPath/'
        folder._namespace = 'Namespace'
        document = CdmDocumentDefinition(manifest.ctx, 'DocumentName')

        doc1 = folder.documents.append('doc1')
        doc2 = folder.documents.append('doc2')

        manifest._is_dirty = False

        folder.documents.insert(2, document)
        self.assertTrue(manifest._is_dirty)
        self.assertEqual(3, len(folder.documents))
        self.assertEqual(doc1, folder.documents[0])
        self.assertEqual(doc2, folder.documents[1])
        self.assertEqual(document, folder.documents[2])

        self.assertEqual('FolderPath/', document._folder_path)
        self.assertEqual(folder, document.owner)
        self.assertEqual('Namespace', document._namespace)
        self.assertTrue(document._needs_indexing)
        self.assertEqual(folder, document.owner)
        self.assertTrue(document.name in folder._document_lookup)
        self.assertTrue(manifest.ctx.corpus._document_library._contains((folder, document)))

        folder.documents.insert(2, document)
        self.assertEqual(3, len(folder.documents))
Ejemplo n.º 18
0
    def test_folder_collection_add_range(self):
        manifest = generate_manifest()
        parent_folder = CdmFolderDefinition(manifest.ctx, 'ParentFolder')
        parent_folder._namespace = 'TheNamespace'
        parent_folder._folder_path = 'ParentFolderPath/'

        child_folders = parent_folder.child_folders
        child_folder = CdmFolderDefinition(manifest.ctx, 'ChildFolder1')
        child_folder2 = CdmFolderDefinition(manifest.ctx, 'ChildFolder2')

        child_list = [child_folder, child_folder2]

        self.assertEqual(0, len(child_folders))
        child_folders.extend(child_list)
        self.assertEqual(2, len(child_folders))
        self.assertEqual(child_folder, child_folders[0])
        self.assertEqual(manifest.ctx, child_folder.ctx)
        self.assertEqual('ChildFolder1', child_folder.name)
        self.assertEqual(parent_folder, child_folder.owner)
        self.assertEqual('TheNamespace', child_folder._namespace)
        self.assertEqual(parent_folder._folder_path + child_folder.name + '/',
                         child_folder._folder_path)

        self.assertEqual(child_folder2, child_folders[1])
        self.assertEqual('ChildFolder2', child_folder2.name)
        self.assertEqual(parent_folder, child_folder2.owner)
        self.assertEqual('TheNamespace', child_folder2._namespace)
        self.assertEqual(parent_folder._folder_path + child_folder2.name + '/',
                         child_folder2._folder_path)
Ejemplo n.º 19
0
    def test_folder_collection_add_range(self):
        manifest = generate_manifest("C:\\Root\\Path")
        parent_folder = CdmFolderDefinition(manifest.ctx, "ParentFolder")
        parent_folder.namespace = "TheNamespace"
        parent_folder.folder_path = "ParentFolderPath/"

        child_folders = parent_folder.child_folders
        child_folder = CdmFolderDefinition(manifest.ctx, "ChildFolder1")
        child_folder2 = CdmFolderDefinition(manifest.ctx, "ChildFolder2")

        child_list = [child_folder, child_folder2]

        self.assertEqual(0, len(child_folders))
        child_folders.extend(child_list)
        self.assertEqual(2, len(child_folders))
        self.assertEqual(child_folder, child_folders[0])
        self.assertEqual(manifest.ctx, child_folder.ctx)
        self.assertEqual("ChildFolder1", child_folder.name)
        self.assertEqual(parent_folder, child_folder.owner)
        self.assertEqual("TheNamespace", child_folder.namespace)
        self.assertEqual(parent_folder.folder_path + child_folder.name + "/",
                         child_folder.folder_path)

        self.assertEqual(child_folder2, child_folders[1])
        self.assertEqual("ChildFolder2", child_folder2.name)
        self.assertEqual(parent_folder, child_folder2.owner)
        self.assertEqual("TheNamespace", child_folder2.namespace)
        self.assertEqual(parent_folder.folder_path + child_folder2.name + "/",
                         child_folder2.folder_path)
Ejemplo n.º 20
0
    def test_document_collection_remove(self):
        manifest = generate_manifest('C:\\Root\\Path')
        folder = CdmFolderDefinition(manifest.ctx, 'Folder')
        folder._corpus = manifest.ctx.corpus
        folder._folder_path = 'FolderPath/'
        folder._namespace = 'Namespace'

        self.assertEqual(0, len(folder.documents))

        document = CdmDocumentDefinition(manifest.ctx, 'DocumentName')
        document2 = CdmDocumentDefinition(manifest.ctx, 'DocumentName2')

        documentList = [document, document2]
        folder.documents.extend(documentList)
        self.assertEqual(2, len(folder.documents))
        self.assertEqual(document, folder.documents[0])
        self.assertEqual(document2, folder.documents[1])
        self.assertEqual(folder, document.owner)

        folder.documents.remove(document)
        self.assertFalse(document in folder.documents)
        self.assertEqual(1, len(folder.documents))
        self.assertEqual(document2, folder.documents[0])
        self.assertEqual(None, document.owner)

        folder.documents.remove(document)
        self.assertEqual(1, len(folder.documents))
        self.assertEqual(document2, folder.documents[0])

        folder.documents.append(document)
        self.assertEqual(2, len(folder.documents))
        self.assertEqual(folder, document.owner)
        folder.documents.remove(document.name)
        self.assertEqual(1, len(folder.documents))
        self.assertEqual(document2, folder.documents[0])
        self.assertEqual(None, document.owner)
Ejemplo n.º 21
0
    def test_cdm_definition_collection_add_range(self):
        document = generate_manifest()
        document._is_dirty = False

        attribute = CdmAttributeContext(document.ctx, 'the attribute')
        folder = CdmFolderDefinition(document.ctx, 'The folder')
        trait = CdmTraitDefinition(document.ctx, 'The trait')

        definitionsList = [attribute, folder, trait]
        document.definitions.extend(definitionsList)

        self.assertTrue(document._is_dirty)
        self.assertEqual(3, len(document.definitions))
        self.assertEqual(attribute, document.definitions[0])
        self.assertEqual(folder, document.definitions[1])
        self.assertEqual(trait, document.definitions[2])
        self.assertEqual(document, attribute.in_document)
        self.assertEqual(document, trait.in_document)
        self.assertEqual(document, attribute.owner)
        self.assertEqual(document, folder.owner)
        self.assertEqual(document, trait.owner)
Ejemplo n.º 22
0
    def test_fetch_child_folder_from_path(self):
        """Tests the behavior of the fetch_child_folder_from_path function."""

        corpus = CdmCorpusDefinition()
        root_folder = CdmFolderDefinition(corpus.ctx, '')

        folder_path = '/'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, False)
        self.assertEqual(folder_path, child_folder._folder_path)

        folder_path = '/'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, True)
        self.assertEqual(folder_path, child_folder._folder_path)

        folder_path = '/core'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, False)
        self.assertEqual('/', child_folder._folder_path)

        folder_path = '/core'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, True)
        self.assertEqual(folder_path + '/', child_folder._folder_path)

        folder_path = '/core/'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, False)
        self.assertEqual(folder_path, child_folder._folder_path)

        folder_path = '/core/'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, True)
        self.assertEqual(folder_path, child_folder._folder_path)

        folder_path = '/core/applicationCommon'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, False)
        self.assertEqual('/core/', child_folder._folder_path)

        folder_path = '/core/applicationCommon'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, True)
        self.assertEqual(folder_path + '/', child_folder._folder_path)

        folder_path = '/core/applicationCommon/'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, False)
        self.assertEqual(folder_path, child_folder._folder_path)

        folder_path = '/core/applicationCommon/'
        child_folder = root_folder._fetch_child_folder_from_path(folder_path, True)
        self.assertEqual(folder_path, child_folder._folder_path)