From 3ba4f5730435a283662c8afc2339ee000e65dfcc Mon Sep 17 00:00:00 2001 From: kate Date: Fri, 22 Feb 2019 10:31:41 +0100 Subject: [PATCH] data protection panel fix --- .../api/component/AbstractPopupTabPanel.java | 15 ++++-- .../gui/api/component/AssignmentPopup.java | 15 ++++++ .../component/assignment/AssignmentPanel.java | 9 ++++ .../GenericAbstractRoleAssignmentPanel.java | 25 +++++++++ .../assignment/SwitchAssignmentTypePanel.html | 1 + .../assignment/SwitchAssignmentTypePanel.java | 32 ++++++++++++ .../objectdetails/FocusMainPanel.java | 51 ------------------- 7 files changed, 94 insertions(+), 54 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AbstractPopupTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AbstractPopupTabPanel.java index ada1796ebb2..057c63a6d15 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AbstractPopupTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AbstractPopupTabPanel.java @@ -92,6 +92,9 @@ protected IModel getCheckBoxEnableModel(IModel> rowMo @Override protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { ObjectQuery queryWithFilters = AbstractPopupTabPanel.this.addFilterToContentQuery(query); + if (queryWithFilters == null){ + queryWithFilters = getPrismContext().queryFactory().createQuery(); + } List archetypeRefList = getArchetypeRefList(); if (!CollectionUtils.isEmpty(archetypeRefList)){ List archetypeRefFilterList = new ArrayList<>(); @@ -105,14 +108,16 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { archetypeRefFilterList.add(filter); } if (!CollectionUtils.isEmpty(archetypeRefFilterList)){ - if (queryWithFilters == null){ - queryWithFilters = getPrismContext().queryFactory().createQuery(); - } OrFilter archetypeRefOrFilter = AbstractPopupTabPanel.this.getPageBase().getPrismContext().queryFactory().createOr(archetypeRefFilterList); queryWithFilters.addFilter(archetypeRefOrFilter); } } + + ObjectFilter subTypeFilter = getSubtypeFilter(); + if (subTypeFilter != null){ + queryWithFilters.addFilter(subTypeFilter); + } return queryWithFilters; } @@ -160,6 +165,10 @@ protected List getArchetypeRefList(){ return null; } + protected ObjectFilter getSubtypeFilter(){ + return null; + } + protected boolean isObjectListPanelVisible(){ return true; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java index ae9709d2826..f4389b1d155 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java @@ -19,6 +19,7 @@ import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.schema.constants.ObjectTypes; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.TabbedPanel; @@ -201,6 +202,11 @@ protected QName getPredefinedRelation() { protected List getArchetypeRefList(){ return AssignmentPopup.this.getArchetypeRefList(); } + + @Override + protected ObjectFilter getSubtypeFilter(){ + return AssignmentPopup.this.getSubtypeFilter(); + } }; } @@ -246,6 +252,11 @@ protected QName getPredefinedRelation() { protected List getArchetypeRefList(){ return AssignmentPopup.this.getArchetypeRefList(); } + + @Override + protected ObjectFilter getSubtypeFilter(){ + return AssignmentPopup.this.getSubtypeFilter(); + } }; } @@ -345,6 +356,10 @@ protected List getArchetypeRefList(){ return null; } + protected ObjectFilter getSubtypeFilter(){ + return null; + } + private boolean isTabVisible(ObjectTypes objectType){ List availableObjectTypesList = getAvailableObjectTypesList(); return availableObjectTypesList == null || availableObjectTypesList.size() == 0 || availableObjectTypesList.contains(objectType); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java index 3c611c552cd..3551b96d040 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java @@ -422,6 +422,11 @@ protected List getArchetypeRefList(){ return assignmentTargetRelation != null ? assignmentTargetRelation.getArchetypeRefs() : null; } + @Override + protected ObjectFilter getSubtypeFilter(){ + return AssignmentPanel.this.getSubtypeFilter(); + } + @Override protected boolean isEntitlementAssignment(){ return AssignmentPanel.this.isEntitlementAssignment(); @@ -936,4 +941,8 @@ protected boolean isAssignmentsLimitReached(int selectedAssignmentsCount, boolea return actionPerformed ? (changedItems + selectedAssignmentsCount) > assignmentsRequestsLimit : (changedItems + selectedAssignmentsCount) >= assignmentsRequestsLimit; } + + protected ObjectFilter getSubtypeFilter(){ + return null; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/GenericAbstractRoleAssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/GenericAbstractRoleAssignmentPanel.java index b6b8e889ad6..1f2712f188b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/GenericAbstractRoleAssignmentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/GenericAbstractRoleAssignmentPanel.java @@ -16,10 +16,17 @@ package com.evolveum.midpoint.web.component.assignment; import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.List; +import com.evolveum.midpoint.prism.PrismConstants; +import com.evolveum.midpoint.prism.query.ObjectFilter; +import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.prism.query.RefFilter; import com.evolveum.midpoint.schema.util.FocusTypeUtil; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.RelationKindType; import org.apache.wicket.model.IModel; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; @@ -71,4 +78,22 @@ protected List> customPostSearch(List
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.java index 532c769cb3f..fca0aa6dad8 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.java @@ -18,6 +18,7 @@ import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectQuery; @@ -65,6 +66,7 @@ public class SwitchAssignmentTypePanel extends BasePanel + WebModelServiceUtils.isEnableExperimentalFeature(SwitchAssignmentTypePanel.this.getPageBase()))); + buttonsContainer.add(dataProtectionButton); + AjaxButton entitlementAssignmentsButton = new AjaxButton(ID_ENTITLEMENT_ASSIGNMENTS, createStringResource("AbstractRoleMainPanel.inducedEntitlements")) { private static final long serialVersionUID = 1L; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusMainPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusMainPanel.java index 1febd3f4999..434573533ad 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusMainPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusMainPanel.java @@ -209,18 +209,6 @@ protected WebMarkupContainer createFocusAssignmentsTabPanel(String panelId, Page assignmentsTabPanel = new FocusAssignmentsTabPanel<>(panelId, getMainForm(), getObjectModel(), parentPage); return assignmentsTabPanel; } - -// protected WebMarkupContainer createFocusDataProtectionTabPanel(String panelId, PageAdminObjectDetails parentPage) { -// assignmentsTabPanel = new FocusAssignmentsTabPanel(panelId, getMainForm(), getObjectModel(), parentPage) { -// -// @Override -// protected SwitchAssignmentTypePanel createPanel(String panelId, ContainerWrapperFromObjectWrapperModel model) { -// return new GenericAbstractRoleAssignmentPanel(panelId, model); -// } -// -// }; -// return assignmentsTabPanel; -// } protected WebMarkupContainer createObjectHistoryTabPanel(String panelId, PageAdminObjectDetails parentPage) { return new ObjectHistoryTabPanel(panelId, getMainForm(), getObjectModel(), parentPage){ @@ -294,45 +282,6 @@ public String getCount() { return Integer.toString(countAssignments()); } }); - - authorization = new FocusTabVisibleBehavior<>(unwrapModel(), ComponentConstants.UI_FOCUS_TAB_ASSIGNMENTS_URL, false, isFocusHistoryPage(), parentPage); - - if (WebModelServiceUtils.isEnableExperimentalFeature(parentPage)) { -// tabs.add(new CountablePanelTab(parentPage.createStringResource("pageAdminFocus.dataProtection"), authorization) { -// -// private static final long serialVersionUID = 1L; -// -// @Override -// public WebMarkupContainer createPanel(String panelId) { -// return createFocusDataProtectionTabPanel(panelId, parentPage); -// } -// -// @Override -// public String getCount() { -// PrismObject focus = getObjectModel().getObject().getObject(); -// List assignments = focus.asObjectable().getAssignment(); -// int count = 0; -// for (AssignmentType assignment : assignments) { -// if (assignment.getTargetRef() == null) { -// continue; -// } -// if (QNameUtil.match(assignment.getTargetRef().getType(), OrgType.COMPLEX_TYPE)) { -// Task task = parentPage.createSimpleTask("load data protection obejcts"); -// PrismObject org = WebModelServiceUtils.loadObject(assignment.getTargetRef(), parentPage, -// task, task.getResult()); -// -// if (org != null) { -// if (FocusTypeUtil.determineSubTypes(org).contains("access")) { -// count++; -// } -// } -// } -// } -// -// return String.valueOf(count); -// } -// }); - } if (WebComponentUtil.isAuthorized(ModelAuthorizationAction.AUDIT_READ.getUrl()) && getObjectWrapper().getStatus() != ContainerStatus.ADDING){ authorization = new FocusTabVisibleBehavior<>(unwrapModel(), ComponentConstants.UI_FOCUS_TAB_OBJECT_HISTORY_URL, false, isFocusHistoryPage(), parentPage);