diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/AbstractDataImportResultDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/AbstractDataImportResultDialog.java new file mode 100644 index 00000000000..503b0c728cf --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/AbstractDataImportResultDialog.java @@ -0,0 +1,62 @@ +package com.sap.sailing.gwt.ui.adminconsole.resulthandling; + +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.DialogBox; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.VerticalPanel; +import com.sap.sailing.gwt.ui.adminconsole.resulthandling.AbstractDataImportResponse.ErrorMessage; + +public class AbstractDataImportResultDialog { + + protected static final String DIV_BOLD = "
", P_END = "
"; + + protected static void appendErrorMessagesIfPresent(SafeHtmlBuilder builder, AbstractDataImportResponse response) { + if (response.hasErrors()) { + appendParagraph(builder, "Error messages"); + response.getErrors().forEach(errorMessage -> appendErrorMessage(builder, errorMessage)); + } + } + + protected static void appendErrorMessage(SafeHtmlBuilder builder, ErrorMessage errorMessage) { + builder.appendHtmlConstant(DIV_BOLD).appendEscaped(errorMessage.getMessage()).appendHtmlConstant(DIV_END); + builder.appendHtmlConstant(UL); + appendLineItemIfValueNotNull(builder, "ServerLog UUID", errorMessage.getExUUID()); + appendLineItemIfValueNotNull(builder, "Exception Classname", errorMessage.getClassName()); + appendLineItemIfValueNotNull(builder, "Filename", errorMessage.getFilename()); + appendLineItemIfValueNotNull(builder, "Requested Importer", errorMessage.getRequestedImporter()); + builder.appendHtmlConstant(UL_END); + } + + protected static void appendParagraph(SafeHtmlBuilder builder, String text) { + builder.appendHtmlConstant(P).appendEscaped(text).appendHtmlConstant(P_END); + } + + protected static void appendLineItem(SafeHtmlBuilder builder, String text) { + builder.appendHtmlConstant(LI).appendEscaped(text).appendHtmlConstant(LI_END); + } + + protected static void appendLineItemIfValueNotNull(SafeHtmlBuilder builder, String label, String value) { + if (value != null && !value.isEmpty()) { + builder.appendHtmlConstant(LI); + builder.appendEscaped(label).appendEscaped(": ").appendEscaped(value); + builder.appendHtmlConstant(LI_END); + } + } + + protected static void show(SafeHtmlBuilder builder) { + final DialogBox errorBox = new DialogBox(false, true); + final VerticalPanel content = new VerticalPanel(); + content.add(new HTML(builder.toSafeHtml())); + final Button close = new Button("Close", (ClickHandler) e -> errorBox.hide()); + content.add(close); + content.setSpacing(10); + errorBox.setGlassEnabled(true); + errorBox.setWidget(content); + errorBox.center(); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/ExpeditionDataImportResultsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/ExpeditionDataImportResultsDialog.java new file mode 100644 index 00000000000..8ee52c597b9 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/ExpeditionDataImportResultsDialog.java @@ -0,0 +1,17 @@ +package com.sap.sailing.gwt.ui.adminconsole.resulthandling; + +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; + +public class ExpeditionDataImportResultsDialog extends AbstractDataImportResultDialog { + + public static void showResults(ExpeditionDataImportResponse response) { + if (response.hasErrors()) { + final SafeHtmlBuilder builder = new SafeHtmlBuilder(); + builder.appendHtmlConstant(DIV_MARGIN); + appendErrorMessagesIfPresent(builder, response); + builder.appendHtmlConstant(DIV_END); + show(builder); + } + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/SensorDataImportResultsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/SensorDataImportResultsDialog.java index ea15996f075..4c55ea40817 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/SensorDataImportResultsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/resulthandling/SensorDataImportResultsDialog.java @@ -1,71 +1,26 @@ package com.sap.sailing.gwt.ui.adminconsole.resulthandling; -import java.util.List; - import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.DialogBox; -import com.google.gwt.user.client.ui.HTML; -import com.google.gwt.user.client.ui.VerticalPanel; -import com.sap.sailing.gwt.ui.adminconsole.resulthandling.AbstractDataImportResponse.ErrorMessage; -public class SensorDataImportResultsDialog { +public class SensorDataImportResultsDialog extends AbstractDataImportResultDialog { + public static void showResults(SensorDataImportResponse response) { - if (!response.hasErrors()) { - return; - } - ListSuccesful uploads
"); - shb.appendHtmlConstant("No succesful upload
"); - } if (response.hasErrors()) { - shb.appendHtmlConstant("Error messages
"); - for (ErrorMessage errorMsg : errorMessages) { - shb.appendHtmlConstant("