Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Aug 20, 2018
2 parents 81d6c32 + 3a73155 commit de53336
Show file tree
Hide file tree
Showing 8 changed files with 144 additions and 96 deletions.
Expand Up @@ -23,6 +23,7 @@
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.schema.constants.RelationTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.LoggingUtils;
Expand All @@ -44,6 +45,7 @@
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;

import com.evolveum.midpoint.gui.api.component.tabs.CountablePanelTab;
import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
Expand All @@ -53,12 +55,14 @@
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
import com.evolveum.midpoint.web.page.admin.PageAdminFocus;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
import com.evolveum.midpoint.web.page.admin.roles.RoleGovernanceMemberPanel;
import com.evolveum.midpoint.web.page.admin.users.component.AbstractRoleMemberPanel;
import com.evolveum.midpoint.web.page.admin.users.dto.FocusSubwrapperDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.markup.html.WebMarkupContainer;

import java.util.ArrayList;
import java.util.List;

/**
Expand Down Expand Up @@ -295,10 +299,31 @@ public boolean isVisible() {
isAllowedToReadRoleMembership(getObjectWrapper().getOid(), parentPage);
}
});

authorization = new FocusTabVisibleBehavior<>(unwrapModel(),
ComponentConstants.UI_FOCUS_TAB_GOVERNANCE_URL, false, isFocusHistoryPage());

tabs.add(new PanelTab(parentPage.createStringResource("pageRole.governance"), authorization) {

private static final long serialVersionUID = 1L;

@Override
public WebMarkupContainer createPanel(String panelId) {
return createGovernancePanel(panelId);
}

@Override
public boolean isVisible() {
return super.isVisible() && getObjectWrapper().getStatus() != ContainerStatus.ADDING;
}
});

return tabs;
}

public abstract AbstractRoleMemberPanel<R> createGovernancePanel(String panelId);


private boolean isAllowedToReadRoleMembership(String abstractRoleOid, PageBase parentPage){
return isAllowedToReadRoleMembershipItemForType(abstractRoleOid, UserType.class, parentPage)
|| isAllowedToReadRoleMembershipItemForType(abstractRoleOid, RoleType.class, parentPage)
Expand Down
Expand Up @@ -26,7 +26,9 @@
import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.util.FocusTabVisibleBehavior;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.schema.constants.RelationTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.web.component.prism.ContainerStatus;
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
import com.evolveum.midpoint.web.page.admin.PageAdminFocus;
Expand All @@ -35,6 +37,7 @@
import com.evolveum.midpoint.web.page.admin.roles.RoleMemberPanel;
import com.evolveum.midpoint.web.page.admin.users.component.AbstractRoleMemberPanel;
import com.evolveum.midpoint.web.page.admin.users.dto.FocusSubwrapperDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AreaCategoryType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;

Expand All @@ -51,45 +54,20 @@ public RoleMainPanel(String id, LoadableModel<ObjectWrapper<RoleType>> objectMod
super(id, objectModel, projectionModel, parentPage);
}

@Override
protected List<ITab> createTabs(final PageAdminObjectDetails<RoleType> parentPage) {
List<ITab> tabs = super.createTabs(parentPage);

FocusTabVisibleBehavior<RoleType> authorization = new FocusTabVisibleBehavior<>(unwrapModel(),
ComponentConstants.UI_FOCUS_TAB_GOVERNANCE_URL, false, isFocusHistoryPage());

tabs.add(new PanelTab(parentPage.createStringResource("pageRole.governance"), authorization) {

private static final long serialVersionUID = 1L;

@Override
public WebMarkupContainer createPanel(String panelId) {
return createGovernancePanel(panelId);
}

@Override
public boolean isVisible() {
return super.isVisible() && getObjectWrapper().getStatus() != ContainerStatus.ADDING;
}
});

return tabs;
}

@Override
public AbstractRoleMemberPanel<RoleType> createMemberPanel(String panelId) {
return new RoleMemberPanel(panelId, new Model<>(getObject().asObjectable()));
OperationResult result = new OperationResult("Create relation list");
return new RoleMemberPanel(panelId, new Model<>(getObject().asObjectable()), WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.ADMINISTRATION, result, getDetailsPage()));
}

@Override
public AbstractRoleMemberPanel<RoleType> createGovernancePanel(String panelId) {
List<RelationTypes> relationsList = new ArrayList<>();
relationsList.add(RelationTypes.APPROVER);
relationsList.add(RelationTypes.OWNER);
relationsList.add(RelationTypes.MANAGER);
// List<RelationTypes> relationsList = new ArrayList<>();
// relationsList.add(RelationTypes.APPROVER);
// relationsList.add(RelationTypes.OWNER);
// relationsList.add(RelationTypes.MANAGER);

return new RoleGovernanceMemberPanel(panelId, new Model<>(getObject().asObjectable()), relationsList);
OperationResult result = new OperationResult("Create relation list");
return new RoleGovernanceMemberPanel(panelId, new Model<>(getObject().asObjectable()), WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.GOVERNANCE, result, getDetailsPage()));
}



}
Expand Up @@ -23,6 +23,7 @@
import javax.xml.namespace.QName;

import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AreaCategoryType;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
Expand All @@ -41,14 +42,14 @@
/**
* Created by honchar.
*/
public class RoleGovernanceMemberPanel extends RoleMemberPanel<RoleType> {
public class RoleGovernanceMemberPanel<R extends AbstractRoleType> extends RoleMemberPanel<R> {

private static final long serialVersionUID = 1L;

private static final Trace LOGGER = TraceManager.getTrace(RoleGovernanceMemberPanel.class);
private static final String DOT_CLASS = RoleGovernanceMemberPanel.class.getName() + ".";

public RoleGovernanceMemberPanel(String id, IModel<RoleType> model, List<RelationTypes> relations) {
public RoleGovernanceMemberPanel(String id, IModel<R> model, List<QName> relations) {
super(id, model, relations);
}

Expand Down
Expand Up @@ -82,7 +82,7 @@ public RoleMemberPanel(String id, IModel<T> model) {
super(id, TableId.ROLE_MEMEBER_PANEL, model);
}

public RoleMemberPanel(String id, IModel<T> model, List<RelationTypes> relations) {
public RoleMemberPanel(String id, IModel<T> model, List<QName> relations) {
super(id, TableId.ROLE_MEMEBER_PANEL, model, relations);
}

Expand All @@ -102,43 +102,6 @@ protected PrismContext getPrismContext() {
return getPageBase().getPrismContext();
}

private <V> DropDownChoice<V> createDropDown(String id, IModel<V> defaultModel, final List<V> values,
IChoiceRenderer<V> renderer) {
DropDownChoice<V> listSelect = new DropDownChoice<>(id, defaultModel,
new AbstractReadOnlyModel<List<V>>() {
private static final long serialVersionUID = 1L;

@Override
public List<V> getObject() {
return values;
}
}, renderer);

listSelect.add(new OnChangeAjaxBehavior() {
private static final long serialVersionUID = 1L;

@Override
protected void onUpdate(AjaxRequestTarget target) {
refreshTable(target);
}
});

return listSelect;
}

protected void refreshTable(AjaxRequestTarget target) {
DropDownChoice<QName> typeChoice = (DropDownChoice) get(createComponentPath(ID_OBJECT_TYPE));
QName type = typeChoice.getModelObject();
getMemberTable().clearCache();
getMemberTable().refreshTable(WebComponentUtil.qnameToClass(getPrismContext(), type, FocusType.class), target);
}



private MainObjectListPanel<FocusType> getMemberTable() {
return (MainObjectListPanel<FocusType>) get(createComponentPath(ID_FORM, ID_CONTAINER_MEMBER, ID_MEMBER_TABLE));
}

protected AssignmentType createMemberAssignmentToModify(QName relation) throws SchemaException {
AssignmentType assignmentToModify = createAssignmentToModify(relation);

Expand Down Expand Up @@ -177,16 +140,9 @@ protected ObjectQuery createAllMemberQuery(List<QName> relations) {

private List<PrismReferenceValue> createReferenceValuesList(List<QName> relations) {
List<PrismReferenceValue> referenceValuesList = new ArrayList<>();
if (relations != null && relations.size() > 0){
if (!CollectionUtils.isEmpty(relations)) {
for (QName relation : relations) {
for (QName relation : relations) {
referenceValuesList.add(createReference(relation).asReferenceValue());
}
}
} else {
referenceValuesList.add(createReference().asReferenceValue());
}

return referenceValuesList;

}
Expand Down Expand Up @@ -263,6 +219,43 @@ public void onUpdate(AjaxRequestTarget target) {
indirectMembersContainer.add(includeIndirectMembers);

}

private <V> DropDownChoice<V> createDropDown(String id, IModel<V> defaultModel, final List<V> values,
IChoiceRenderer<V> renderer) {
DropDownChoice<V> listSelect = new DropDownChoice<>(id, defaultModel,
new AbstractReadOnlyModel<List<V>>() {
private static final long serialVersionUID = 1L;

@Override
public List<V> getObject() {
return values;
}
}, renderer);

listSelect.add(new OnChangeAjaxBehavior() {
private static final long serialVersionUID = 1L;

@Override
protected void onUpdate(AjaxRequestTarget target) {
refreshTable(target);
}
});

return listSelect;
}

protected void refreshTable(AjaxRequestTarget target) {
DropDownChoice<QName> typeChoice = (DropDownChoice) get(createComponentPath(ID_OBJECT_TYPE));
QName type = typeChoice.getModelObject();
getMemberTable().clearCache();
getMemberTable().refreshTable(WebComponentUtil.qnameToClass(getPrismContext(), type, FocusType.class), target);
}



private MainObjectListPanel<FocusType> getMemberTable() {
return (MainObjectListPanel<FocusType>) get(createComponentPath(ID_FORM, ID_CONTAINER_MEMBER, ID_MEMBER_TABLE));
}

private ChooseTypePanel<OrgType> createParameterPanel(String id, boolean isTenant) {

Expand Down Expand Up @@ -379,15 +372,7 @@ protected void recomputeMembersPerformed(QueryScope scope, AjaxRequestTarget tar
@Override
protected ObjectQuery createContentQuery() {
boolean indirect = ((IsolatedCheckBoxPanel) get(createComponentPath(ID_INDIRECT_MEMBERS_CONTAINER, ID_INDIRECT_MEMBERS))).getValue();

List<QName> relationList = new ArrayList<>();
if (relations != null) {
for (RelationTypes relation: relations) {
relationList.add(relation.getRelation());
}
}

return indirect ? createAllMemberQuery(relationList) : createDirectMemberQuery(relationList);
return indirect ? createAllMemberQuery(relations) : createDirectMemberQuery(relations);

}

Expand Down
Expand Up @@ -15,7 +15,9 @@
*/
package com.evolveum.midpoint.web.page.admin.services;

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
Expand All @@ -26,10 +28,13 @@
import com.evolveum.midpoint.web.page.admin.PageAdminAbstractRole;
import com.evolveum.midpoint.web.page.admin.roles.PageRole;
import com.evolveum.midpoint.web.page.admin.roles.PageRoleHistory;
import com.evolveum.midpoint.web.page.admin.roles.RoleGovernanceMemberPanel;
import com.evolveum.midpoint.web.page.admin.roles.RoleMemberPanel;
import com.evolveum.midpoint.web.page.admin.users.component.AbstractRoleMemberPanel;
import com.evolveum.midpoint.web.page.admin.users.component.ServiceMemberPanel;
import com.evolveum.midpoint.web.page.admin.users.component.ServiceSummaryPanel;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AreaCategoryType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ServiceType;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -92,7 +97,17 @@ protected AbstractObjectMainPanel<ServiceType> createMainPanel(String id) {

@Override
public AbstractRoleMemberPanel<ServiceType> createMemberPanel(String panelId) {
return new ServiceMemberPanel(panelId, Model.of(getObject().asObjectable()));
OperationResult result = new OperationResult("Get category relations");
return new RoleMemberPanel<ServiceType>(panelId, Model.of(getObject().asObjectable()), WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.ADMINISTRATION, result, PageService.this)) {

private static final long serialVersionUID = 1L;

@Override
protected boolean isRole() {
return false;
}
};
// return new ServiceMemberPanel(panelId, Model.of(getObject().asObjectable()));
}

@Override
Expand All @@ -104,6 +119,20 @@ protected void viewObjectHistoricalDataPerformed(AjaxRequestTarget target, Prism
protected boolean isFocusHistoryPage(){
return PageService.this.isFocusHistoryPage();
}

@Override
public AbstractRoleMemberPanel<ServiceType> createGovernancePanel(String panelId) {
OperationResult result = new OperationResult("Get category relations");
return new RoleGovernanceMemberPanel<ServiceType>(panelId, Model.of(getObject().asObjectable()), WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.GOVERNANCE, result, PageService.this)) {

private static final long serialVersionUID = 1L;

@Override
protected boolean isRole() {
return false;
}
};
}
};
}

Expand Down

0 comments on commit de53336

Please sign in to comment.