Skip to content

Commit b065196

Browse files
Merge pull request #13791 from SORMAS-Foundation/bugfix-13433-empty-file-downloading-issue
fixed the empty PDF file downloading issue
2 parents 2f63dae + 9b62791 commit b065196

2 files changed

Lines changed: 30 additions & 3 deletions

File tree

sormas-ui/src/main/java/de/symeda/sormas/ui/externalmessage/ExternalMessageController.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import static de.symeda.sormas.ui.externalmessage.processing.ExternalMessageProcessingUIHelper.showAlreadyProcessedPopup;
1818

19+
import java.nio.charset.StandardCharsets;
1920
import java.util.Collection;
2021
import java.util.HashSet;
2122
import java.util.List;
@@ -417,6 +418,28 @@ private HorizontalLayout getExternalMessageButtonsPanel(ExternalMessageDto exter
417418
return buttonsPanel;
418419
}
419420

421+
/**
422+
* Downloads the attachment of an external message as byte array.
423+
*
424+
* @param externalMessageUuid
425+
* the UUID of the external message
426+
* @return the attachment as byte array wrapped in an Optional
427+
*/
428+
public Optional<byte[]> downloadExternalMessageAttachment(String externalMessageUuid) {
429+
430+
if (StringUtils.isBlank(externalMessageUuid)) {
431+
return Optional.empty();
432+
}
433+
434+
ExternalMessageDto externalMessageDto = FacadeProvider.getExternalMessageFacade().getByUuid(externalMessageUuid);
435+
436+
return Optional.ofNullable(externalMessageDto.getExternalMessageDetails()).map(details -> details.getBytes(StandardCharsets.UTF_8));
437+
}
438+
439+
/**
440+
* Converts the external message to PDF format.
441+
* Keeping this method for future use cases.
442+
*/
420443
public Optional<byte[]> convertToPDF(String externalMessageUuid) {
421444

422445
ExternalMessageDto externalMessageDto = FacadeProvider.getExternalMessageFacade().getByUuid(externalMessageUuid);

sormas-ui/src/main/java/de/symeda/sormas/ui/externalmessage/ExternalMessageGrid.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public class ExternalMessageGrid extends FilteredGrid<ExternalMessageIndexDto, E
7070

7171
private static final String PLACEHOLDER_SPACE = String.join("", Collections.nCopies(35, "&nbsp"));
7272
private static final String PDF_FILENAME_FORMAT = "sormas_lab_message_%s_%s.pdf";
73+
private static final String XML_FILENAME_FORMAT = "sormas_lab_message_%s_%s.xml";
7374

7475
private DataProviderListener<ExternalMessageIndexDto> dataProviderListener;
7576

@@ -230,12 +231,15 @@ private Button buildDownloadButton(ExternalMessageIndexDto labMessage) {
230231
Button downloadButton = new Button(VaadinIcons.DOWNLOAD);
231232
downloadButton.setDescription(I18nProperties.getString(Strings.headingExternalMessageDownload));
232233
final String fileName =
233-
String.format(PDF_FILENAME_FORMAT, DataHelper.getShortUuid(labMessage.getUuid()), DateHelper.formatDateForExport(new Date()));
234+
String.format(XML_FILENAME_FORMAT, DataHelper.getShortUuid(labMessage.getUuid()), DateHelper.formatDateForExport(new Date()));
234235

235236
StreamResource streamResource = new StreamResource(
236-
() -> ControllerProvider.getExternalMessageController().convertToPDF(labMessage.getUuid()).map(ByteArrayInputStream::new).orElse(null),
237+
() -> ControllerProvider.getExternalMessageController()
238+
.downloadExternalMessageAttachment(labMessage.getUuid())
239+
.map(ByteArrayInputStream::new)
240+
.orElse(null),
237241
fileName);
238-
streamResource.setMIMEType("text/pdf");
242+
streamResource.setMIMEType("application/xml");
239243

240244
FileDownloader fileDownloader = new FileDownloader(streamResource);
241245
fileDownloader.extend(downloadButton);

0 commit comments

Comments
 (0)