From a8fa203e2bcbfdf18bb8f3b509861331635e9857 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Wed, 2 Jul 2014 13:12:44 +0000 Subject: [PATCH] added error handling when list reports fails for VME-DB case git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/reports@98280 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/dialog/SelectVMEReportDialog.java | 17 +++++++++++++++-- .../server/servlet/ReportServiceImpl.java | 12 ++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/SelectVMEReportDialog.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/SelectVMEReportDialog.java index 3243be2..7e7a8e3 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/SelectVMEReportDialog.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/SelectVMEReportDialog.java @@ -17,6 +17,7 @@ import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.store.GroupingStore; import com.extjs.gxt.ui.client.store.Store; import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.Html; import com.extjs.gxt.ui.client.widget.Window; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.form.StoreFilterField; @@ -91,7 +92,8 @@ public class SelectVMEReportDialog extends Window { reportService.listVMEReports(new AsyncCallback>() { @Override public void onFailure(Throwable caught) { - mainPanel.unmask(); + mainPanel.unmask(); + showCommunicationError(); } @Override @@ -104,7 +106,8 @@ public class SelectVMEReportDialog extends Window { reportService.listVMEReportRefByType(type, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { - mainPanel.unmask(); + mainPanel.unmask(); + showCommunicationError(); } @Override @@ -116,6 +119,16 @@ public class SelectVMEReportDialog extends Window { } } + private void showCommunicationError() { + mainPanel.add(new Html("" + + "
We're sorry, it seems something is broken in the communication with the VMEs Repository. " + + "
" + + "
" + + "In the meantime you may report the issue.
" + + "")); + mainPanel.setLayout(new FitLayout()); + mainPanel.layout(); + } /** * * @param reports diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java index f1b751b..1011091 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java @@ -41,6 +41,7 @@ import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.SessionManager; import org.gcube.application.reporting.reader.ModelReader; import org.gcube.application.rsg.client.RsgClient; +import org.gcube.application.rsg.client.support.ClientException; import org.gcube.application.rsg.service.RsgService; import org.gcube.application.rsg.service.dto.ReportEntry; import org.gcube.application.rsg.service.dto.ReportType; @@ -1716,15 +1717,22 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe RsgClient rsgClient = getRsgSecureClient(); _log.debug("listVMEReports() securedWithEncryptedToken completed"); + ReportEntry[] reports = null; + try { + reports = rsgClient.listReports(type); + } catch (ClientException e) { + _log.error("failed to get the list of VME Reports: " + e.getMessage()); + } + if (isVREManager()) { - for (ReportEntry re : rsgClient.listReports(type)) { + for (ReportEntry re : reports) { String rfmo = re.getOwner(); String name = re.getIdentifier(); toReturn.add(new VMEReportBean(""+re.getId(), rfmo, name)); } } else { ArrayList allowedRFMOs = getUserRFMOs(); - for (ReportEntry re : rsgClient.listReports(type)) { + for (ReportEntry re : reports) { String rfmo = re.getOwner().trim(); String name = re.getIdentifier(); for (String allowedRFMO : allowedRFMOs) {