From fbc0124c7fad6d67e3b5e9f25c20a23c2ea20dd8 Mon Sep 17 00:00:00 2001 From: skublik Date: Tue, 17 Jul 2018 13:00:43 +0200 Subject: [PATCH] creating tab for GlobalPolicyRules --- .../midpoint/gui/api/page/PageBase.java | 2 + .../MultivalueContainerListPanel.java | 16 + .../component/GlobalPolicyRuleTabPanel.html | 28 ++ .../component/GlobalPolicyRuleTabPanel.java | 384 ++++++++++++++++++ .../ObjectPolicyConfigurationTabPanel.java | 117 ++---- .../session/GlobalPolicyRulesTabStorage.java | 60 +++ .../session/ObjectPoliciesTabStorage.java | 2 +- .../assignment/PolicyRulesPanel.java | 2 - .../PageSystemConfigurationNew.java | 288 +++---------- .../midpoint/web/session/SessionStorage.java | 9 + .../web/session/UserProfileStorage.java | 3 +- .../localization/Midpoint.properties | 2 + 12 files changed, 575 insertions(+), 338 deletions(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.java create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/session/GlobalPolicyRulesTabStorage.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java index d366cc6606e..dbc6c5f6dc4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java @@ -1487,6 +1487,8 @@ private void createConfigurationMenu(SideBarMenuItem item) { PageSystemConfigurationNew.CONFIGURATION_TAB_BASIC); addSystemMenuItemNew(systemItemNew, "PageAdmin.menu.top.configuration.objectPolicy", PageSystemConfigurationNew.CONFIGURATION_TAB_OBJECT_POLICY); + addSystemMenuItemNew(systemItemNew, "PageAdmin.menu.top.configuration.globalPolicyRule", + PageSystemConfigurationNew.CONFIGURATION_TAB_GLOBAL_POLICY_RULE); addSystemMenuItemNew(systemItemNew, "PageAdmin.menu.top.configuration.globalAccountSynchronization", PageSystemConfigurationNew.CONFIGURATION_TAB_GLOBAL_ACCOUNT_SYNCHRONIZATION); addSystemMenuItemNew(systemItemNew, "PageAdmin.menu.top.configuration.cleanupPolicy", diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java index 8d4939808ed..e3f1e85ecc3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java @@ -34,6 +34,7 @@ import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; +import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.impl.util.GuiImplUtil; import com.evolveum.midpoint.prism.Containerable; @@ -49,6 +50,8 @@ import com.evolveum.midpoint.web.component.AjaxIconButton; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; +import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn; +import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; import com.evolveum.midpoint.web.component.objectdetails.FocusMainPanel; import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper; import com.evolveum.midpoint.web.component.prism.ContainerWrapper; @@ -411,4 +414,17 @@ private void deleteItemPerformed(AjaxRequestTarget target, List getDefaultMenuActions() { + List menuItems = new ArrayList<>(); + PrismObject obj = getFocusObject(); + menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.unassign"), new Model<>(true), + new Model<>(true), false, createDeleteColumnAction(), 0, GuiStyleConstants.CLASS_DELETE_MENU_ITEM, + DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString())); + + menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.edit"), new Model<>(true), + new Model<>(true), false, createEditColumnAction(), 1, GuiStyleConstants.CLASS_EDIT_MENU_ITEM, + DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString())); + return menuItems; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.html new file mode 100644 index 00000000000..d90270b1906 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.html @@ -0,0 +1,28 @@ + + + + + +
+
+ + + + + +
+ \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.java new file mode 100644 index 00000000000..efe18f82817 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.java @@ -0,0 +1,384 @@ +/* + * Copyright (c) 2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.evolveum.midpoint.gui.impl.page.admin.configuration.component; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import javax.xml.namespace.QName; + +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; +import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; +import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; +import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.basic.MultiLineLabel; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.markup.html.panel.Fragment; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.model.AbstractReadOnlyModel; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; + +import com.evolveum.midpoint.gui.api.GuiStyleConstants; +import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.gui.api.component.DisplayNamePanel; +import com.evolveum.midpoint.gui.api.model.LoadableModel; +import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; +import com.evolveum.midpoint.gui.impl.component.MultivalueContainerDetailsPanel; +import com.evolveum.midpoint.gui.impl.component.MultivalueContainerListPanel; +import com.evolveum.midpoint.prism.Containerable; +import com.evolveum.midpoint.prism.PrismContainerValue; +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.prism.query.AllFilter; +import com.evolveum.midpoint.prism.query.ObjectPaging; +import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.prism.query.TypeFilter; +import com.evolveum.midpoint.schema.util.PolicyRuleTypeUtil; +import com.evolveum.midpoint.security.api.AuthorizationConstants; +import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.util.logging.Trace; +import com.evolveum.midpoint.util.logging.TraceManager; +import com.evolveum.midpoint.web.component.assignment.AssignmentsUtil; +import com.evolveum.midpoint.web.component.data.BoxedTablePanel; +import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn; +import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; +import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn; +import com.evolveum.midpoint.web.component.data.column.IconColumn; +import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn; +import com.evolveum.midpoint.web.component.data.column.LinkColumn; +import com.evolveum.midpoint.web.component.form.Form; +import com.evolveum.midpoint.web.component.input.DropDownChoicePanel; +import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; +import com.evolveum.midpoint.web.component.prism.ContainerValuePanel; +import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper; +import com.evolveum.midpoint.web.component.prism.ContainerWrapper; +import com.evolveum.midpoint.web.component.prism.ContainerWrapperFactory; +import com.evolveum.midpoint.web.component.prism.ObjectWrapper; +import com.evolveum.midpoint.web.component.prism.PrismContainerPanel; +import com.evolveum.midpoint.web.component.prism.PrismPanel; +import com.evolveum.midpoint.web.component.prism.ValueStatus; +import com.evolveum.midpoint.web.component.util.MultivalueContainerListDataProvider; +import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel; +import com.evolveum.midpoint.web.session.PageStorage; +import com.evolveum.midpoint.web.session.UserProfileStorage; +import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; +import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.AuthorizationPhaseType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ConflictResolutionType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.GlobalPolicyRuleType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.LifecycleStateModelType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectPolicyConfigurationType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyRuleType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.PropertyConstraintType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType; + +/** + * @author skublik + */ +public class GlobalPolicyRuleTabPanel extends BasePanel> { + + private static final long serialVersionUID = 1L; + + private static final Trace LOGGER = TraceManager.getTrace(GlobalPolicyRuleTabPanel.class); + + private static final String ID_GLOBAL_POLICY_RULE = "globalPolicyRule"; + private static final String ID_SEARCH_FRAGMENT = "searchFragment"; + protected static final String ID_SPECIFIC_CONTAINERS_FRAGMENT = "specificContainersFragment"; + protected static final String ID_SPECIFIC_CONTAINER = "specificContainers"; + + private List> detailsPanelObjectPoliciesList = new ArrayList<>(); + + public GlobalPolicyRuleTabPanel(String id, IModel> model) { + super(id, model); + + } + + @Override + protected void onInitialize() { + super.onInitialize(); + initLayout(); + } + + protected void initLayout() { + + TableId tableId = UserProfileStorage.TableId.OBJECT_POLICIES_TAB_TABLE; + int itemPerPage = (int) ((PageBase)GlobalPolicyRuleTabPanel.this.getPage()).getItemsPerPage(UserProfileStorage.TableId.OBJECT_POLICIES_TAB_TABLE); + PageStorage pageStorage = ((PageBase)GlobalPolicyRuleTabPanel.this.getPage()).getSessionStorage().getObjectPoliciesConfigurationTabStorage(); + + MultivalueContainerListPanel multivalueContainerListPanel = new MultivalueContainerListPanel(ID_GLOBAL_POLICY_RULE, getModel(), + tableId, itemPerPage, pageStorage) { + + private static final long serialVersionUID = 1L; + + @Override + protected List> postSearch( + List> items) { + return items; + } + + @Override + protected void newItemPerformed(AjaxRequestTarget target) { + newGlobalPolicuRuleClickPerformed(target); + } + + @Override + protected void initPaging() { + GlobalPolicyRuleTabPanel.this.initPaging(); + } + + @Override + protected Fragment getSearchPanel(String contentAreaId) { + return new Fragment(contentAreaId, ID_SEARCH_FRAGMENT, GlobalPolicyRuleTabPanel.this); + } + + @Override + protected boolean enableActionNewObject() { + return true; + } + + @Override + protected ObjectQuery createQuery() { + return GlobalPolicyRuleTabPanel.this.createQuery(); + } + + @Override + protected List, String>> createColumns() { + return initBasicColumns(); + } + + @Override + protected MultivalueContainerDetailsPanel getMultivalueContainerDetailsPanel( + ListItem> item) { + return GlobalPolicyRuleTabPanel.this.getMultivalueContainerDetailsPanel(item); + } + }; + + add(multivalueContainerListPanel); + + setOutputMarkupId(true); + } + + protected void newGlobalPolicuRuleClickPerformed(AjaxRequestTarget target) { + PrismContainerValue newObjectPolicy = getModel().getObject().getItem().createNewValue(); + ContainerValueWrapper newObjectPolicyWrapper = getMultivalueContainerListPanel().createNewItemContainerValueWrapper(newObjectPolicy, getModel()); + newObjectPolicyWrapper.setShowEmpty(true, false); + newObjectPolicyWrapper.computeStripes(); + getMultivalueContainerListPanel().itemDetailsPerformed(target, Arrays.asList(newObjectPolicyWrapper)); + } + + private MultivalueContainerDetailsPanel getMultivalueContainerDetailsPanel( + ListItem> item) { + MultivalueContainerDetailsPanel detailsPanel = new MultivalueContainerDetailsPanel(MultivalueContainerListPanel.ID_ITEM_DETAILS, item.getModel()) { + + private static final long serialVersionUID = 1L; + + @Override + protected DisplayNamePanel createDisplayNamePanel(String displayNamePanelId) { + IModel displayNameModel = new AbstractReadOnlyModel() { + + private static final long serialVersionUID = 1L; + + @Override + public GlobalPolicyRuleType getObject() { + return item.getModelObject().getContainerValue().getValue(); + } + + }; + return new DisplayNamePanel(displayNamePanelId, displayNameModel); + } + + @Override + protected Fragment getSpecificContainers(String contentAreaId) { + Fragment specificContainers = new Fragment(contentAreaId, ID_SPECIFIC_CONTAINERS_FRAGMENT, GlobalPolicyRuleTabPanel.this); + return specificContainers; + } + }; + return detailsPanel; + } + + private MultivalueContainerListPanel getMultivalueContainerListPanel(){ + return ((MultivalueContainerListPanel)get(ID_GLOBAL_POLICY_RULE)); + } + + private ObjectQuery createQuery() { + TypeFilter filter = TypeFilter.createType(GlobalPolicyRuleType.COMPLEX_TYPE, new AllFilter()); + return ObjectQuery.createObjectQuery(filter); + } + + private void initPaging() { + getPageBase().getSessionStorage().getGlobalPolicyRulesTabStorage().setPaging(ObjectPaging.createPaging(0, (int) ((PageBase)getPage()).getItemsPerPage(UserProfileStorage.TableId.GLOBAL_POLICY_RULES_TAB_TABLE))); + } + + private List, String>> initBasicColumns() { + List, String>> columns = new ArrayList<>(); + + columns.add(new CheckBoxHeaderColumn<>()); + + columns.add(new IconColumn>(Model.of("")) { + + private static final long serialVersionUID = 1L; + + @Override + protected IModel createIconModel(IModel> rowModel) { + return new AbstractReadOnlyModel() { + + private static final long serialVersionUID = 1L; + + @Override + public String getObject() { + return WebComponentUtil.createDefaultBlackIcon(SystemConfigurationType.COMPLEX_TYPE); + } + }; + } + + }); + + columns.add(new LinkColumn>(createStringResource("PolicyRulesPanel.nameColumn")){ + private static final long serialVersionUID = 1L; + + @Override + protected IModel createLinkModel(IModel> rowModel) { + GlobalPolicyRuleType policyRuleType = rowModel.getObject().getContainerValue().getValue(); + String name = policyRuleType.getName(); + if (StringUtils.isBlank(name)) { + return createStringResource("AssignmentPanel.noName"); + } + return Model.of(name); + } + + @Override + public void onClick(AjaxRequestTarget target, IModel> rowModel) { + getMultivalueContainerListPanel().itemDetailsPerformed(target, rowModel); + } + }); + + columns.add(new AbstractColumn, String>(createStringResource("PolicyRulesPanel.constraintsColumn")){ + private static final long serialVersionUID = 1L; + + @Override + public void populateItem(Item>> cellItem, String componentId, + final IModel> rowModel) { + GlobalPolicyRuleType policyRuleType = rowModel.getObject().getContainerValue().getValue(); + String constraints = PolicyRuleTypeUtil.toShortString(policyRuleType.getPolicyConstraints()); + cellItem.add(new MultiLineLabel(componentId, Model.of(constraints != null && !constraints.equals("null") ? constraints : ""))); + } + + }); + columns.add(new AbstractColumn, String>(createStringResource("PolicyRulesPanel.situationColumn")){ + private static final long serialVersionUID = 1L; + + @Override + public void populateItem(Item>> cellItem, String componentId, + final IModel> rowModel) { + GlobalPolicyRuleType globalPolicyRuleTypeModel = rowModel.getObject().getContainerValue().getValue(); + String situationValue = globalPolicyRuleTypeModel == null ? "" : globalPolicyRuleTypeModel.getPolicySituation(); + cellItem.add(new Label(componentId, Model.of(situationValue))); + } + + }); + columns.add(new AbstractColumn, String>(createStringResource("PolicyRulesPanel.actionColumn")){ + private static final long serialVersionUID = 1L; + + @Override + public void populateItem(Item>> cellItem, String componentId, + final IModel> rowModel) { + GlobalPolicyRuleType globalPolicyRuleTypeModel = rowModel.getObject().getContainerValue().getValue(); + String action = PolicyRuleTypeUtil.toShortString(globalPolicyRuleTypeModel.getPolicyActions(), new ArrayList<>()); + cellItem.add(new MultiLineLabel(componentId, Model.of(action != null && !action.equals("null") ? action : ""))); + } + + }); + + List menuActionsList = getMultivalueContainerListPanel().getDefaultMenuActions(); + columns.add(new InlineMenuButtonColumn<>(menuActionsList, menuActionsList.size(), getPageBase())); + + return columns; + } + +// protected Fragment getSearchPanel(String contentAreaId){ +// Fragment searchContainer = new Fragment(contentAreaId, ID_SEARCH_FRAGMENT, this); +// +// WebMarkupContainer typeContainer = new WebMarkupContainer(ID_TYPE_CONTAINER); +// +// typeContainer.setOutputMarkupId(true); +// typeContainer.add(new VisibleEnableBehaviour() { +// +// private static final long serialVersionUID = 1L; +// +// @Override +// public boolean isVisible() { +// return ObjectPolicyConfigurationTabPanel.this.isTypeVisible(); +// } +// +// }); +// searchContainer.addOrReplace(typeContainer); +// +// this.model.getObject().findContainerWrapper(new ItemPath(ObjectPolicyConfigurationType.F_TYPE)); +// DropDownChoicePanel type = new DropDownChoicePanel(ID_TYPE, +// new IModel() { +// @Override +// public QName getObject() { +// return objectTypeValue; +// } +// +// @Override +// public void setObject(QName objectType) { +// objectTypeValue = objectType; +// } +// +// @Override +// public void detach() { +// +// } +// }, +// new AbstractReadOnlyModel>() { +// +// private static final long serialVersionUID = 1L; +// +// @Override +// public List getObject() { +// return WebComponentUtil.createFocusTypeList(); +// } +// }); +// type.getBaseFormComponent().add(new AjaxFormComponentUpdatingBehavior("change") { +// private static final long serialVersionUID = 1L; +// +// @Override +// protected void onUpdate(AjaxRequestTarget target) { +//// refreshTable(target); +// } +// }); +// type.setOutputMarkupId(true); +// type.setOutputMarkupPlaceholderTag(true); +// typeContainer.addOrReplace(type); +// +// return searchContainer; +// } +} + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ObjectPolicyConfigurationTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ObjectPolicyConfigurationTabPanel.java index a5782766e1b..dd5d6ece768 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ObjectPolicyConfigurationTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ObjectPolicyConfigurationTabPanel.java @@ -95,7 +95,7 @@ /** * @author skublik */ -public class ObjectPolicyConfigurationTabPanel extends BasePanel> { +public class ObjectPolicyConfigurationTabPanel extends BasePanel> { private static final long serialVersionUID = 1L; @@ -103,29 +103,12 @@ public class ObjectPolicyConfigurationTabPanel extends BasePanel> model; private List> detailsPanelObjectPoliciesList = new ArrayList<>(); - public ObjectPolicyConfigurationTabPanel(String id, IModel> model) { + public ObjectPolicyConfigurationTabPanel(String id, IModel> model) { super(id, model); - this.model = new LoadableModel>(false) { - - private static final long serialVersionUID = 1L; - - @Override - protected ContainerWrapper load() { - - ContainerWrapperFromObjectWrapperModel model = new ContainerWrapperFromObjectWrapperModel<>(getModel(), - new ItemPath(SystemConfigurationType.F_DEFAULT_OBJECT_POLICY_CONFIGURATION)); - - return model.getObject(); - } - - }; - } @Override @@ -140,7 +123,7 @@ protected void initLayout() { int itemPerPage = (int) ((PageBase)ObjectPolicyConfigurationTabPanel.this.getPage()).getItemsPerPage(UserProfileStorage.TableId.OBJECT_POLICIES_TAB_TABLE); PageStorage pageStorage = ((PageBase)ObjectPolicyConfigurationTabPanel.this.getPage()).getSessionStorage().getObjectPoliciesConfigurationTabStorage(); - MultivalueContainerListPanel multivalueContainerListPanel = new MultivalueContainerListPanel(ID_OBJECTS_POLICY, model, + MultivalueContainerListPanel multivalueContainerListPanel = new MultivalueContainerListPanel(ID_OBJECTS_POLICY, getModel(), tableId, itemPerPage, pageStorage) { private static final long serialVersionUID = 1L; @@ -194,8 +177,8 @@ protected MultivalueContainerDetailsPanel getMult } protected void newObjectPolicyClickPerformed(AjaxRequestTarget target) { - PrismContainerValue newObjectPolicy = model.getObject().getItem().createNewValue(); - ContainerValueWrapper newObjectPolicyWrapper = getMultivalueContainerListPanel().createNewItemContainerValueWrapper(newObjectPolicy, model); + PrismContainerValue newObjectPolicy = getModel().getObject().getItem().createNewValue(); + ContainerValueWrapper newObjectPolicyWrapper = getMultivalueContainerListPanel().createNewItemContainerValueWrapper(newObjectPolicy, getModel()); newObjectPolicyWrapper.setShowEmpty(true, false); newObjectPolicyWrapper.computeStripes(); getMultivalueContainerListPanel().itemDetailsPerformed(target, Arrays.asList(newObjectPolicyWrapper)); @@ -225,65 +208,25 @@ public ObjectPolicyConfigurationType getObject() { @Override protected Fragment getSpecificContainers(String contentAreaId) { Fragment specificContainers = new Fragment(contentAreaId, ID_SPECIFIC_CONTAINERS_FRAGMENT, ObjectPolicyConfigurationTabPanel.this); - -// Form form = this.findParent(Form.class); -// -// ContainerWrapper constraintsContainer = item.getModelObject().findContainerWrapper(new ItemPath(item.getModelObject().getPath(), ObjectPolicyConfigurationType.F_PROPERTY_CONSTRAINT)); -//// if (constraintsContainer != null){ -//// constraintsContainer.getValues().forEach(value -> -//// ((ContainerValueWrapper)value).getItems().forEach( -//// constraintContainerItem -> { -//// if (constraintContainerItem instanceof ContainerWrapper && ((ContainerWrapper) constraintContainerItem).getItemDefinition().isMultiValue()){ -//// ((ContainerWrapper) constraintContainerItem).setRemoveContainerButtonVisible(true); -//// } -//// } -//// )); -//// } -// constraintsContainer.setShowEmpty(true, false); -// constraintsContainer.setAddContainerButtonVisible(true); -// -// -// IModel> conflictResolutionModel = new AbstractReadOnlyModel>() { -// -// private static final long serialVersionUID = 1L; -// -// @Override -// public ContainerWrapper getObject() { -// return constraintsContainer; -// } -// -// }; -// -// PrismContainerPanel specificContainer = new PrismContainerPanel(ID_SPECIFIC_CONTAINER, conflictResolutionModel, true, form, null, getPageBase()); -// specificContainer.setVisible(true); -//// PrismPanel panel = new PrismPanel(ID_SYSTEM_CONFIG, -//// new ContainerWrapperListFromObjectWrapperModel(getModel(), getVisibleContainers()), null, form, null, getPageBase()); -//// add(panel); -//// -//// ItemPath assignmentPath = getModelObject().getContainerValue().getValue().asPrismContainerValue().getPath(); -//// ContainerWrapperFromObjectWrapperModel activationModel = new ContainerWrapperFromObjectWrapperModel<>(((PageAdminObjectDetails)getPageBase()).getObjectModel(), assignmentPath.append(AssignmentType.F_ACTIVATION)); -//// PrismContainerPanel acitvationContainer = new PrismContainerPanel(ID_ACTIVATION_PANEL, Model.of(activationModel), true, form, itemWrapper -> getActivationVisibileItems(itemWrapper.getPath(), assignmentPath), getPageBase()); -// specificContainers.add(specificContainer); - return specificContainers; } - @Override - protected ContainerValuePanel getBasicContainerValuePanel( - String idPanel) { - - Form form = new Form<>("form"); - ItemPath itemPath = getModelObject().getPath(); - ContainerValueWrapper modelObject = item.getModelObject(); - modelObject.setShowEmpty(true, true); - - ContainerWrapper propertyConstraintModel = modelObject.findContainerWrapper(new ItemPath(modelObject.getPath(), ObjectPolicyConfigurationType.F_PROPERTY_CONSTRAINT)); - propertyConstraintModel.setShowEmpty(true, false); -// propertyConstraintModel.setAddContainerButtonVisible(true); - - return new ContainerValuePanel(idPanel, Model.of(modelObject), true, form, - itemWrapper -> super.getBasicTabVisibity(itemWrapper, itemPath), getPageBase()); - } +// @Override +// protected ContainerValuePanel getBasicContainerValuePanel( +// String idPanel) { +// +// Form form = new Form<>("form"); +// ItemPath itemPath = getModelObject().getPath(); +// ContainerValueWrapper modelObject = item.getModelObject(); +// modelObject.setShowEmpty(true, true); +// +// ContainerWrapper propertyConstraintModel = modelObject.findContainerWrapper(new ItemPath(modelObject.getPath(), ObjectPolicyConfigurationType.F_PROPERTY_CONSTRAINT)); +// propertyConstraintModel.setShowEmpty(true, false); +//// propertyConstraintModel.setAddContainerButtonVisible(true); +// +// return new ContainerValuePanel(idPanel, Model.of(modelObject), true, form, +// itemWrapper -> super.getBasicTabVisibity(itemWrapper, itemPath), getPageBase()); +// } }; return detailsPanel; @@ -383,7 +326,7 @@ public void populateItem(Item menuActionsList = getObjectPolicyMenuActions(); + List menuActionsList = getMultivalueContainerListPanel().getDefaultMenuActions(); columns.add(new InlineMenuButtonColumn<>(menuActionsList, menuActionsList.size(), getPageBase())); return columns; @@ -448,19 +391,5 @@ public void populateItem(Item getObjectPolicyMenuActions() { - List menuItems = new ArrayList<>(); - PrismObject obj = getMultivalueContainerListPanel().getFocusObject(); -// LOGGER.info("XXXXXXXXXXXXXXXXXXX obj.name: " + obj.getName().toString()); - menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.unassign"), new Model<>(true), - new Model<>(true), false, getMultivalueContainerListPanel().createDeleteColumnAction(), 0, GuiStyleConstants.CLASS_DELETE_MENU_ITEM, - DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString())); - - menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.edit"), new Model<>(true), - new Model<>(true), false, getMultivalueContainerListPanel().createEditColumnAction(), 1, GuiStyleConstants.CLASS_EDIT_MENU_ITEM, - DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString())); - return menuItems; - } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/session/GlobalPolicyRulesTabStorage.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/session/GlobalPolicyRulesTabStorage.java new file mode 100644 index 00000000000..77a9f01a125 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/session/GlobalPolicyRulesTabStorage.java @@ -0,0 +1,60 @@ +/* + * 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.evolveum.midpoint.gui.impl.session; + +import com.evolveum.midpoint.prism.query.ObjectPaging; +import com.evolveum.midpoint.web.component.search.Search; +import com.evolveum.midpoint.web.session.PageStorage; + +/** + * @author skublik + */ +public class GlobalPolicyRulesTabStorage implements PageStorage{ + + private ObjectPaging globalPolicyRulesPaging; + + + @Override + public Search getSearch() { + return null; + } + + @Override + public void setSearch(Search search) { + } + + @Override + public ObjectPaging getPaging() { + return globalPolicyRulesPaging; + } + + @Override + public void setPaging(ObjectPaging globalPolicyRulesPaging) { + this.globalPolicyRulesPaging = globalPolicyRulesPaging; + } + + @Override + public String debugDump() { + return debugDump(0); + } + + @Override + public String debugDump(int indent) { + return ""; + } + +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/session/ObjectPoliciesTabStorage.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/session/ObjectPoliciesTabStorage.java index 43f4b58fcf1..af0a1d62cda 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/session/ObjectPoliciesTabStorage.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/session/ObjectPoliciesTabStorage.java @@ -21,7 +21,7 @@ import com.evolveum.midpoint.web.session.PageStorage; /** - * Created by honchar. + * @author skublik */ public class ObjectPoliciesTabStorage implements PageStorage{ diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java index 23d55459c52..70d432272af 100755 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java @@ -176,7 +176,6 @@ private void setRemoveContainerButtonVisibility(ContainerWrapper ((ContainerValueWrapper)value).getItems().forEach( constraintContainerItem -> { if (constraintContainerItem instanceof ContainerWrapper && ((ContainerWrapper) constraintContainerItem).getItemDefinition().isMultiValue()){ -// ((ContainerWrapper) constraintContainerItem).setRemoveContainerButtonVisible(true); } } )); @@ -186,7 +185,6 @@ private void setRemoveContainerButtonVisibility(ContainerWrapper private void setAddContainerButtonVisibility(ContainerWrapper policyRulesContainer){ ContainerWrapper constraintsContainer = policyRulesContainer.findContainerWrapper(new ItemPath(policyRulesContainer.getPath(), PolicyRuleType.F_POLICY_CONSTRAINTS)); constraintsContainer.setShowEmpty(true, false); -// constraintsContainer.setAddContainerButtonVisible(true); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationNew.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationNew.java index 180737c1c52..2868eb41885 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationNew.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationNew.java @@ -17,49 +17,33 @@ package com.evolveum.midpoint.web.page.admin.configuration; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.List; -import javax.xml.namespace.QName; - import com.evolveum.midpoint.web.application.Url; import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; import com.evolveum.midpoint.web.page.admin.configuration.component.*; -import com.evolveum.midpoint.web.page.admin.configuration.dto.*; -import com.evolveum.midpoint.web.page.admin.users.dto.FocusSubwrapperDto; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.lang.StringUtils; import org.apache.wicket.Page; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; import org.apache.wicket.extensions.markup.html.tabs.ITab; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; -import org.apache.wicket.request.resource.PackageResourceReference; -import org.apache.wicket.util.string.StringValue; -import com.evolveum.midpoint.gui.api.GuiStyleConstants; -import com.evolveum.midpoint.gui.api.model.LoadableModel; -import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.util.ModelServiceLocator; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; +import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.GlobalPolicyRuleTabPanel; import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.LoggingConfigPanelNew; import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.NotificationConfigPanelNew; import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.ObjectPolicyConfigurationTabPanel; import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.OneContainerConfigurationPanel; import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.SystemConfigPanelNew; -import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.delta.DiffUtil; -import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; -import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.security.api.AuthorizationConstants; import com.evolveum.midpoint.task.api.Task; @@ -68,27 +52,14 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; -import com.evolveum.midpoint.web.component.AjaxButton; -import com.evolveum.midpoint.web.component.AjaxSubmitButton; -import com.evolveum.midpoint.web.component.FocusSummaryPanel; import com.evolveum.midpoint.web.component.ObjectSummaryPanel; -import com.evolveum.midpoint.web.component.TabbedPanel; -import com.evolveum.midpoint.web.component.assignment.AssignmentEditorDto; -import com.evolveum.midpoint.web.component.form.Form; import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel; import com.evolveum.midpoint.web.component.prism.ContainerStatus; import com.evolveum.midpoint.web.component.prism.ObjectWrapper; import com.evolveum.midpoint.web.component.prism.ObjectWrapperFactory; -import com.evolveum.midpoint.web.component.prism.PrismPanel; -import com.evolveum.midpoint.web.component.prism.PrismValuePanel; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel; -import com.evolveum.midpoint.web.model.ContainerWrapperListFromObjectWrapperModel; -import com.evolveum.midpoint.web.model.ReadOnlyPrismObjectFromObjectWrapperModel; import com.evolveum.midpoint.web.page.error.PageError; -import com.evolveum.midpoint.web.resource.img.ImgResources; -import com.evolveum.midpoint.web.security.MidPointApplication; -import com.evolveum.prism.xml.ns._public.types_3.ItemPathType; /** * @author lazyman @@ -117,38 +88,30 @@ public class PageSystemConfigurationNew extends PageAdminObjectDetails> modelWrapp; - - private boolean initialized; - public PageSystemConfigurationNew() { initialize(null); } @@ -168,54 +131,9 @@ public PageSystemConfigurationNew(final PrismObject uni @Override protected void initializeModel(final PrismObject objectToEdit, boolean isNewObject, boolean isReadonly) { - modelWrapp = new LoadableModel>(false) { - - private static final long serialVersionUID = 1L; - - @Override - protected ObjectWrapper load() { - return loadSystemConfigurationAsWrapperObject(); - } - - }; - super.initializeModel(modelWrapp.getObject().getObject(), false, isReadonly); - - -// projectionModel = new LoadableModel>>(false) { -// private static final long serialVersionUID = 1L; -// -// @Override -// protected List> load() { -// return loadShadowWrappers(); -// } -// }; -// -// delegatedToMeModel= new LoadableModel>(false) { -// -// private static final long serialVersionUID = 1L; -// @Override -// protected List load() { -// return loadDelegatedToMe(); -// } -// }; - + super.initializeModel(loadSystemConfigurationAsWrapperObject().getObject(), false, isReadonly); } -// public PageSystemConfigurationNew(PageParameters parameters) { -// -// modelWrapp = new LoadableModel>(false) { -// -// private static final long serialVersionUID = 1L; -// -// @Override -// protected ObjectWrapper load() { -// return loadSystemConfigurationAsWrapperObject(); -// } -// -// }; -// -// initLayout(); -// } private ObjectWrapper loadSystemConfigurationAsWrapperObject() { Task task = createSimpleTask(TASK_GET_SYSTEM_CONFIG); @@ -267,11 +185,21 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { -// ContainerWrapperFromObjectWrapperModel model = new ContainerWrapperFromObjectWrapperModel<>(modelWrapp, -// new ItemPath(SystemConfigurationType.F_DEFAULT_OBJECT_POLICY_CONFIGURATION)); -// return new ObjectPolicyConfigurationTabPanel(panelId, model); - return new ObjectPolicyConfigurationTabPanel(panelId, getObjectModel()); -// return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_DEFAULT_OBJECT_POLICY_CONFIGURATION); + ContainerWrapperFromObjectWrapperModel model = new ContainerWrapperFromObjectWrapperModel<>(getObjectModel(), + new ItemPath(SystemConfigurationType.F_DEFAULT_OBJECT_POLICY_CONFIGURATION)); + return new ObjectPolicyConfigurationTabPanel(panelId, model); + } + }); + + tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.globalPolicyRule.title")) { + + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer getPanel(String panelId) { + ContainerWrapperFromObjectWrapperModel model = new ContainerWrapperFromObjectWrapperModel<>(getObjectModel(), + new ItemPath(SystemConfigurationType.F_GLOBAL_POLICY_RULE)); + return new GlobalPolicyRuleTabPanel(panelId, model); } }); @@ -281,7 +209,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_GLOBAL_ACCOUNT_SYNCHRONIZATION_SETTINGS); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_GLOBAL_ACCOUNT_SYNCHRONIZATION_SETTINGS); } }); @@ -291,7 +219,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_CLEANUP_POLICY); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_CLEANUP_POLICY); } }); @@ -301,7 +229,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new NotificationConfigPanelNew(panelId, modelWrapp, getPageParameters()); + return new NotificationConfigPanelNew(panelId, getObjectModel(), getPageParameters()); } }); @@ -311,7 +239,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new LoggingConfigPanelNew(panelId, modelWrapp); + return new LoggingConfigPanelNew(panelId, getObjectModel()); } }); @@ -321,7 +249,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_PROFILING_CONFIGURATION); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_PROFILING_CONFIGURATION); } }); @@ -331,7 +259,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_ADMIN_GUI_CONFIGURATION); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_ADMIN_GUI_CONFIGURATION); } }); @@ -341,7 +269,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_WORKFLOW_CONFIGURATION); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_WORKFLOW_CONFIGURATION); } }); @@ -351,7 +279,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_ROLE_MANAGEMENT); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_ROLE_MANAGEMENT); } }); @@ -361,7 +289,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_INTERNALS); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_INTERNALS); } }); @@ -371,7 +299,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_DEPLOYMENT_INFORMATION); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_DEPLOYMENT_INFORMATION); } }); @@ -381,7 +309,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_ACCESS_CERTIFICATION); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_ACCESS_CERTIFICATION); } }); @@ -391,7 +319,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_INFRASTRUCTURE); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_INFRASTRUCTURE); } }); @@ -401,7 +329,7 @@ public WebMarkupContainer getPanel(String panelId) { @Override public WebMarkupContainer getPanel(String panelId) { - return new OneContainerConfigurationPanel(panelId, modelWrapp, SystemConfigurationType.F_FULL_TEXT_SEARCH); + return new OneContainerConfigurationPanel(panelId, getObjectModel(), SystemConfigurationType.F_FULL_TEXT_SEARCH); } }); @@ -409,133 +337,11 @@ public WebMarkupContainer getPanel(String panelId) { return tabs; } -// private void initLayout() { -// -// Form mainForm = new Form<>(ID_MAIN_FORM, true); -// add(mainForm); -// -// -// TabbedPanel tabPanel = new TabbedPanel(ID_TAB_PANEL, tabs) { -// -// private static final long serialVersionUID = 1L; -// -// @Override -// protected void onTabChange(int index) { -// PageParameters params = getPageParameters(); -// params.set(SELECTED_TAB_INDEX, index); -// } -// }; -// tabPanel.setOutputMarkupId(true); -// mainForm.add(tabPanel); -// -// initButtons(mainForm); -// -// } - @Override protected void onBeforeRender() { super.onBeforeRender(); - -// if (!initialized) { -// PageParameters params = getPageParameters(); -// StringValue val = params.get(SELECTED_TAB_INDEX); -// String value = null; -// if (val != null && !val.isNull()) { -// value = val.toString(); -// } -// -// int index = StringUtils.isNumeric(value) ? Integer.parseInt(value) : CONFIGURATION_TAB_BASIC; -// getTabPanel().setSelectedTab(index); -// -// initialized = true; -// } } -// private void initButtons(Form mainForm) { -// AjaxSubmitButton save = new AjaxSubmitButton(ID_SAVE, createStringResource("PageBase.button.save")) { -// -// private static final long serialVersionUID = 1L; -// -// @Override -// protected void onSubmit(AjaxRequestTarget target, -// org.apache.wicket.markup.html.form.Form form) { -// savePerformed(target); -// } -// -// @Override -// protected void onError(AjaxRequestTarget target, org.apache.wicket.markup.html.form.Form form) { -// target.add(getFeedbackPanel()); -// } -// }; -// mainForm.add(save); -// -// AjaxButton cancel = new AjaxButton(ID_CANCEL, createStringResource("PageBase.button.cancel")) { -// -// private static final long serialVersionUID = 1L; -// -// @Override -// public void onClick(AjaxRequestTarget target) { -// cancelPerformed(target); -// } -// }; -// mainForm.add(cancel); -// } -// -// -// private TabbedPanel getTabPanel() { -// return (TabbedPanel) get(createComponentPath(ID_MAIN_FORM, ID_TAB_PANEL)); -// } -// -// -// private void savePerformed(AjaxRequestTarget target) { -// OperationResult result = new OperationResult(TASK_UPDATE_SYSTEM_CONFIG); -// Task task = createSimpleTask(TASK_UPDATE_SYSTEM_CONFIG); -// try { -// -// ObjectDelta delta = ObjectDelta.summarize(modelWrapp.getObject().getOldDelta(), modelWrapp.getObject().getObjectDelta()); -// -// delta.normalize(); -// if (LOGGER.isTraceEnabled()) { -// LOGGER.trace("System configuration delta:\n{}", delta.debugDump()); -// } -// if (!delta.isEmpty()) { -// getPrismContext().adopt(delta); -// getModelService().executeChanges(WebComponentUtil.createDeltaCollection(delta), null, task, result); -// } -// -// result.computeStatusIfUnknown(); -// } catch (Exception e) { -// result.recomputeStatus(); -// result.recordFatalError("Couldn't save system configuration.", e); -// LoggingUtils.logUnexpectedException(LOGGER, "Couldn't save system configuration.", e); -// } -// -// showResult(result); -// target.add(getFeedbackPanel()); -// resetPerformed(target); -// } - -// private void resetPerformed(AjaxRequestTarget target) { -// int index = getTabPanel().getSelectedTab(); -// -// PageParameters params = new PageParameters(); -// StringValue mailServerIndex = target.getPageParameters().get(SELECTED_SERVER_INDEX); -// StringValue mailServerSize = target.getPageParameters().get(SERVER_LIST_SIZE); -// if (mailServerIndex != null && mailServerIndex.toString() != null) { -// params.add(SELECTED_SERVER_INDEX, mailServerIndex); -// } -// if (mailServerSize != null && mailServerSize.toString() != null) { -// params.add(SERVER_LIST_SIZE, mailServerSize); -// } -// params.add(SELECTED_TAB_INDEX, index); -// PageSystemConfigurationNew page = new PageSystemConfigurationNew(params); -// setResponsePage(page); -// } -// -// private void cancelPerformed(AjaxRequestTarget target) { -// resetPerformed(target); -// } - @Override public void finishProcessing(AjaxRequestTarget target, OperationResult result, boolean returningFromAsync) { @@ -553,13 +359,15 @@ protected SystemConfigurationType createNewObject() { @Override protected ObjectSummaryPanel createSummaryPanel() { - return new SystemConfigurationSummaryPanel(ID_SUMM_PANEL, SystemConfigurationType.class, Model.of(modelWrapp.getObject().getObject()), this); + return new SystemConfigurationSummaryPanel(ID_SUMM_PANEL, SystemConfigurationType.class, Model.of(getObjectModel().getObject().getObject()), this); } @Override protected AbstractObjectMainPanel createMainPanel(String id) { - return new AbstractObjectMainPanel(id, modelWrapp, this) { + return new AbstractObjectMainPanel(id, getObjectModel(), this) { + private static final long serialVersionUID = 1L; + @Override protected List createTabs(PageAdminObjectDetails parentPage) { return getTabs(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/SessionStorage.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/SessionStorage.java index 8042a5859a6..9f9d363b680 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/SessionStorage.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/SessionStorage.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Map.Entry; +import com.evolveum.midpoint.gui.impl.session.GlobalPolicyRulesTabStorage; import com.evolveum.midpoint.gui.impl.session.ObjectPoliciesTabStorage; import com.evolveum.midpoint.util.DebugDumpable; import com.evolveum.midpoint.util.DebugUtil; @@ -53,6 +54,7 @@ public class SessionStorage implements Serializable, DebugDumpable { public static final String KEY_INDUCEMENTS_TAB = "inducementsTab"; public static final String KEY_INDUCED_ENTITLEMENTS_TAB = "inducedEntitlementsTab"; public static final String KEY_OBJECT_POLICIES_TAB = "objectPoliciesTab"; + public static final String KEY_GLOBAL_POLICY_RULES_TAB = "globalPolicyRulesTab"; private static final String KEY_TASKS = "tasks"; private static final String KEY_CERT_CAMPAIGNS = "certCampaigns"; @@ -188,6 +190,13 @@ public ObjectPoliciesTabStorage getObjectPoliciesConfigurationTabStorage() { } return (ObjectPoliciesTabStorage)pageStorageMap.get(KEY_OBJECT_POLICIES_TAB); } + + public GlobalPolicyRulesTabStorage getGlobalPolicyRulesTabStorage() { + if (pageStorageMap.get(KEY_GLOBAL_POLICY_RULES_TAB) == null) { + pageStorageMap.put(KEY_GLOBAL_POLICY_RULES_TAB, new GlobalPolicyRulesTabStorage()); + } + return (GlobalPolicyRulesTabStorage)pageStorageMap.get(KEY_GLOBAL_POLICY_RULES_TAB); + } private String getContentStorageKey(ShadowKindType kind, String searchMode) { if (kind == null) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/UserProfileStorage.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/UserProfileStorage.java index d0ebb866929..b7fc74d21e9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/UserProfileStorage.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/UserProfileStorage.java @@ -86,7 +86,8 @@ public enum TableId { INDUCEMENTS_TAB_TABLE, INDUCED_ENTITLEMENTS_TAB_TABLE, POLICY_RULES_TAB_TABLE, - OBJECT_POLICIES_TAB_TABLE + OBJECT_POLICIES_TAB_TABLE, + GLOBAL_POLICY_RULES_TAB_TABLE } private Map tables = new HashMap<>(); diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index d732087dca7..6e09b3ecf3e 100755 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -1087,6 +1087,7 @@ PageAdmin.menu.top.configuration.expressionEvaluator=Expression evaluator PageAdmin.menu.top.configuration.importObject=Import object PageAdmin.menu.top.configuration.internals=Internals configuration PageAdmin.menu.top.configuration.objectPolicy=Object policy +PageAdmin.menu.top.configuration.globalPolicyRule=Global policy rule PageAdmin.menu.top.configuration.globalAccountSynchronization=Global account synchronization PageAdmin.menu.top.configuration.cleanupPolicy=Cleanup Policy PageAdmin.menu.top.configuration.workflow=Workflow configuration @@ -2034,6 +2035,7 @@ pageSystemConfiguration.profiling.title=Profiling pageSystemConfiguration.adminGui.title=Admin GUI pageSystemConfiguration.system.title=System pageSystemConfiguration.objectPolicy.title=Object policy +pageSystemConfiguration.globalPolicyRule.title=Global policy rule pageSystemConfiguration.globalAccountSynchronization.title=Global account synchronization pageSystemConfiguration.cleanupPolicy.title=Cleanup policy pageSystemConfiguration.roleManagement.title=Role management