private static void download( final AttachmentHandler originalDocumentService, final Serializable[] keys, final int index) { // сохраняем столько файлов, сколько отмечено записей // прошли весь список if (index >= keys.length) return; Integer key = (Integer) keys[index]; final byte[] original = originalDocumentService.loadAttachmentBody(key); if (original == null) // нечего сохранять для данного документа download(originalDocumentService, keys, index + 1); else { String name = originalDocumentService.loadAttachmentName(key); UIUtils.storeFile( new FileStoreHandler() { public void onFailure(int reason, String description) { logger.debug("failure downloaded, reason: " + description); // $NON-NLS-1$ if (FileStoreHandler.FILE_SIZE_EXCEEDED == reason) throw new FileSizeExceededException(description); } public void onSuccess(String filePath, String fileName) { download(originalDocumentService, keys, index + 1); logger.debug("succsess downloaded: " + fileName); // $NON-NLS-1$ } public void prepareFile(OutputStream data) throws Exception { data.write(original); } }, name, CoSUtils.getMaxDownloadFileSize()); } }
/** * показ оригиналов на локальной системе, количество показанных документов будет соответсвовать * количеству переданных сущностей * * @param keys список первичных ключей сущностей оригиналов документов * @param businessServiceName имя бизнес-сервиса */ public static void show(final Serializable[] keys, final String businessServiceName) { if (keys.length == 0) return; AttachmentHandler originalDocumentService = getOriginalDocumentService(businessServiceName); for (int i = 0; i < keys.length; i++) { final byte[] original = originalDocumentService.loadAttachmentBody((Integer) keys[i]); if (original == null) // нечего сохранять для данного документа continue; String name = originalDocumentService.loadAttachmentName((Integer) keys[i]); UIUtils.showDocument(new UniversalFileWebResourceProvider(name, original)); } }