From cadaf2937e193c33dc6285f6daa59e97c4ac3787 Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Thu, 20 May 2021 18:00:56 +0200 Subject: [PATCH] schema handling and attributes panel improvements, new enabled property for mapping --- .../impl/component/MappingColumnPanel.html | 2 +- .../impl/component/MappingColumnPanel.java | 36 ++++++++---- .../MultivalueContainerDetailsPanel.java | 2 +- .../panel/LockoutStatusPanelFactory.java | 4 +- .../prism/panel/ResourceAttributePanel.java | 18 +++--- .../ResourceSchemaHandlingPanel.java | 56 +++++++++++-------- .../xml/ns/public/common/common-core-3.xsd | 14 +++++ 7 files changed, 87 insertions(+), 45 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MappingColumnPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MappingColumnPanel.html index 467804d9731..4d6465b8fd6 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MappingColumnPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MappingColumnPanel.html @@ -8,7 +8,7 @@ -
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MappingColumnPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MappingColumnPanel.java index 7105bcbb195..0f54657fbb2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MappingColumnPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MappingColumnPanel.java @@ -9,23 +9,29 @@ import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.model.ReadOnlyModel; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; +import com.evolveum.midpoint.gui.impl.factory.panel.ItemRealValueModel; import com.evolveum.midpoint.web.component.input.TriStateComboPanel; import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType; import com.evolveum.midpoint.xml.ns._public.common.common_3.VariableBindingDefinitionType; 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.model.IModel; import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; import java.util.List; -public class MappingColumnPanel extends BasePanel> { +public class MappingColumnPanel extends BasePanel> { private static final String ID_MAPPING_ENABLED = "mappingEnabled"; private static final String ID_MAPPING = "mapping"; + private static final String ID_MAPPINGS = "mappings"; - public MappingColumnPanel(String id, IModel> model) { + public MappingColumnPanel(String id, IModel> model) { super(id, model); } @@ -37,13 +43,28 @@ protected void onInitialize() { private void initLayout() { - ReadOnlyModel mappingDescription = new ReadOnlyModel<>(() -> { + ListView> mappings = new ListView<>(ID_MAPPINGS, new PropertyModel<>(getModel(), "values")) { + + @Override + protected void populateItem(ListItem> item) { + TriStateComboPanel dropDownChoicePanel = new TriStateComboPanel(ID_MAPPING_ENABLED, new PropertyModel<>(new ItemRealValueModel<>(item.getModel()), MappingType.F_ENABLED.getLocalPart())); + item.add(dropDownChoicePanel); + Label label = new Label(ID_MAPPING, createMappingDescription(item.getModel())); + item.add(label); + } + }; + add(mappings); + + } + + private IModel createMappingDescription(IModel> model) { + return new ReadOnlyModel<>(() -> { if (getModelObject() == null) { return null; } - MappingType mappingType = getModelObject().getRealValue(); + MappingType mappingType = model.getObject().getRealValue(); if (mappingType == null) { return null; } @@ -76,12 +97,5 @@ private void initLayout() { return target + "(" + strength + ")"; }); - - TriStateComboPanel dropDownChoicePanel = new TriStateComboPanel(ID_MAPPING_ENABLED, Model.of(true)); - add(dropDownChoicePanel); - - Label label = new Label(ID_MAPPING, mappingDescription); - add(label); - } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java index 27105939c39..ebe0bcd23b3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java @@ -66,7 +66,7 @@ private void initLayout() { List tabs = createTabs(); if (isAddDefaultPanel) { - tabs.add(addBasicContainerValuePanel()); + tabs.add(0, addBasicContainerValuePanel()); } TabbedPanel tabbedPanel = WebComponentUtil.createTabPanel(ID_DETAILS, getPageBase(), tabs, null); tabbedPanel.setOutputMarkupId(true); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/panel/LockoutStatusPanelFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/panel/LockoutStatusPanelFactory.java index 65c3248d966..6230a27b382 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/panel/LockoutStatusPanelFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/panel/LockoutStatusPanelFactory.java @@ -8,6 +8,8 @@ import javax.annotation.PostConstruct; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -35,7 +37,7 @@ public Integer getOrder() { @Override public > boolean match(IW wrapper) { - return ActivationType.F_LOCKOUT_STATUS.equals(wrapper.getItemName()); + return wrapper instanceof PrismPropertyWrapper && ActivationType.F_LOCKOUT_STATUS.equals(wrapper.getItemName()); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ResourceAttributePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ResourceAttributePanel.java index 843ac8d52fa..6d1d968b7dd 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ResourceAttributePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/panel/ResourceAttributePanel.java @@ -92,18 +92,18 @@ protected List>> cellItem, String componentId, IModel> rowModel) { IModel> mappingModel = PrismContainerWrapperModel.fromContainerValueWrapper(rowModel, ResourceAttributeDefinitionType.F_OUTBOUND); - cellItem.add(new MappingColumnPanel(componentId, new PropertyModel<>(mappingModel, "value"))); + cellItem.add(new MappingColumnPanel(componentId, mappingModel)); } }); -// columns.add(new AbstractColumn<>(createStringResource("Inbound")) { -// -// @Override -// public void populateItem(Item>> cellItem, String componentId, IModel> rowModel) { -// IModel> mappingModel = PrismContainerWrapperModel.fromContainerValueWrapper(rowModel, ResourceAttributeDefinitionType.F_INBOUND); -// cellItem.add(new MappingColumnPanel(componentId, new PropertyModel<>(mappingModel, "values"))); -// } -// }); + columns.add(new AbstractColumn<>(createStringResource("Inbound")) { + + @Override + public void populateItem(Item>> cellItem, String componentId, IModel> rowModel) { + IModel> mappingModel = PrismContainerWrapperModel.fromContainerValueWrapper(rowModel, ResourceAttributeDefinitionType.F_INBOUND); + cellItem.add(new MappingColumnPanel(componentId, mappingModel)); + } + }); return columns; } }; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceSchemaHandlingPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceSchemaHandlingPanel.java index d899f9a530b..4459d6b0986 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceSchemaHandlingPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceSchemaHandlingPanel.java @@ -9,6 +9,7 @@ import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.component.DisplayNamePanel; import com.evolveum.midpoint.gui.api.component.tabs.PanelTab; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.impl.component.MultivalueContainerDetailsPanel; @@ -20,9 +21,9 @@ import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn; import com.evolveum.midpoint.web.component.form.MidpointForm; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; +import com.evolveum.midpoint.web.component.prism.ItemVisibility; import com.evolveum.midpoint.web.model.PrismContainerWrapperModel; import com.evolveum.midpoint.web.session.UserProfileStorage; -import com.evolveum.midpoint.xml.ns._public.common.common_3.GlobalPolicyRuleType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceObjectTypeDefinitionType; import com.evolveum.midpoint.xml.ns._public.common.common_3.SchemaHandlingType; @@ -31,7 +32,6 @@ import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -60,26 +60,7 @@ private void initLayout() { @Override protected MultivalueContainerDetailsPanel getMultivalueContainerDetailsPanel(ListItem> item) { - return new MultivalueContainerDetailsPanel<>(ID_ITEM_DETAILS, item.getModel(), true) { - - @Override - protected @NotNull List createTabs() { - List tabs = new ArrayList<>(); - tabs.add(new PanelTab(createStringResource("Attributes")) { - - @Override - public WebMarkupContainer createPanel(String panelId) { - return new ResourceAttributePanel(panelId, PrismContainerWrapperModel.fromContainerValueWrapper(getModel(), ResourceObjectTypeDefinitionType.F_ATTRIBUTE)); - } - }); - return tabs; - } - - @Override - protected DisplayNamePanel createDisplayNamePanel(String displayNamePanelId) { - return new DisplayNamePanel<>(displayNamePanelId, new ItemRealValueModel<>(getModel())); - } - }; + return createMultivalueContainerDetailsPanel(ID_ITEM_DETAILS, item.getModel()); } @Override @@ -125,4 +106,35 @@ public String getCssClass() { private MultivalueContainerListPanelWithDetailsPanel getMultivalueContainerListPanel(){ return ((MultivalueContainerListPanelWithDetailsPanel)get(createComponentPath(ID_FORM, ID_TABLE))); } + + private MultivalueContainerDetailsPanel createMultivalueContainerDetailsPanel(String panelId, IModel> model) { + return new MultivalueContainerDetailsPanel<>(panelId, model, true) { + + @Override + protected ItemVisibility getBasicTabVisibity(ItemWrapper itemWrapper) { + if (itemWrapper instanceof PrismContainerWrapper) { + return ItemVisibility.HIDDEN; + } + return ItemVisibility.AUTO; + } + + @Override + protected @NotNull List createTabs() { + List tabs = new ArrayList<>(); + tabs.add(new PanelTab(createStringResource("Attributes")) { + + @Override + public WebMarkupContainer createPanel(String panelId) { + return new ResourceAttributePanel(panelId, PrismContainerWrapperModel.fromContainerValueWrapper(getModel(), ResourceObjectTypeDefinitionType.F_ATTRIBUTE)); + } + }); + return tabs; + } + + @Override + protected DisplayNamePanel createDisplayNamePanel(String displayNamePanelId) { + return new DisplayNamePanel<>(displayNamePanelId, new ItemRealValueModel<>(getModel())); + } + }; + } } diff --git a/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd b/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd index 3a2ceaa5352..8504c951a36 100755 --- a/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd +++ b/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd @@ -10538,6 +10538,20 @@ + + + +

+ Specifies if the mapping is enabled and is being evaluated. Default + value is true. It means, that each defined mapping is by default enabled. + To skip mapping evaluation, it has to be set to false. +

+
+ + MappingType.enabled + +
+