From 04534fe858054a84ac6970264d416ce46a216df2 Mon Sep 17 00:00:00 2001 From: kate Date: Wed, 5 Sep 2018 12:09:48 +0200 Subject: [PATCH] resource list menu items update --- .../page/admin/resources/PageResources.java | 55 +++++++++++++++++++ .../localization/Midpoint.properties | 1 + 2 files changed, 56 insertions(+) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java index 5cfc4e6553b..e3b7f68d331 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java @@ -20,7 +20,9 @@ import java.util.Collection; import java.util.List; +import com.evolveum.midpoint.model.api.util.ResourceUtils; import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.util.exception.*; import com.evolveum.midpoint.web.application.Url; import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel; import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem; @@ -89,6 +91,7 @@ public class PageResources extends PageAdminResources { private static final String DOT_CLASS = PageResources.class.getName() + "."; private static final String OPERATION_TEST_RESOURCE = DOT_CLASS + "testResource"; private static final String OPERATION_DELETE_RESOURCES = DOT_CLASS + "deleteResources"; + private static final String OPERATION_REFRESH_SCHEMA = DOT_CLASS + "refreshSchema"; private static final String ID_MAIN_FORM = "mainForm"; private static final String ID_TABLE = "table"; @@ -269,6 +272,28 @@ public boolean isHeaderMenuItem(){ } }); + menuItems.add(new InlineMenuItem(createStringResource("pageResource.button.refreshSchema")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + SelectableBean rowDto = getRowModel().getObject(); + refreshSchemaPerformed(rowDto.getValue(), target); + } + }; + } + + @Override + public boolean isHeaderMenuItem(){ + return false; + } + }); + menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.delete")) { private static final long serialVersionUID = 1L; @@ -353,6 +378,36 @@ private List isAnyResourceSelected(AjaxRequestTarget target, Resou } + private void refreshSchemaPerformed(ResourceType resource, AjaxRequestTarget target) { + ConfirmationPanel dialog = new ConfirmationPanel(((PageBase)getPage()).getMainPopupBodyId(), + createStringResource("pageResources.message.refreshResourceSchemaConfirm")){ + @Override + public void yesPerformed(AjaxRequestTarget target) { + refreshSchemaConfirmPerformed(resource, target); + } + }; + ((PageBase)getPage()).showMainPopup(dialog, target); + } + + private void refreshSchemaConfirmPerformed(ResourceType resource, AjaxRequestTarget target){ + Task task = createSimpleTask(OPERATION_REFRESH_SCHEMA); + OperationResult parentResult = new OperationResult(OPERATION_REFRESH_SCHEMA); + + try { + ResourceUtils.deleteSchema(resource.asPrismObject(), getModelService(), getPrismContext(), task, parentResult); + getModelService().testResource(resource.getOid(), task); + } catch (ObjectAlreadyExistsException | ObjectNotFoundException | SchemaException + | ExpressionEvaluationException | CommunicationException | ConfigurationException + | PolicyViolationException | SecurityViolationException e) { + LoggingUtils.logUnexpectedException(LOGGER, "Error refreshing resource schema", e); + parentResult.recordFatalError("Error refreshing resource schema", e); + } + + parentResult.computeStatus(); + showResult(parentResult, "pageResource.refreshSchema.failed"); + target.add(getFeedbackPanel()); + } + private void deleteResourcePerformed(AjaxRequestTarget target, ResourceType single) { List selected = isAnyResourceSelected(target, single); if (selected.size() < 1) { diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index 84db0aedee5..e682d3f35cd 100755 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -1968,6 +1968,7 @@ pageResources.message.deleteHostConfirm=Do you really want to delete host '{0}'? pageResources.message.deleteHostsConfirm=Do you really want to delete {0} hosts? pageResources.message.deleteResourceConfirm=Do you really want to delete resource '{0}'? pageResources.message.deleteResourcesConfirm=Do you really want to delete {0} resources? +pageResources.message.refreshResourceSchemaConfirm=Do you really want to refresh resource schema? pageResources.message.noHostSelected=No connector host has been selected. pageResources.message.noResourceSelected=No resource has been selected. pageResources.message.queryError=Error occurred during translation search query to filter.