From 871c9033db773e80ca31c821889033255315cd6a Mon Sep 17 00:00:00 2001 From: kate Date: Thu, 12 Mar 2020 00:24:23 +0100 Subject: [PATCH] MID-6101 Change archetype popup window - filter fix --- .../web/page/admin/PageAdminObjectDetails.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java index 3921d836411..e4c458543dd 100755 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java @@ -32,6 +32,7 @@ import com.evolveum.midpoint.web.security.util.SecurityUtils; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.Page; @@ -407,7 +408,7 @@ public int getRefreshInterval() { } protected void initOperationalButtons(RepeatingView repeatingView){ - if (getObjectArchetypeRef() != null) { + if (getObjectArchetypeRef() != null && CollectionUtils.isNotEmpty(getArchetypeOidsListToAssign())) { AjaxButton changeArchetype = new AjaxButton(repeatingView.newChildId(), createStringResource("PageAdminObjectDetails.button.changeArchetype")) { @Override public void onClick(AjaxRequestTarget target) { @@ -526,7 +527,7 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ if (query == null) { query = getPrismContext().queryFactory().createQuery(); } - List archetypeOidsList = getFilteredArchetypeOidsList(); + List archetypeOidsList = getArchetypeOidsListToAssign(); ObjectFilter filter = getPrismContext().queryFor(ArchetypeType.class) .id(archetypeOidsList.toArray(new String[0])) .buildFilter(); @@ -545,6 +546,18 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ } + private List getArchetypeOidsListToAssign(){ + List archetypeOidsList = getFilteredArchetypeOidsList(); + + ObjectReferenceType archetypeRef = getObjectArchetypeRef(); + if (archetypeRef != null && StringUtils.isNotEmpty(archetypeRef.getOid())){ + if (archetypeOidsList.contains(archetypeRef.getOid())){ + archetypeOidsList.remove(archetypeRef.getOid()); + } + } + return archetypeOidsList; + } + private List getFilteredArchetypeOidsList(){ OperationResult result = new OperationResult(OPERATION_LOAD_FILTERED_ARCHETYPES); PrismObject obj = getObjectWrapper().getObject();