Skip to content

Commit

Permalink
Merge branch 'post-3.7-fixes' into support-3.7
Browse files Browse the repository at this point in the history
# Conflicts:
#	gui/admin-gui/src/main/resources/localization/Midpoint.properties
  • Loading branch information
KaterynaHonchar committed Jan 31, 2018
2 parents b80b7d1 + 47823dd commit 9a89c09
Show file tree
Hide file tree
Showing 8 changed files with 290 additions and 90 deletions.
Expand Up @@ -21,11 +21,13 @@
import java.util.stream.Collectors;

import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.model.api.ModelAuthorizationAction;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.web.component.objectdetails.FocusMainPanel;
import com.evolveum.midpoint.web.component.prism.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -65,9 +67,6 @@
import com.evolveum.midpoint.web.session.AssignmentsTabStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;

import javax.xml.datatype.XMLGregorianCalendar;

Expand Down Expand Up @@ -136,7 +135,13 @@ public void onClick(AjaxRequestTarget target) {

@Override
public boolean isVisible() {
return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI);
try {
return getParentPage().isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI,
AuthorizationPhaseType.REQUEST, getFocusObject(),
null, null, null);
} catch (Exception ex){
return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI);
}
}
});
assignmentsContainer.add(newObjectIcon);
Expand Down Expand Up @@ -169,6 +174,12 @@ protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) {
public ObjectQuery getQuery() {
return createObjectQuery();
}

@Override
protected List<ContainerValueWrapper<AssignmentType>> searchThroughList() {
List<ContainerValueWrapper<AssignmentType>> resultList = super.searchThroughList();
return postSearch(resultList);
}

};

Expand Down Expand Up @@ -203,6 +214,10 @@ public String getObject() {
return assignmentTable;

}

protected List<ContainerValueWrapper<AssignmentType>> postSearch(List<ContainerValueWrapper<AssignmentType>> assignments) {
return assignments;
}

protected AssignmentsTabStorage getAssignmentsStorage() {
return getPageBase().getSessionStorage().getAssignmentsTabStorage();
Expand Down Expand Up @@ -519,4 +534,12 @@ protected void reloadSavePreviewButtons(AjaxRequestTarget target){
mainPanel.reloadSavePreviewButtons(target);
}
}

