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 = "
", DIV_END = "
"; + protected static final String DIV_MARGIN = "
", UL = ""; + protected static final String LI = "
  • ", LI_END = "", P = "

    ", 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; - } - List errorMessages = response.getErrors(); - SafeHtmlBuilder shb = new SafeHtmlBuilder(); - shb.appendHtmlConstant("
    "); - if (response.didSucceedImportingAnyFile()) { - shb.appendHtmlConstant("

    Succesful uploads

    "); - shb.appendHtmlConstant("
      "); - for (String uuid : response.getUploads()) { - shb.appendHtmlConstant("
    • ").appendEscaped(uuid).appendHtmlConstant("
    • "); - } - shb.appendHtmlConstant("
    "); - } else { - shb.appendHtmlConstant("

    No succesful upload

    "); - } if (response.hasErrors()) { - shb.appendHtmlConstant("

    Error messages

    "); - for (ErrorMessage errorMsg : errorMessages) { - shb.appendHtmlConstant("
    ").appendEscaped(errorMsg.getMessage()) - .appendHtmlConstant("
    "); - shb.appendHtmlConstant("
      "); - if (!isNullOrEmpty(errorMsg.getExUUID())) { - shb.appendHtmlConstant("
    • ServerLog UUID: ").appendEscaped(errorMsg.getExUUID()) - .appendHtmlConstant("
    • "); - } - if (!isNullOrEmpty(errorMsg.getClassName())) { - shb.appendHtmlConstant("
    • Exception Classname: ").appendEscaped(errorMsg.getClassName()) - .appendHtmlConstant("
    • "); - } - if (!isNullOrEmpty(errorMsg.getFilename())) { - shb.appendHtmlConstant("
    • Filename: ").appendEscaped(errorMsg.getFilename()) - .appendHtmlConstant("
    • "); - } - if (!isNullOrEmpty(errorMsg.getRequestedImporter())) { - shb.appendHtmlConstant("
    • Requested Importer: ").appendEscaped(errorMsg.getRequestedImporter()) - .appendHtmlConstant("
    • "); - } - shb.appendHtmlConstant("
    "); + final SafeHtmlBuilder builder = new SafeHtmlBuilder(); + builder.appendHtmlConstant(DIV_MARGIN); + if (response.didSucceedImportingAnyFile()) { + appendParagraph(builder, "Succesful uploads"); + builder.appendHtmlConstant(UL); + response.getUploads().forEach(uuid -> appendLineItem(builder, uuid)); + builder.appendHtmlConstant(UL_END); + } else { + appendParagraph(builder, "No succesful upload!"); } + appendErrorMessagesIfPresent(builder, response); + + builder.appendHtmlConstant(DIV_END); + show(builder); } - shb.appendHtmlConstant("
    "); - final DialogBox errorBox = new DialogBox(false, true); - VerticalPanel vp = new VerticalPanel(); - vp.add(new HTML(shb.toSafeHtml())); - Button close = new Button("Close"); - close.addClickHandler(e -> errorBox.hide()); - vp.add(close); - vp.setSpacing(10); - errorBox.setGlassEnabled(true); - errorBox.setWidget(vp); - errorBox.center(); } - private static boolean isNullOrEmpty(String text) { - return text == null || text.isEmpty(); - } }