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 ba240e6471a..eee4756a438 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 @@ -17,10 +17,14 @@ import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.prism.query.RefFilter; import com.evolveum.midpoint.schema.constants.ObjectTypes; import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; +import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentHolderType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; +import org.apache.commons.collections.CollectionUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.WebMarkupContainer; @@ -83,7 +87,22 @@ protected IModel getCheckBoxEnableModel(IModel> rowMo @Override protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { - return AbstractPopupTabPanel.this.addFilterToContentQuery(query); + ObjectQuery queryWithFilters = AbstractPopupTabPanel.this.addFilterToContentQuery(query); + List archetypeRefList = getArchetypeRefList(); + if (!CollectionUtils.isEmpty(archetypeRefList)){ + if (queryWithFilters == null){ + queryWithFilters = getPrismContext().queryFactory().createQuery(); + } + for (ObjectReferenceType archetypeRef : archetypeRefList){ + RefFilter filter = (RefFilter) AbstractPopupTabPanel.this.getPageBase().getPrismContext().queryFor(AssignmentHolderType.class) + .item(AssignmentHolderType.F_ARCHETYPE_REF).ref(archetypeRef.getOid()) + .buildFilter(); + filter.setTargetTypeNullAsAny(true); + filter.setRelationNullAsAny(true); + queryWithFilters.addFilter(filter); + } + } + return queryWithFilters; } }; @@ -126,6 +145,10 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ return query; } + protected List getArchetypeRefList(){ + 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 c97dd8be2db..ae9709d2826 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 @@ -146,6 +146,11 @@ protected ContainerWrapper getAssignmentWrapperModel() { protected QName getPredefinedRelation() { return AssignmentPopup.this.getPredefinedRelation(); } + + @Override + protected List getArchetypeRefList(){ + return AssignmentPopup.this.getArchetypeRefList(); + } }; } @@ -191,6 +196,11 @@ protected ContainerWrapper getAssignmentWrapperModel() { protected QName getPredefinedRelation() { return AssignmentPopup.this.getPredefinedRelation(); } + + @Override + protected List getArchetypeRefList(){ + return AssignmentPopup.this.getArchetypeRefList(); + } }; } @@ -231,6 +241,11 @@ protected ContainerWrapper getAssignmentWrapperModel() { protected QName getPredefinedRelation() { return AssignmentPopup.this.getPredefinedRelation(); } + + @Override + protected List getArchetypeRefList(){ + return AssignmentPopup.this.getArchetypeRefList(); + } }; } @@ -271,6 +286,10 @@ protected QName getPredefinedRelation() { return AssignmentPopup.this.getPredefinedRelation(); } + @Override + protected List getArchetypeRefList(){ + return AssignmentPopup.this.getArchetypeRefList(); + } }; } @@ -301,6 +320,11 @@ protected void onSelectionPerformed(AjaxRequestTarget target, IModel getArchetypeRefList(){ + return AssignmentPopup.this.getArchetypeRefList(); + } }; } @@ -317,6 +341,10 @@ protected ContainerWrapper getAssignmentWrapperModel(){ return null; } + protected List getArchetypeRefList(){ + 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 6d53934025a..34c625d7e44 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 @@ -459,9 +459,16 @@ protected List getAvailableObjectTypesList(){ @Override protected QName getPredefinedRelation(){ + if (assignmentTargetRelation == null){ + return null; + } return !CollectionUtils.isEmpty(assignmentTargetRelation.getRelations()) ? assignmentTargetRelation.getRelations().get(0) : null; } + @Override + protected List getArchetypeRefList(){ + return assignmentTargetRelation != null ? assignmentTargetRelation.getArchetypeRefs() : null; + } @Override protected boolean isEntitlementAssignment(){