Добрый день!
я загружаю документы в хранилище WEBDAV, используя следующий код:
@Subscribe("a_Wdfl0_EDD_EditableDraftDocumentField")
public void onA_Wdfl0_EDD_EditableDraftDocumentFieldFileUploadSucceed(WebWebdavDocumentUploadField.FileUploadSucceedEvent event) {
C_D c_d = c_DDc.getItemOrNull();
File file = fileUploadingAPI.getFile(a_Wdfl0_EDD_EditableDraftDocumentField.getFileId());
Integer countFiles;
if (file != null) {
notifications.create()
.withCaption("File is uploaded to temporary storage at " + file.getAbsolutePath())
.show();
}
FileDescriptor fd = a_Wdfl0_EDD_EditableDraftDocumentField.getFileDescriptor();
try {
fileUploadingAPI.putFileIntoStorage(a_Wdfl0_EDD_EditableDraftDocumentField.getFileId(), fd);
} catch (FileStorageException e) {
throw new RuntimeException("Error saving file to FileStorage", e);
}
//определяем Родителя документа по коду элемента системного
String NameCollection = c_d.getA_Tecd0_CodeElementGoi();
List<WebdavDocument> listS = dataManager.load(WebdavDocument.class)
.query("select e from webdav$WebdavDocument e")
.list();
int i;
String NameDoc = "";
if (listS.size() != 0) {
for (i = 0; i < listS.size(); i++) {
if (listS.get(i).isCollection() == true) {
if(listS.get(i).getName().equals(NameCollection)){
WebdavDocument parentWebdavDoc = listS.get(i);
NameDoc = "D_(" + c_D_Service.calcDate(c_d) + ")_(" + c_d.getA_Tecd0_CodeElementGoi() + ")_(" + a_Wdfl0_EDD_EditableDraftDocumentField.getCaption().substring(0,3) + ")";
fd.setName(NameDoc);
// сохраняем документ в FileStorage
FileDescriptor committed = dataManager.commit(fd);
//сохраняем документ в хранилище webdav в выбранной папке\родителе
WebdavDocument webdavDoc = documentsService.createVersioningDocumentByFileDescriptor(committed, parentWebdavDoc);
a_Wdfl0_EDD_EditableDraftDocumentField.setValue(webdavDoc);
countFiles = c_d.getA_Nuni3_NumberInteger() + 1;
a_Nuni3_NumberIntegerField.setValue(countFiles);
break;
}
}
}
}
notifications.create()
.withCaption("Uploaded file: " + a_Wdfl0_EDD_EditableDraftDocumentField.getFileName())
.show();
}
При необходимости замены загруженного файла на новый мне нужно получить из хранилищ FileStorage и WebDav старый файл и переименовать его
в обоих хранилищах.
А затем уже заменить на новый.
В документации нашла, что можно изменить название документа
documentsService.updateDocumentByWebdavDocument(webdocument, filedescriptor); = = но как получить filedescriptor - не понимаю