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