フォルダ全体をコピーしようとしています。
そうするために、私は新しいフォルダを作成し、その中にすべてを再び入れています:フォルダとドキュメント。
しかし、ドキュメントを作成しようとすると、AlfrescoServiceExceptionが発生します。
新しく作成されたオブジェクトはドキュメントではありません!
私のコードは以下の通りです:
List<Document> documentsChildren = documentFolderService.getDocuments(folderToCopy);
for (Document document:documentsChildren){
ContentFile contentFileToCopy = documentFolderService.getContent(document);
String nameFileToCopy = document.getName();
// problem there
documentFolderService.createDocument(folderCopied, nameFileToCopy, properties, contentFileToCopy);
}
奇妙なことに、私はまだ同じ方法でリポジトリ内に単純なドキュメントのコピーを実装しており、それはうまく機能しています。
Document documentToCopy = (Document) documentFolderService.getNodeByIdentifier(fileToCopy.getIdentifier());
ContentFile contentFileToCopy = documentFolderService.getContent(documentToCopy);
String nameFileToCopy = fileToCopy.getName();
documentFolderService.createDocument(folderParent, nameFileToCopy, properties, contentFileToCopy);
変更されるのは、ドキュメントを取得する方法だけです。フォルダの子ドキュメントを取得するか、彼の識別子を使用してドキュメントを取得します。
質問の更新:
エラーの正確なメッセージは次のとおりです。
Caused by: org.alfresco.mobile.android.api.exceptions.AlfrescoServiceException: Newly created object is not a document! New id: workspace://SpacesStore/85753128-1ac9-4b5e-b909-91dcb7d5ff5d
at org.alfresco.mobile.android.api.services.impl.AbstractDocumentFolderServiceImpl.createDocument(AbstractDocumentFolderServiceImpl.java:482)
プロパティは空のマップです:
マッププロパティ=newHashMap();
私は.pptドキュメントをテストします。質問をすると、.docxと.jpgもテストします。
例外が発生したときのノードのタイプはフォルダーです
提案したクイックフィックスが機能していません。たぶん私はどこかで愚かなエラーをしているのですが、それを見つけることができません。
完全なコード:
List<Folder> foldersChildren = null;
List<Document> documentsChildren = null;
try {
ServiceRegistry serviceRegistry = Login.session.getServiceRegistry();
DocumentFolderService documentFolderService = serviceRegistry.getDocumentFolderService();
Folder folderParent = (Folder) documentFolderService.getNodeByIdentifier(repositoryParent.getIdentifier());
// create the folder
Map<String,Serializable> properties = new HashMap<String,Serializable>();
Folder folderToCopy = (Folder) documentFolderService.getNodeByIdentifier(repositoryToCopy.getIdentifier());
String nameRepositoryToCopy = repositoryToCopy.getName();
Folder folderCopied = documentFolderService.createFolder(folderParent, nameRepositoryToCopy, properties);
foldersChildren = documentFolderService.getFolders(folderToCopy);
documentsChildren = documentFolderService.getDocuments(folderToCopy);
// create the files inside the folder
ContentFile contentFileToCopy = null;
String nameFileToCopy = null;
for (Document document : documentsChildren){
contentFileToCopy = documentFolderService.getContent(document);
nameFileToCopy = document.getName();
// this operation doesn't work
documentFolderService.createDocument(folderCopied, nameFileToCopy, properties, contentFileToCopy);
}
} catch (Exception e){
this.cancel(true);
UIAlertDialog.runOnUIThreadOperationFailed(activity, context);
}