+
-
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java
index 6691412ee13..1657d5a2029 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java
@@ -16,6 +16,10 @@
package com.evolveum.midpoint.web.component.assignment;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
import com.evolveum.midpoint.gui.api.component.AssignmentPopup;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
@@ -25,8 +29,11 @@
import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
+import com.evolveum.midpoint.prism.query.NotFilter;
+import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.constants.RelationTypes;
+import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
@@ -48,11 +55,9 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
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.panel.Fragment;
import org.apache.wicket.markup.repeater.Item;
@@ -64,6 +69,20 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+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.prism.path.ItemPath;
+import com.evolveum.midpoint.prism.query.ObjectPaging;
+import com.evolveum.midpoint.prism.query.ObjectQuery;
+import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
+import com.evolveum.midpoint.util.exception.SchemaException;
+import com.evolveum.midpoint.util.logging.Trace;
+import com.evolveum.midpoint.util.logging.TraceManager;
+import com.evolveum.midpoint.web.component.AjaxButton;
+import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
+import com.evolveum.midpoint.web.session.UserProfileStorage;
+import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
/**
* Created by honchar.
@@ -74,15 +93,11 @@ public class AbstractRoleAssignmentPanel extends AssignmentPanel {
private static final Trace LOGGER = TraceManager.getTrace(AssignmentPanel.class);
- private static final String ID_RELATION = "relation";
- private static final String ID_RELATION_CONTAINER = "relationContainer";
private static final String ID_SHOW_ALL_ASSIGNMENTS_BUTTON = "showAllAssignmentsButton";
protected static final String DOT_CLASS = AbstractRoleAssignmentPanel.class.getName() + ".";
private static final String OPERATION_LOAD_TARGET_REF_OBJECT = DOT_CLASS + "loadAssignmentTargetRefObject";
- private RelationTypes relationValue = null;
-
public AbstractRoleAssignmentPanel(String id, IModel
> assignmentContainerWrapperModel){
super(id, assignmentContainerWrapperModel);
}
@@ -90,55 +105,6 @@ public AbstractRoleAssignmentPanel(String id, IModel relation = WebComponentUtil.createEnumPanel(RelationTypes.class, ID_RELATION,
- WebComponentUtil.createReadonlyModelFromEnum(RelationTypes.class),
- new IModel() {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public RelationTypes getObject() {
- return relationValue;
- }
-
- @Override
- public void setObject(RelationTypes relationTypes) {
- relationValue = relationTypes;
- }
-
- @Override
- public void detach() {
-
- }
- }, this, true,
- createStringResource("RelationTypes.ANY").getString());
- relation.getBaseFormComponent().add(new AjaxFormComponentUpdatingBehavior("change") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- getMultivalueContainerListPanel().refreshTable(target);
- }
- });
- relation.setOutputMarkupId(true);
- relation.setOutputMarkupPlaceholderTag(true);
- relationContainer.addOrReplace(relation);
-
AjaxButton showAllAssignmentsButton = new AjaxButton(ID_SHOW_ALL_ASSIGNMENTS_BUTTON,
createStringResource("AssignmentTablePanel.menu.showAllAssignments")) {
@@ -162,11 +128,6 @@ public boolean isVisible(){
return searchContainer;
}
- private DropDownChoicePanel getRelationPanel() {
- return (DropDownChoicePanel) getAssignmentContainer().get(ID_RELATION_CONTAINER).get(ID_RELATION);
- }
-
-
protected void showAllAssignments(AjaxRequestTarget target) {
PageBase pageBase = getPageBase();
List previewAssignmentsList;
@@ -191,6 +152,11 @@ protected void addPerformed(AjaxRequestTarget target, List newAssignmentsList) {
super.addPerformed(target, newAssignmentsList);
addSelectedAssignmentsPerformed(target, newAssignmentsList);
}
+
+ @Override
+ protected List getAvailableObjectTypesList(){
+ return getObjectTypesList();
+ }
};
popupPanel.setOutputMarkupId(true);
getPageBase().showMainPopup(popupPanel, target);
@@ -317,38 +283,20 @@ protected int getItemsPerPage() {
return (int) getParentPage().getItemsPerPage(UserProfileStorage.TableId.ASSIGNMENTS_TAB_TABLE);
}
- protected ObjectQuery createObjectQuery() {
- QName relation = getRelation();
- if (PrismConstants.Q_ANY.equals(relation)) {
- Collection delegationRelations = getParentPage().getRelationRegistry()
- .getAllRelationsFor(RelationKindType.DELEGATION);
- return QueryBuilder.queryFor(AssignmentType.class, getParentPage().getPrismContext())
- .block()
- .not()
- .item(new ItemPath(AssignmentType.F_CONSTRUCTION, ConstructionType.F_RESOURCE_REF))
- .isNull()
- .endBlock()
- .and()
- .block()
- .not()
- .item(new ItemPath(AssignmentType.F_TARGET_REF))
- .ref(delegationRelations.toArray(new QName[0]))
- .endBlock()
- .and()
- .not()
- .exists(AssignmentType.F_POLICY_RULE)
- .build();
- } else {
- return QueryBuilder.queryFor(AssignmentType.class, getParentPage().getPrismContext())
- .item(new ItemPath(AssignmentType.F_TARGET_REF))
- .ref(relation)
- .build();
- }
- }
-
- private QName getRelation() {
- return relationValue == null ? PrismConstants.Q_ANY : relationValue.getRelation();
- }
+ protected ObjectQuery createObjectQuery() {
+ Collection delegationRelations = getParentPage().getRelationRegistry()
+ .getAllRelationsFor(RelationKindType.DELEGATION);
+ ObjectFilter deputyFilter = QueryBuilder.queryFor(AssignmentType.class, getParentPage().getPrismContext())
+ .item(new ItemPath(AssignmentType.F_TARGET_REF))
+ .ref(delegationRelations.toArray(new QName[0]))
+ .buildFilter();
+ ObjectQuery query = QueryBuilder.queryFor(AssignmentType.class, getParentPage().getPrismContext())
+ .not()
+ .exists(AssignmentType.F_POLICY_RULE)
+ .build();
+ query.addFilter(NotFilter.createNot(deputyFilter));
+ return query;
+ }
private IModel getTenantLabelModel(ContainerValueWrapper assignmentContainer){
if (assignmentContainer == null || assignmentContainer.getContainerValue() == null){
@@ -391,10 +339,6 @@ private IModel getIdentifierLabelModel(ContainerV
return Model.of("");
}
- protected boolean isRelationVisible() {
- return true;
- }
-
protected List getObjectTypesList(){
return WebComponentUtil.createAssignableTypesList();
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.html
index f64543eeb05..5da148bb8eb 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.html
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.html
@@ -21,31 +21,7 @@
-
+
-
\ No newline at end of file
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 c2166cc9adf..049d7844abe 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
@@ -252,9 +252,12 @@ private MultivalueContainerDetailsPanel createMultivalueContaine
@Override
protected ItemVisibility getBasicTabVisibity(ItemWrapper itemWrapper, ItemPath parentAssignmentPath) {
- PrismContainerValue prismContainerValue = item.getModelObject().getContainerValue();
- ItemPath assignmentPath = item.getModelObject().getContainerValue().getValue().asPrismContainerValue().getPath();
- return getAssignmentBasicTabVisibity(itemWrapper, parentAssignmentPath, assignmentPath, prismContainerValue);
+ return AssignmentPanel.this.getBasicTabVisibity(itemWrapper, parentAssignmentPath, item.getModel());
+ }
+
+ @Override
+ protected void addBasicContainerValuePanel(String idPanel) {
+ add(getBasicContainerPanel(idPanel, item.getModel()));
}
@Override
@@ -293,6 +296,20 @@ protected IModel getKindIntentLabelModel() {
};
return detailsPanel;
}
+
+ private ItemVisibility getBasicTabVisibity(ItemWrapper itemWrapper, ItemPath parentAssignmentPath, IModel> model) {
+ PrismContainerValue prismContainerValue = model.getObject().getContainerValue();
+ ItemPath assignmentPath = model.getObject().getContainerValue().getValue().asPrismContainerValue().getPath();
+ return getAssignmentBasicTabVisibity(itemWrapper, parentAssignmentPath, assignmentPath, prismContainerValue);
+ }
+
+ protected ContainerValuePanel getBasicContainerPanel(String idPanel, IModel> model) {
+ Form form = new Form<>("form");
+ ItemPath itemPath = getModelObject().getPath();
+ model.getObject().getContainer().setShowOnTopLevel(true);
+ return new ContainerValuePanel(idPanel, model, true, form,
+ itemWrapper -> getBasicTabVisibity(itemWrapper, itemPath, model), getPageBase());
+ }
private QName getRelationForDisplayNamePanel(ContainerValueWrapper modelObject) {
AssignmentType assignment = modelObject.getContainerValue().getValue();
@@ -478,6 +495,10 @@ public InlineMenuItemAction initAction() {
protected MultivalueContainerListPanelWithDetailsPanel getMultivalueContainerListPanel() {
return ((MultivalueContainerListPanelWithDetailsPanel)get(ID_ASSIGNMENTS));
}
+
+ protected MultivalueContainerDetailsPanel getMultivalueContainerDetailsPanel() {
+ return ((MultivalueContainerDetailsPanel)get(MultivalueContainerListPanelWithDetailsPanel.ID_ITEM_DETAILS));
+ }
protected abstract TableId getTableId();
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/GdprAssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/GdprAssignmentPanel.java
index fcabc78eba3..e8209a7408b 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/GdprAssignmentPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/GdprAssignmentPanel.java
@@ -95,11 +95,6 @@ public Boolean getObject() {
return columns;
}
- @Override
- protected boolean isRelationVisible() {
- return false;
- }
-
// @Override
// protected void addSelectedAssignmentsPerformed(AjaxRequestTarget target, List assignmentsList,
// QName relation, ShadowKindType kind, String intent) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementDetailsPanel.java
deleted file mode 100644
index 7c0edb6519a..00000000000
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementDetailsPanel.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2010-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.web.component.assignment;
-
-import com.evolveum.midpoint.prism.path.ItemPath;
-import com.evolveum.midpoint.web.component.form.Form;
-import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper;
-import com.evolveum.midpoint.web.component.prism.ContainerWrapper;
-import com.evolveum.midpoint.web.component.prism.PrismContainerPanel;
-import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-
-/**
- * Created by honchar.
- */
-public class InducedEntitlementDetailsPanel extends InducementDetailsPanel {
- private static final long serialVersionUID = 1L;
-
- public InducedEntitlementDetailsPanel(String id, Form> form, IModel> assignmentModel) {
- super(id, form, assignmentModel);
- }
-
- @Override
- protected void initContainersPanel(Form form, PageAdminObjectDetails pageBase) {
- ContainerWrapper constructionContainer = getModelObject().findContainerWrapper(getModelObject().getPath().append((AssignmentType.F_CONSTRUCTION)));
- ConstructionAssociationPanel constructionDetailsPanel = new ConstructionAssociationPanel(ID_SPECIFIC_CONTAINERS, Model.of(constructionContainer));
- constructionDetailsPanel.setOutputMarkupId(true);
- add(constructionDetailsPanel);
- }
-
-}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.html
new file mode 100644
index 00000000000..dca07d22875
--- /dev/null
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java
index 5ed71e3d4f4..8574098f683 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java
@@ -16,6 +16,7 @@
package com.evolveum.midpoint.web.component.assignment;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.gui.impl.component.MultivalueContainerDetailsPanel;
import com.evolveum.midpoint.gui.impl.session.ObjectTabStorage;
import com.evolveum.midpoint.prism.query.AndFilter;
import com.evolveum.midpoint.prism.query.ObjectFilter;
@@ -25,9 +26,11 @@
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
+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.ValueStatus;
+import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.ExpressionUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
@@ -37,6 +40,7 @@
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.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
@@ -52,6 +56,8 @@
public class InducedEntitlementsPanel extends InducementsPanel{
private static final long serialVersionUID = 1L;
+
+ private static final String ID_ASSIGNMENT_DETAILS = "assignmentDetails";
private static final Trace LOGGER = TraceManager.getTrace(InducedEntitlementsPanel.class);
@@ -124,26 +130,35 @@ public void populateItem(Item modelObject) {
Fragment specificContainers = new Fragment(contentAreaId, AssignmentPanel.ID_SPECIFIC_CONTAINERS_FRAGMENT, this);
specificContainers.add(getConstructionAssociationPanel(modelObject));
+
+ specificContainers.add(super.getBasicContainerPanel(ID_ASSIGNMENT_DETAILS, new Model(modelObject)));
return specificContainers;
}
+
+
+ @Override
+ protected ContainerValuePanel getBasicContainerPanel(String idPanel,
+ IModel> model) {
+ ContainerValuePanel panel = super.getBasicContainerPanel(idPanel, model);
+ panel.add(new VisibleEnableBehaviour() {
+ @Override
+ public boolean isVisible() {
+ return false;
+ }
+ });
+ return panel;
+ }
+
private ConstructionAssociationPanel getConstructionAssociationPanel(ContainerValueWrapper modelObject) {
ContainerWrapper constructionContainer = modelObject.findContainerWrapper(modelObject.getPath().append((AssignmentType.F_CONSTRUCTION)));
ConstructionAssociationPanel constructionDetailsPanel = new ConstructionAssociationPanel(AssignmentPanel.ID_SPECIFIC_CONTAINER, Model.of(constructionContainer));
@@ -151,11 +166,6 @@ private ConstructionAssociationPanel getConstructionAssociationPanel(ContainerVa
return constructionDetailsPanel;
}
- @Override
- protected boolean isRelationVisible() {
- return false;
- }
-
protected List getObjectTypesList(){
return Arrays.asList(ObjectTypes.RESOURCE);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducementsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducementsPanel.java
index 32dbdf4ad3e..ee59710fce0 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducementsPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducementsPanel.java
@@ -39,7 +39,6 @@ public InducementsPanel(String id, IModel> indu
@Override
protected void initCustomPaging() {
getInducementsTabStorage().setPaging(ObjectPaging.createPaging(0, getItemsPerPage()));
-
}
@Override
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.html
index c0fd34fe38a..982b1d55091 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.html
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.html
@@ -20,7 +20,7 @@
-
+