Skip to content

Commit

Permalink
work on Delegations tab
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Nov 14, 2016
1 parent e510737 commit 959d796
Show file tree
Hide file tree
Showing 7 changed files with 204 additions and 73 deletions.
Expand Up @@ -23,6 +23,8 @@
import javax.xml.namespace.QName;

import com.evolveum.midpoint.common.refinery.RefinedResourceSchemaImpl;
import com.evolveum.midpoint.web.page.admin.users.component.AssignmentsPreviewDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.Validate;

import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition;
Expand All @@ -48,19 +50,6 @@
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
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.ConstructionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExtensionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LayerType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceAttributeDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType;

/**
* TODO: unify with AssignmentItemDto
Expand Down Expand Up @@ -93,6 +82,7 @@ public class AssignmentEditorDto extends SelectableBean implements Comparable<As
private AssignmentEditorDtoType type;
private UserDtoStatus status;
private AssignmentType oldAssignment;
private List<AssignmentsPreviewDto> privilegeLimitationList;
private ObjectViewDto<OrgType> tenantRef;
private ObjectViewDto<OrgType> orgRef;

Expand Down Expand Up @@ -145,6 +135,7 @@ public AssignmentEditorDto(UserDtoStatus status, AssignmentType assignment, Page

this.attributes = prepareAssignmentAttributes(assignment, pageBase);
this.isOrgUnitManager = determineUserOrgRelation(assignment);
// this.privilegeLimitationList = getAssignmentPrivileges(assignment);
}

public static AssignmentEditorDto createDtoAddFromSelectedObject(ObjectType object, PageBase pageBase) {
Expand Down Expand Up @@ -181,6 +172,11 @@ private AssignmentEditorDtoType getType(AssignmentType assignment) {

}

private List<ObjectReferenceType> getAssignmentPrivilegesList(AssignmentType assignment){
List<ObjectReferenceType> list = new ArrayList<>();
List<AssignmentSelectorType> assignmentSelectorType = assignment.getLimitTargerContent();
return list;
}
private Boolean determineUserOrgRelation(AssignmentType assignment) {
if (!AssignmentEditorDtoType.ORG_UNIT.equals(getType())) {
return Boolean.FALSE;
Expand Down Expand Up @@ -541,7 +537,7 @@ public PrismContainerValue<AssignmentType> getNewValue(PrismContext prismContext
public String getDescription() {
return newAssignment.getDescription();
}

public QName getFocusType() {
return newAssignment.getFocusType();
}
Expand Down Expand Up @@ -633,7 +629,19 @@ public void setSimpleView(boolean simpleView) {
this.simpleView = simpleView;
}

@Override
public List<AssignmentsPreviewDto> getPrivilegeLimitationList() {
return privilegeLimitationList;
}

public void setPrivilegeLimitationList(List<AssignmentsPreviewDto> privilegeLimitationList) {
this.privilegeLimitationList = privilegeLimitationList;
}

// private List<AssignmentSelectorType> getAssignmentPrivileges(AssignmentType assignment){
//
//
// }
@Override
public boolean equals(Object o) {
if (this == o)
return true;
Expand Down
Expand Up @@ -54,6 +54,7 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.component.ChooseTypePanel;
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
import com.evolveum.midpoint.web.page.admin.users.component.AssignmentsPreviewDto;
import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;
Expand Down Expand Up @@ -133,16 +134,13 @@ public class AssignmentEditorPanel extends BasePanel<AssignmentEditorDto> {
private IModel<List<ACAttributeDto>> attributesModel;
protected WebMarkupContainer headerRow;
protected PageBase pageBase;
protected List<AssignmentsPreviewDto> privilegesList;

public AssignmentEditorPanel(String id, IModel<AssignmentEditorDto> model, PageBase pageBase) {
public AssignmentEditorPanel(String id, IModel<AssignmentEditorDto> model,
List<AssignmentsPreviewDto> privilegesList, PageBase pageBase) {
super(id, model);
this.pageBase = pageBase;
attributesModel = new LoadableModel<List<ACAttributeDto>>(false) {
@Override
protected List<ACAttributeDto> load() {
return loadAttributes();
}
};
this.privilegesList = privilegesList;

initLayout();
}
Expand Down Expand Up @@ -390,7 +388,7 @@ public void setObject(Date object) {
};
}

private void initBodyLayout(WebMarkupContainer body) {
protected void initBodyLayout(WebMarkupContainer body) {
TextArea<String> description = new TextArea<>(ID_DESCRIPTION,
new PropertyModel<String>(getModel(), AssignmentEditorDto.F_DESCRIPTION));
description.setEnabled(getModel().getObject().isEditable());
Expand Down Expand Up @@ -868,7 +866,7 @@ public String getObject() {
};
}

private void nameClickPerformed(AjaxRequestTarget target) {
protected void nameClickPerformed(AjaxRequestTarget target) {
AssignmentEditorDto dto = getModel().getObject();
boolean minimized = dto.isMinimized();
dto.setMinimized(!minimized);
Expand Down
Expand Up @@ -19,31 +19,85 @@
<wicket:panel>
<div class="box-header with-border" wicket:id="headerRow">
<div class="row check-table-header" style="margin-left: 2px;">
<input type="checkbox" wicket:id="selected"/>
<div class="check-table-label">
<i class="check-table-header-icon" wicket:id="typeImage"></i>
<a class="check-table-header-name" wicket:id="name">
<span class="name" wicket:id="nameLabel"/>
</a>
<i class="check-table-header-additional-icon fa fa-arrow-right text-info" wicket:id="arrowIcon"
style="font-size: 24px; margin-left: 5px; margin-right: 5px;"></i>
<i class="check-table-header-icon" wicket:id="delegatedToImage"></i>
<a class="check-table-header-name" wicket:id="delegatedTo">
<span class="name" wicket:id="delegatedToLabel"/>
</a>
</div>
</div>
<!--<div class="row">-->
<!--<label class="col-sm-1">-->
<!--<wicket:message key="DelegationEditorPanel.from" />-->
<!--</label>-->
<!--<div class="col-sm-5" wicket:id="delegationValidFrom"/>-->
<!--<label class="col-sm-1">-->
<!--<wicket:message key="DelegationEditorPanel.to" />-->
<!--</label>-->
<!--<div class="col-sm-5" wicket:id="delegationValidTo"/>-->
<input type="checkbox" wicket:id="selected"/>
<div class="check-table-label">
<i class="check-table-header-icon" wicket:id="typeImage"></i>
<a class="check-table-header-name" wicket:id="name">
<span class="name" wicket:id="nameLabel"/>
</a>
<i class="check-table-header-additional-icon fa fa-arrow-right text-info" wicket:id="arrowIcon"
style="font-size: 24px; margin-left: 5px; margin-right: 5px;"></i>
<i class="check-table-header-icon" wicket:id="delegatedToImage"></i>
<a class="check-table-header-name" wicket:id="delegatedTo">
<span class="name" wicket:id="delegatedToLabel"/>
</a>
</div>
</div>

</div>
<div class="box-body" wicket:id="body">
<div class="container-fluid prism-object">

<!--</div>-->
<div class="row">
<div class="container-fluid prism-container">
<div class="prism-properties">

<div>
<div class="row prism-property">
<div class="col-xs-4">
<span><wicket:message key="AssignmentEditorPanel.description"/></span>
</div>
<div class="col-xs-8">
<div class="row">
<div class="col-xs-9">
<textarea class="form-control input-sm" rows="2"
wicket:id="delegationDescription"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="stripe">
<div class="row prism-property">
<div class="col-xs-4">
<span><wicket:message key="ActivationType.validFrom"/></span>
</div>
<div class="col-xs-8">
<div class="row">
<div class="col-xs-9">
<div wicket:id="delegationValidFrom"/>
</div>
</div>
</div>
</div>
</div>

<div>
<div class="row prism-property">
<div class="col-xs-4">
<span><wicket:message key="ActivationType.validTo"/></span>
</div>
<div class="col-xs-8">
<div class="row">
<div class="col-xs-9">
<div wicket:id="delegationValidTo"/>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="row prism-property">
<div wicket:id="privilegesList">
<div wicket:id="privilege"/>
</div>
<a wicket:id="limitPrivilegesButton" class="btn btn-info"></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</wicket:panel>
</html>
Expand Up @@ -17,30 +17,40 @@
package com.evolveum.midpoint.web.component.assignment;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.DateInput;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.users.component.AssignmentsPreviewDto;
import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentSelectorType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.commons.lang3.StringUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;

import javax.xml.datatype.XMLGregorianCalendar;
import java.util.ArrayList;
import java.util.List;

/**
* Created by honchar.
*/
public class DelegationEditorPanel extends AssignmentEditorPanel {
private static final String ID_DELEGATION_VALID_FROM = "delegationValidFrom";
private static final String ID_DELEGATION_VALID_TO = "delegationValidTo";
private static final String ID_DESCRIPTION = "delegationDescription";
private static final String ID_ARROW_ICON = "arrowIcon";
private static final String ID_DELEGATED_TO_IMAGE = "delegatedToImage";
private static final String ID_DELEGATED_TO = "delegatedTo";
Expand All @@ -50,31 +60,23 @@ public class DelegationEditorPanel extends AssignmentEditorPanel {
private static final String ID_NAME_LABEL = "nameLabel";
private static final String ID_NAME = "name";
private static final String ID_HEADER_ROW = "headerRow";
private static final String ID_PRIVILEGES_LIST = "privilegesList";
private static final String ID_PRIVILEGE = "privilege";
private static final String ID_LIMIT_PRIVILEGES_BUTTON = "limitPrivilegesButton";

private boolean delegatedToMe;

public DelegationEditorPanel(String id, IModel<AssignmentEditorDto> delegationTargetObjectModel,
boolean delegatedToMe, PageBase pageBase) {
super(id, delegationTargetObjectModel, pageBase);
// this.delegatedToMe = delegatedToMe;
// this.pageBase = pageBase;
// super.initLayout();
boolean delegatedToMe, List<AssignmentsPreviewDto> privilegesList, PageBase pageBase) {
super(id, delegationTargetObjectModel, privilegesList, pageBase);
}


// @Override
// protected void initLayout() {

// DateInput validFrom = new DateInput(ID_DELEGATION_VALID_FROM,
// createDateModel(new PropertyModel<XMLGregorianCalendar>(getModel(),
// AssignmentEditorDto.F_ACTIVATION + ".validFrom")));
// headerRow.add(validFrom);
//
// DateInput validTo = new DateInput(ID_DELEGATION_VALID_TO,
// createDateModel(new PropertyModel<XMLGregorianCalendar>(getModel(),
// AssignmentEditorDto.F_ACTIVATION + ".validTo")));
// headerRow.add(validTo);
// protected void initLayout(){
// getModelObject().setPrivilegeLimitationList();
// super.initLayout();
// }

@Override
protected void initHeaderRow(){
AjaxCheckBox selected = new AjaxCheckBox(ID_SELECTED,
Expand Down Expand Up @@ -109,7 +111,7 @@ public boolean isVisible(){

@Override
public void onClick(AjaxRequestTarget target) {
// nameClickPerformed(target);
nameClickPerformed(target);
}
};
headerRow.add(name);
Expand Down Expand Up @@ -153,4 +155,54 @@ public void onClick(AjaxRequestTarget target) {
delegatedToNameLabel.setOutputMarkupId(true);
delegatedToName.add(delegatedToNameLabel);
}

protected void initBodyLayout(WebMarkupContainer body) {
DateInput validFrom = new DateInput(ID_DELEGATION_VALID_FROM,
createDateModel(new PropertyModel<XMLGregorianCalendar>(getModel(),
AssignmentEditorDto.F_ACTIVATION + ".validFrom")));
body.add(validFrom);

DateInput validTo = new DateInput(ID_DELEGATION_VALID_TO,
createDateModel(new PropertyModel<XMLGregorianCalendar>(getModel(),
AssignmentEditorDto.F_ACTIVATION + ".validTo")));
body.add(validTo);

TextArea<String> description = new TextArea<>(ID_DESCRIPTION,
new PropertyModel<String>(getModel(), AssignmentEditorDto.F_DESCRIPTION));
description.setEnabled(getModel().getObject().isEditable());
body.add(description);

List<String> privilegesNames = new ArrayList<>();
privilegesNames = getPrivilagesList();
ListView<String> privilegesList = new ListView<String>(ID_PRIVILEGES_LIST, privilegesNames){
private static final long serialVersionUID = 1L;

@Override
protected void populateItem(ListItem<String> item) {
Label privilageNameLabel = new Label(ID_PRIVILEGE, item);
item.add(privilageNameLabel);
}
};
body.add(privilegesList);

AjaxButton limitPrivilegesButton = new AjaxButton(ID_LIMIT_PRIVILEGES_BUTTON, pageBase.createStringResource("")) {
@Override
public void onClick(AjaxRequestTarget target) {
// super.onSubmit(target, form);
}
};
body.add(limitPrivilegesButton);
};

private List<String> getPrivilagesList(){
List<AssignmentsPreviewDto> privilegesList = getModel().getObject().getPrivilegeLimitationList();
List<String> privilegesNamesList = new ArrayList<>();
if (privilegesList != null){
for (AssignmentsPreviewDto assignmentsPreviewDto : privilegesList){
privilegesNamesList.add(assignmentsPreviewDto.getTargetName());
}
}
return privilegesNamesList;
}

}

0 comments on commit 959d796

Please sign in to comment.