Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Feb 18, 2017
2 parents fc369e4 + 800f5ae commit 56e41a4
Show file tree
Hide file tree
Showing 8 changed files with 385 additions and 108 deletions.
Expand Up @@ -19,7 +19,16 @@
xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:extend>
<div wicket:id="conflictsPanel"/>
<form wicket:id="mainForm" class="form-horizontal">
<div wicket:id="conflictsPanel"/>

<div class="main-button-bar">
<span class="button-group">
<a class="btn btn-default" wicket:id="back"/>
<a class="btn btn-primary" wicket:id="submit"/>
</span>
</div>
</form>
</wicket:extend>
</body>
</html>
Expand Up @@ -3,7 +3,21 @@
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.page.self.component.AssignmentConflictPanel;
import com.evolveum.midpoint.web.page.self.dto.AssignmentConflictDto;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* Created by honchar.
Expand All @@ -17,5 +31,51 @@
description = "PageAssignmentShoppingKart.auth.assignmentsConflicts.description")})
public class PageAssignmentConflicts extends PageSelf{
private static final String ID_CONFLICTS_PANEL = "conflictsPanel";
private static final String ID_MAIN_FORM = "mainForm";
private static final String ID_BACK = "back";
private static final String ID_SUBMIT = "submit";
private Map<String, FocusType> loadedObjectsMap = new HashMap<>();

public PageAssignmentConflicts(){}

public PageAssignmentConflicts(IModel<List<AssignmentConflictDto>> model){
initLayout(model);
}

private void initLayout(IModel<List<AssignmentConflictDto>> model){
Form mainForm = new Form(ID_MAIN_FORM);
mainForm.setOutputMarkupId(true);
add(mainForm);

RepeatingView conflictsPanel = new RepeatingView(ID_CONFLICTS_PANEL);
conflictsPanel.setOutputMarkupId(true);
if (model != null && model.getObject() != null){
for (AssignmentConflictDto dto : model.getObject()){
AssignmentConflictPanel panel = new AssignmentConflictPanel(conflictsPanel.newChildId(), Model.of(dto));
conflictsPanel.add(panel);
}
}
mainForm.add(conflictsPanel);

AjaxSubmitButton back = new AjaxSubmitButton(ID_BACK, createStringResource("PageAssignmentConflicts.back")) {

@Override
public void onSubmit(AjaxRequestTarget target, org.apache.wicket.markup.html.form.Form<?> form) {
redirectBack();
}

};
mainForm.add(back);

AjaxSubmitButton submit = new AjaxSubmitButton(ID_SUBMIT, createStringResource("PageAssignmentConflicts.submit")) {

@Override
public void onSubmit(AjaxRequestTarget target, org.apache.wicket.markup.html.form.Form<?> form) {
redirectBack();
}

};
mainForm.add(submit);

}
}
Expand Up @@ -26,8 +26,8 @@
<div class="main-button-bar">
<span class="button-group">
<a class="btn btn-default" wicket:id="back"/>
<a class="btn btn-primary" wicket:id="resolveConflicts"/>
<a class="btn btn-primary" wicket:id="request"/>
<a class="btn btn-primary" wicket:id="submit"/>
</span>
</div>
</form>
Expand Down
Expand Up @@ -2,9 +2,7 @@

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.model.api.context.EvaluatedAssignment;
import com.evolveum.midpoint.model.api.context.EvaluatedPolicyRule;
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.model.api.context.*;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.ContainerDelta;
import com.evolveum.midpoint.prism.delta.DeltaSetTriple;
Expand All @@ -25,8 +23,8 @@
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.page.admin.users.PageOrgTree;
import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
import com.evolveum.midpoint.web.page.self.dto.AssignmentConflictDto;
import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
Expand All @@ -41,12 +39,12 @@
/**
* Created by honchar.
*/
public class PageAssignmentsList extends PageBase{
public class PageAssignmentsList<F extends FocusType> extends PageBase{
private static final String ID_ASSIGNMENT_TABLE_PANEL = "assignmentTablePanel";
private static final String ID_FORM = "mainForm";
private static final String ID_BACK = "back";
private static final String ID_REQUEST_BUTTON = "request";
private static final String ID_SUBMIT_BUTTON = "submit";
private static final String ID_RESOLVE_CONFLICTS_BUTTON = "resolveConflicts";

private static final Trace LOGGER = TraceManager.getTrace(PageRequestRole.class);
private static final String DOT_CLASS = PageAssignmentsList.class.getName() + ".";
Expand Down Expand Up @@ -125,8 +123,8 @@ protected void onSubmit(AjaxRequestTarget target, org.apache.wicket.markup.html.
};
mainForm.add(requestAssignments);

AjaxSubmitButton submitAssignments = new AjaxSubmitButton(ID_SUBMIT_BUTTON,
createStringResource("PageAssignmentsList.submitButton")) {
AjaxSubmitButton resolveAssignments = new AjaxSubmitButton(ID_RESOLVE_CONFLICTS_BUTTON,
createStringResource("PageAssignmentsList.resolveConflicts")) {

@Override
protected void onError(AjaxRequestTarget target, org.apache.wicket.markup.html.form.Form<?> form) {
Expand All @@ -135,14 +133,12 @@ protected void onError(AjaxRequestTarget target, org.apache.wicket.markup.html.f

@Override
protected void onSubmit(AjaxRequestTarget target, org.apache.wicket.markup.html.form.Form<?> form) {
getAssignmentConflicts();
// PageAssignmentsList.this.setResponsePage(PageAssignmentConflicts.class);
PageAssignmentConflicts assignmentsConflictsPage = new PageAssignmentConflicts(Model.ofList(getAssignmentConflicts(target)));
PageAssignmentsList.this.navigateToNext(assignmentsConflictsPage);
}

};
//TODO temporarily
submitAssignments.setVisible(false);
mainForm.add(submitAssignments);
mainForm.add(resolveAssignments);

}

Expand Down Expand Up @@ -242,6 +238,16 @@ private void findBackgroundTaskOperation(OperationResult result){
return;
}

private List<String> getAssignmentsOidsList(){
List<String> oidsList = new ArrayList<>();
for (AssignmentType assignment : user.asObjectable().getAssignment()){
if (assignment.getTargetRef() != null && assignment.getTargetRef().getOid() != null){
oidsList.add(assignment.getTargetRef().getOid());
}
}
return oidsList;
}

private void handleModifyAssignmentDelta(AssignmentEditorDto assDto,
PrismContainerDefinition assignmentDef, PrismContainerValue newValue, ObjectDelta<UserType> focusDelta)
throws SchemaException {
Expand Down Expand Up @@ -278,14 +284,15 @@ private List<AssignmentEditorDto> addAssignmentsToUser(){
return assignmentsList;
}

private void getAssignmentConflicts(){
private List<AssignmentConflictDto> getAssignmentConflicts(AjaxRequestTarget target){
ModelContext<UserType> modelContext = null;

ObjectDelta<UserType> delta;
Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<ObjectDelta<? extends ObjectType>>();

OperationResult result = new OperationResult(OPERATION_PREVIEW_ASSIGNMENT_CONFLICTS);
Task task = createSimpleTask(OPERATION_PREVIEW_ASSIGNMENT_CONFLICTS);
List<AssignmentConflictDto> conflictsList = new ArrayList<>();
try {
delta = user.createModifyDelta();

Expand All @@ -298,63 +305,31 @@ private void getAssignmentConflicts(){
.getEvaluatedAssignmentTriple();
Collection<? extends EvaluatedAssignment> addedAssignments = evaluatedAssignmentTriple
.getPlusSet();
List<String> userAssignmentsOidsList = getAssignmentsOidsList();
if (addedAssignments != null) {
for (EvaluatedAssignment evaluatedAssignment : addedAssignments){
Collection<EvaluatedPolicyRule> targetPolicyRules = evaluatedAssignment.getTargetPolicyRules();
if (targetPolicyRules != null) {
for (EvaluatedPolicyRule rule : targetPolicyRules){
List<ExclusionPolicyConstraintType> exclusions = rule.getPolicyConstraints().getExclusion();
if (exclusions != null){
for (ExclusionPolicyConstraintType exclusion : exclusions){
ObjectReferenceType ref = exclusion.getTargetRef();
if (ref != null){

}
for (EvaluatedAssignment<UserType> evaluatedAssignment : addedAssignments) {
for (EvaluatedPolicyRule policyRule : evaluatedAssignment.getTargetPolicyRules()) {
for (EvaluatedPolicyRuleTrigger trigger : policyRule.getTriggers()) {
if (PolicyConstraintKindType.EXCLUSION.equals(trigger.getConstraintKind()) &&
trigger instanceof EvaluatedExclusionTrigger) {
PrismObject<F> addedAssignmentTargetObj = (PrismObject<F>)evaluatedAssignment.getTarget();
PrismObject<F> exclusionTargetObj = (PrismObject<F>)((EvaluatedExclusionTrigger) trigger).getConflictingAssignment().getTarget();
String exclusionOid = exclusionTargetObj.getOid();
if (userAssignmentsOidsList.contains(exclusionOid)) {
AssignmentConflictDto dto = new AssignmentConflictDto(exclusionTargetObj, addedAssignmentTargetObj);
conflictsList.add(dto);
}
}
}
}

}
if (addedAssignments.isEmpty()) {
// info(getString("pageAdminFocus.message.noAssignmentsAvailable"));
// target.add(getFeedbackPanel());
// return null;
}
}

// for (EvaluatedAssignment<UserType> evaluatedAssignment : addedAssignments) {
// if (!evaluatedAssignment.isValid()) {
// continue;
// }
// // roles and orgs
// DeltaSetTriple<? extends EvaluatedAssignmentTarget> evaluatedRolesTriple = evaluatedAssignment
// .getRoles();
// Collection<? extends EvaluatedAssignmentTarget> evaluatedRoles = evaluatedRolesTriple
// .getNonNegativeValues();
// for (EvaluatedAssignmentTarget role : evaluatedRoles) {
// if (role.isEvaluateConstructions()) {
// assignmentDtoSet.add(createAssignmentsPreviewDto(role, task, result));
// }
// }
//
// // all resources
// DeltaSetTriple<EvaluatedConstruction> evaluatedConstructionsTriple = evaluatedAssignment
// .getEvaluatedConstructions(task, result);
// Collection<EvaluatedConstruction> evaluatedConstructions = evaluatedConstructionsTriple
// .getNonNegativeValues();
// for (EvaluatedConstruction construction : evaluatedConstructions) {
// assignmentDtoSet.add(createAssignmentsPreviewDto(construction));
// }
// }
//
// return new ArrayList<>(assignmentDtoSet);
} catch (Exception e) {
// target.add(getFeedbackPanel());
// return null;
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't get assignments conflics. Reason: ", e);
error("Couldn't get assignments conflics. Reason: " + e);
target.add(getFeedbackPanel());
}


return conflictsList;
}

}
Expand Up @@ -17,20 +17,38 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<table class="row">
<tr class="col-md-1">
<td rowspan="3" wicket:id="statusIcon" />
</tr>
<tr class="col-md-8">
<td wicket:id="existingAssignment" />
<td wicket:id="conflictMessage" />
<td wicket:id="addedAssignment" />
</tr>
<tr class="col-md-3" >
<td wicket:id="unselectButton" />
<td />
<td wicket:id="removeButton" />
</tr>
</table>
<h2>
<wicket:message key="PageAssignmentConflicts.title"/>
</h2>
<form wicket:id="panelContainer" class="form-horizontal">
<table>
<tr class="row">
<td rowspan="3" class="col-md-1"><i wicket:id="statusIcon" style="font-size: 30px;"></i></td>
<td class="col-md-7">
<div wicket:id="existingAssignment"/>
</td>
<td class="col-md-3">
<a wicket:id="removeButton" class="btn btn-primary btn-xs"></a>
</td>
</tr>
<tr class="row">
<td class="col-md-7">
<label>
<wicket:message key="AssignmentConflictPanel.conflictMessage"/>
</label>
</td>
<td class="col-md-3">
</td>
</tr>
<tr class="row">
<td class="col-md-7">
<div wicket:id="addedAssignment"/>
</td>
<td class="col-md-3">
<a wicket:id="unselectButton" class="btn btn-primary btn-xs"></a>
</td>
</tr>
</table>
</form>
</wicket:panel>
</html>

0 comments on commit 56e41a4

Please sign in to comment.