From 9dd76a739de23be334d35851a32b6257ab61e2af Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Thu, 24 Sep 2020 12:37:03 +0300 Subject: [PATCH] If RDA Export fail show properly an error message --- .../src/main/java/eu/eudat/controllers/DMPs.java | 6 +++++- .../ui/dmp/overview/dmp-overview.component.ts | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java index f8d8c2445..6bfbf7c08 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java @@ -173,8 +173,12 @@ public class DMPs extends BaseController { @RequestMapping(method = RequestMethod.GET, value = {"rda/{id}"}) public @ResponseBody - ResponseEntity getRDAJsonDocument(@PathVariable String id, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) throws IOException { + ResponseEntity getRDAJsonDocument(@PathVariable String id, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) { + try { return this.dataManagementPlanManager.getRDAJsonDocument(id, datasetManager, principal); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(new ResponseItem<>().message(e.getMessage()).status(ApiMessageCode.ERROR_MESSAGE)); + } } @RequestMapping(method = RequestMethod.GET, value = {"/getPDF/{id}"}) diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts index d480a4e44..8405fcd98 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts @@ -352,11 +352,19 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { downloadJson(id: string) { this.dmpService.downloadJson(id) .pipe(takeUntil(this._destroyed)) - .subscribe(response => { - const blob = new Blob([response.body], { type: 'application/json' }); - const filename = this.getFilenameFromContentDispositionHeader(response.headers.get('Content-Disposition')); + .subscribe(complete => { + const blob = new Blob([complete.body], { type: 'application/json' }); + const filename = this.getFilenameFromContentDispositionHeader(complete.headers.get('Content-Disposition')); FileSaver.saveAs(blob, filename); - }) + }, async error => { + this.onExportCallbackError(error); + }); + } + + async onExportCallbackError(error: any) { + const errorJsonText = await error.error.text(); + const errorObj = JSON.parse(errorJsonText); + this.uiNotificationService.snackBarNotification(errorObj.message, SnackBarNotificationLevel.Error); } getFilenameFromContentDispositionHeader(header: string): string {