private PrismObject getFocusObject(){
FocusMainPanel mainPanel = findParent(FocusMainPanel.class);
if (mainPanel != null) {
return mainPanel.getObjectWrapper().getObject();
}
return null;
}
}
@@ -0,0 +1,102 @@
/*
* Copyright (c) 2010-2017 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 java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.wicket.model.IModel;

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.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper;
import com.evolveum.midpoint.web.component.prism.ContainerWrapper;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;

public class GenericAbstractRoleAssignmentPanel extends AbstractRoleAssignmentPanel {

private static final long serialVersionUID = 1L;

public GenericAbstractRoleAssignmentPanel(String id, IModel<ContainerWrapper<AssignmentType>> assignmentContainerWrapperModel) {
super(id, assignmentContainerWrapperModel);
}

// @Override
// protected boolean isRelationVisible() {
// return true;
// }

// @Override
// protected <T extends ObjectType> void addSelectedAssignmentsPerformed(AjaxRequestTarget target, List<T> assignmentsList,
// QName relation) {
// super.addSelectedAssignmentsPerformed(target, assignmentsList, SchemaConstants.ORG_DEFAULT);
// }

@Override
protected List<ContainerValueWrapper<AssignmentType>> postSearch(List<ContainerValueWrapper<AssignmentType>> assignments) {

List<ContainerValueWrapper<AssignmentType>> resultList = new ArrayList<>();
Task task = getPageBase().createSimpleTask("load assignment targets");
Iterator<ContainerValueWrapper<AssignmentType>> assignmentIterator = assignments.iterator();
while (assignmentIterator.hasNext()) {
ContainerValueWrapper<AssignmentType> ass = assignmentIterator.next();
AssignmentType assignment = ass.getContainerValue().asContainerable();
if (QNameUtil.match(assignment.getTargetRef().getType(), OrgType.COMPLEX_TYPE)) {
PrismObject<OrgType> org = WebModelServiceUtils.loadObject(assignment.getTargetRef(), getPageBase(), task, task.getResult());
if (org != null) {
if (org.asObjectable().getOrgType().contains("access")) {
resultList.add(ass);
}
}
}

}

return resultList;
}

// protected ObjectQuery createObjectQuery() {
//
// List<ContainerValueWrapper<AssignmentType>> assignments = getModelObject().getValues();
//
// Task task = getPageBase().createSimpleTask("load assignment targets");
//
// List<String> oids = new ArrayList<>();
// Iterator<ContainerValueWrapper<AssignmentType>> assignmentIterator = assignments.iterator();
// while (assignmentIterator.hasNext()) {
// ContainerValueWrapper<AssignmentType> ass = assignmentIterator.next();
// AssignmentType assignment = ass.getContainerValue().asContainerable();
// PrismObject<OrgType> org = WebModelServiceUtils.loadObject(assignment.getTargetRef(), getPageBase(), task, task.getResult());
// if (org != null) {
// assignment.setTarget(org.asObjectable());
// }
//
// }
// ObjectQuery query = QueryBuilder.queryFor(AssignmentType.class, getParentPage().getPrismContext())
// .item(new ItemPath(AssignmentType.F_TARGET, OrgType.F_ORG_TYPE)).eq("access").build();
//
// return query;
// }
}
Expand Up @@ -22,6 +22,7 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.assignment.AbstractRoleAssignmentPanel;
import com.evolveum.midpoint.web.component.assignment.AssignmentPanel;
import com.evolveum.midpoint.web.component.assignment.AssignmentsUtil;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.prism.*;
Expand Down Expand Up @@ -64,11 +65,15 @@ private void initLayout() {
WebMarkupContainer assignments = new WebMarkupContainer(ID_ASSIGNMENTS);
assignments.setOutputMarkupId(true);
add(assignments);

AbstractRoleAssignmentPanel panel = new AbstractRoleAssignmentPanel(ID_ASSIGNMENTS_PANEL,
new ContainerWrapperFromObjectWrapperModel<>(getObjectWrapperModel(), new ItemPath(FocusType.F_ASSIGNMENT)));
ContainerWrapperFromObjectWrapperModel model = new ContainerWrapperFromObjectWrapperModel<>(getObjectWrapperModel(), new ItemPath(FocusType.F_ASSIGNMENT));
AssignmentPanel panel = createPanel(ID_ASSIGNMENTS_PANEL, model);

assignments.add(panel);
}

protected AssignmentPanel createPanel(String panelId, ContainerWrapperFromObjectWrapperModel<AssignmentType, F> model) {
AbstractRoleAssignmentPanel panel = new AbstractRoleAssignmentPanel(panelId, model);
return panel;
}

}
Expand Up @@ -21,19 +21,25 @@
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.FocusTabVisibleBehavior;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.assignment.AssignmentPanel;
import com.evolveum.midpoint.web.component.assignment.AssignmentsUtil;
import com.evolveum.midpoint.web.component.assignment.GenericAbstractRoleAssignmentPanel;
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.ObjectWrapper;
import com.evolveum.midpoint.web.component.prism.ValueStatus;
import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel;
import com.evolveum.midpoint.web.page.admin.PageAdminFocus;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDtoProvider;
Expand All @@ -54,6 +60,8 @@
import java.util.ArrayList;
import java.util.List;

import javax.xml.namespace.QName;

/**
* @author semancik
*
Expand Down Expand Up @@ -204,6 +212,18 @@ protected WebMarkupContainer createFocusAssignmentsTabPanel(String panelId, Page
assignmentsTabPanel = new FocusAssignmentsTabPanel<F>(panelId, getMainForm(), getObjectModel(), parentPage);
return assignmentsTabPanel;
}

protected WebMarkupContainer createFocusDataProtectionTabPanel(String panelId, PageAdminObjectDetails<F> parentPage) {
assignmentsTabPanel = new FocusAssignmentsTabPanel<F>(panelId, getMainForm(), getObjectModel(), parentPage) {

@Override
protected AssignmentPanel createPanel(String panelId, ContainerWrapperFromObjectWrapperModel<AssignmentType, F> model) {
return new GenericAbstractRoleAssignmentPanel(panelId, model);
}

};
return assignmentsTabPanel;
}

protected WebMarkupContainer createObjectHistoryTabPanel(String panelId, PageAdminObjectDetails<F> parentPage) {
return new ObjectHistoryTabPanel<>(panelId, getMainForm(), getObjectModel(), parentPage);
Expand Down Expand Up @@ -283,6 +303,42 @@ public String getCount() {
return Integer.toString(countAssignments());
}
});

authorization = new FocusTabVisibleBehavior(unwrapModel(), ComponentConstants.UI_FOCUS_TAB_ASSIGNMENTS_URL);
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<F> focus = getObjectModel().getObject().getObject();
List<AssignmentType> 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<OrgType> org = WebModelServiceUtils.loadObject(assignment.getTargetRef(), parentPage, task, task.getResult());

if (org != null) {
if (org.asObjectable().getOrgType().contains("access")) {
count++;
}
}
}
}

return String.valueOf(count);
}
});

authorization = new FocusTabVisibleBehavior(unwrapModel(), ComponentConstants.UI_FOCUS_TAB_TASKS_URL);
tabs.add(
Expand Down
Expand Up @@ -120,7 +120,7 @@ public List<ContainerValueWrapper<AssignmentType>> getSelectedData() {
return getAvailableData().stream().filter(a -> a.isSelected()).collect(Collectors.toList());
}

private List<ContainerValueWrapper<AssignmentType>> searchThroughList() {
protected List<ContainerValueWrapper<AssignmentType>> searchThroughList() {
List<ContainerValueWrapper<AssignmentType>> list = model.getObject();

if (list == null || list.isEmpty()) {
Expand Down

0 comments on commit 9a89c09

Please sign in to comment.