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)
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)
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)
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)
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)
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))
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)
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)
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)
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)
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))
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__)
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))
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)
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)
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)
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)
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)