From 08c88a7809d838d93e25c4f9abcfa2af58892e1c Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Mon, 24 Apr 2017 17:51:26 +0200 Subject: [PATCH] Adapting test resource GUI to recent test connection changes. --- .../gui/api/util/WebComponentUtil.java | 13 --- .../TestConnectionMessagesPanel.html | 13 ++- .../TestConnectionMessagesPanel.java | 98 ++++++++++++++++--- .../component/TestConnectionResultPanel.html | 4 +- .../localization/Midpoint.properties | 10 +- .../localization/Midpoint_en.properties | 10 +- 6 files changed, 108 insertions(+), 40 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 99fcc90a2e4..1638edb9a8f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -492,19 +492,6 @@ public List getObject() { }; } - public static List getTestConnectionResults(OperationResult result, PageBase component) { - List resultsDto = new ArrayList<>(); - for (ConnectorTestOperation connectorOperation : ConnectorTestOperation.values()) { - for (OperationResult testResult : result.getSubresults()) { - if (connectorOperation.getOperation().equals(testResult.getOperation())) { - OpResult resultDto = OpResult.getOpResult(component, testResult); - resultsDto.add(resultDto); - } - } - } - return resultsDto; - } - public static List createTaskCategoryList() { List categories = new ArrayList<>(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.html index 676b2563691..a1437436304 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.html @@ -1,5 +1,5 @@ +

Resource

+
+
- diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.java index 16c2f97553a..7369d767eb5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.evolveum.midpoint.gui.api.component.result.OperationResultPanel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.schema.constants.ConnectorTestOperation; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.util.exception.*; @@ -28,11 +29,15 @@ import org.apache.commons.lang3.StringUtils; import org.apache.wicket.Page; import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.markup.repeater.RepeatingView; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.util.ListModel; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -40,14 +45,21 @@ * Created by honchar. */ public class TestConnectionMessagesPanel extends BasePanel { - private static final String DOT_CLASS = TestConnectionMessagesPanel.class.getName() + "."; + private static final long serialVersionUID = 1L; + + private static final String DOT_CLASS = TestConnectionMessagesPanel.class.getName() + "."; private static final String OPERATION_TEST_CONNECTION = DOT_CLASS + "testConnection"; private static final String ID_MESSAGES_PANEL = "messagesPanel"; - private static final String ID_MESSAGES = "messages"; + private static final String ID_CONNECTOR_MESSAGES_PANEL = "connectorMessagesPanel"; + private static final String ID_CONNECTOR_NAME = "connectorName"; + private static final String ID_CONNECTOR_MESSAGES = "connectorMessages"; + private static final String ID_RESOURCE_MESSAGES = "resourceMessages"; + private PageBase parentPage; - private ListModel model; + private ListModel modelResourceResults; + private ListModel connectorResourceResults; public TestConnectionMessagesPanel(String id, String resourceOid, PageBase parentPage) { super(id); @@ -58,45 +70,101 @@ public TestConnectionMessagesPanel(String id, String resourceOid, PageBase paren private void initResultsModel(String resourceOid) { OperationResult result = new OperationResult(OPERATION_TEST_CONNECTION); - List resultsDto = new ArrayList<>(); + List resourceResultsDto = new ArrayList<>(); + List connectorStructs = new ArrayList<>(); if (StringUtils.isNotEmpty(resourceOid)) { + Task task = parentPage.createSimpleTask(OPERATION_TEST_CONNECTION); try { - Task task = parentPage.createSimpleTask(OPERATION_TEST_CONNECTION); result = parentPage.getModelService().testResource(resourceOid, task); - resultsDto = WebComponentUtil.getTestConnectionResults(result, parentPage); } catch (ObjectNotFoundException e) { result.recordFatalError("Failed to test resource connection", e); } + for (OperationResult subresult: result.getSubresults()) { + if (isConnectorResult(subresult)) { + ConnectorStruct connectorStruct = new ConnectorStruct(); + connectorStruct.connectorName = (String) subresult.getParams().get(OperationResult.PARAM_NAME); + if (connectorStruct.connectorName == null) { + connectorStruct.connectorName = ""; + } + connectorStruct.connectorResultsDto = new ArrayList<>(); + for (OperationResult subsubresult: subresult.getSubresults()) { + if (isKnownResult(subsubresult)) { + connectorStruct.connectorResultsDto.add(OpResult.getOpResult(parentPage, subsubresult)); + } + } + connectorStructs.add(connectorStruct); + } else if (isKnownResult(subresult)) { + // resource operation + resourceResultsDto.add(OpResult.getOpResult(parentPage, subresult)); + } + + } + if (result.isSuccess()) { result.recomputeStatus(); } } - model = new ListModel(resultsDto); + modelResourceResults = new ListModel<>(resourceResultsDto); + connectorResourceResults = new ListModel<>(connectorStructs); } - private void initLayout() { + private boolean isConnectorResult(OperationResult subresult) { + return subresult.getOperation().equals(ConnectorTestOperation.CONNECTOR_TEST.getOperation()); + } + + private boolean isKnownResult(OperationResult subresult) { + for (ConnectorTestOperation connectorOperation : ConnectorTestOperation.values()) { + if (connectorOperation.getOperation().equals(subresult.getOperation())) { + return true; + } + } + return false; + } + + + private void initLayout() { setOutputMarkupId(true); WebMarkupContainer messagesPanel = new WebMarkupContainer(ID_MESSAGES_PANEL); messagesPanel.setOutputMarkupId(true); add(messagesPanel); + + ListView connectorView = new ListView(ID_CONNECTOR_MESSAGES_PANEL, connectorResourceResults) { + private static final long serialVersionUID = 1L; + @Override + protected void populateItem(ListItem item) { + Label connectorNameLabel = new Label(ID_CONNECTOR_NAME, item.getModelObject().connectorName); + item.add(connectorNameLabel); + RepeatingView connectorResultView = new RepeatingView(ID_CONNECTOR_MESSAGES); + List resultsDto = item.getModelObject().connectorResultsDto; + if (resultsDto != null) { + initResultsPanel(connectorResultView, resultsDto, parentPage); + } + item.add(connectorResultView); + } + + }; + messagesPanel.add(connectorView); - RepeatingView resultView = new RepeatingView(ID_MESSAGES); - if (model.getObject() != null && model.getObject().size() > 0) { - initResultsPanel(resultView, parentPage); + RepeatingView resultView = new RepeatingView(ID_RESOURCE_MESSAGES); + if (modelResourceResults.getObject() != null) { + initResultsPanel(resultView, modelResourceResults.getObject(), parentPage); } resultView.setOutputMarkupId(true); messagesPanel.add(resultView); } - public void initResultsPanel(RepeatingView resultView, Page parentPage) { - for (OpResult result : model.getObject()) { + public void initResultsPanel(RepeatingView resultView, List opresults, Page parentPage) { + for (OpResult result : opresults) { OperationResultPanel resultPanel = new OperationResultPanel(resultView.newChildId(), new Model<>(result), parentPage); resultPanel.setOutputMarkupId(true); resultView.add(resultPanel); } } - + private class ConnectorStruct implements Serializable { + private String connectorName; + private List connectorResultsDto; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionResultPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionResultPanel.html index 423b261156d..8acfb97c5eb 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionResultPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionResultPanel.html @@ -18,7 +18,7 @@
- +

@@ -26,7 +26,7 @@

- +
diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index af658e83a34..25cfb07932a 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -738,9 +738,13 @@ operation.com.evolveum.midpoint.repo.api.RepositoryService.deleteObject=Delete o operation.com.evolveum.midpoint.repo.api.RepositoryService.getObject=Get object (Repository) operation.com.evolveum.midpoint.repo.api.RepositoryService.modifyObject=Modify object (Repository) operation.com.evolveum.midpoint.repo.api.RepositoryService.searchObjects=Search objects (Repository) -operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.configurationValidation=Configuration validation -operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connectorConnection=Connector connection test -operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connectorInitialization=Connector initialization +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.connection=Connector connection +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.initialization=Connector initialization +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.configuration=Connector configuration +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.capabilities=Connector capabilities +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.resourceSchema=Resource schema +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.resourceSanity=Resource sanity +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.extraTest=Extra test operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.testConnection=Test connection operation.com.evolveum.midpoint.task.api.TaskManager.addTask=Add task (Task) operation.com.evolveum.midpoint.task.api.TaskManager.createTaskInstance=Create task instance (Task) diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties index b3aec37ad65..9c2f14da51b 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties @@ -738,9 +738,13 @@ operation.com.evolveum.midpoint.repo.api.RepositoryService.deleteObject=Delete o operation.com.evolveum.midpoint.repo.api.RepositoryService.getObject=Get object (Repository) operation.com.evolveum.midpoint.repo.api.RepositoryService.modifyObject=Modify object (Repository) operation.com.evolveum.midpoint.repo.api.RepositoryService.searchObjects=Search objects (Repository) -operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.configurationValidation=Configuration validation -operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connectorConnection=Connector connection test -operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connectorInitialization=Connector initialization +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.connection=Connector connection +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.initialization=Connector initialization +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.configuration=Connector configuration +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.capabilities=Connector capabilities +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.resourceSchema=Resource schema +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.resourceSanity=Resource sanity +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.extraTest=Extra test operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.testConnection=Test connection operation.com.evolveum.midpoint.task.api.TaskManager.addTask=Add task (Task) operation.com.evolveum.midpoint.task.api.TaskManager.createTaskInstance=Create task instance (Task)