Skip to content

Commit

Permalink
induced entitlements panel, columns are fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Apr 3, 2018
1 parent e151e6c commit 15dd458
Show file tree
Hide file tree
Showing 4 changed files with 152 additions and 26 deletions.
Expand Up @@ -231,6 +231,25 @@ public void populateItem(Item<ICellPopulator<ContainerValueWrapper<AssignmentTyp
}
});

columns.add(new AbstractColumn<ContainerValueWrapper<AssignmentType>, String>(createStringResource("AssignmentType.tenant")){
private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<ContainerValueWrapper<AssignmentType>>> item, String componentId,
final IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
item.add(new Label(componentId, getTenantLabelModel(rowModel.getObject())));
}
});
columns.add(new AbstractColumn<ContainerValueWrapper<AssignmentType>, String>(createStringResource("AssignmentType.orgReferenceShorten")){
private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<ContainerValueWrapper<AssignmentType>>> item, String componentId,
final IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
item.add(new Label(componentId, getOrgRefLabelModel(rowModel.getObject())));
}
});

return columns;
}

Expand Down Expand Up @@ -308,30 +327,6 @@ protected AbstractAssignmentDetailsPanel createDetailsPanel(String idAssignmentD
return new AbstractRoleAssignmentDetailsPanel(ID_ASSIGNMENT_DETAILS, form, model);
}

@Override
protected List<IColumn<ContainerValueWrapper<AssignmentType>, String>> initBasicColumns() {
List<IColumn<ContainerValueWrapper<AssignmentType>, String>> columns = super.initBasicColumns();
columns.add(new AbstractColumn<ContainerValueWrapper<AssignmentType>, String>(createStringResource("AssignmentType.tenant")){
private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<ContainerValueWrapper<AssignmentType>>> item, String componentId,
final IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
item.add(new Label(componentId, getTenantLabelModel(rowModel.getObject())));
}
});
columns.add(new AbstractColumn<ContainerValueWrapper<AssignmentType>, String>(createStringResource("AssignmentType.orgReferenceShorten")){
private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<ContainerValueWrapper<AssignmentType>>> item, String componentId,
final IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
item.add(new Label(componentId, getOrgRefLabelModel(rowModel.getObject())));
}
});
return columns;
}

private IModel<String> getTenantLabelModel(ContainerValueWrapper<AssignmentType> assignmentContainer){
if (assignmentContainer == null || assignmentContainer.getContainerValue() == null){
return Model.of("");
Expand Down
Expand Up @@ -224,7 +224,7 @@ protected AssignmentsTabStorage getAssignmentsStorage() {

protected abstract ObjectQuery createObjectQuery();

protected List<IColumn<ContainerValueWrapper<AssignmentType>, String>> initBasicColumns() {
private List<IColumn<ContainerValueWrapper<AssignmentType>, String>> initBasicColumns() {
List<IColumn<ContainerValueWrapper<AssignmentType>, String>> columns = new ArrayList<>();

columns.add(new CheckBoxHeaderColumn<>());
Expand Down
@@ -1,19 +1,33 @@
package com.evolveum.midpoint.web.component.assignment;

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.query.AndFilter;
import com.evolveum.midpoint.prism.query.ObjectFilter;
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.schema.constants.ObjectTypes;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
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.ValueStatus;
import com.evolveum.midpoint.web.session.AssignmentsTabStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.ExpressionUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
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.basic.Label;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import javax.jws.WebParam;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

Expand All @@ -24,6 +38,9 @@ public class InducedEntitlementsPanel extends InducementsPanel{

private static final long serialVersionUID = 1L;

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

public InducedEntitlementsPanel(String id, IModel<ContainerWrapper<AssignmentType>> inducementContainerWrapperModel){
super(id, inducementContainerWrapperModel);
Expand All @@ -49,6 +66,40 @@ private AssignmentsTabStorage getInducedEntitlementsTabStorage(){
return getParentPage().getSessionStorage().getInducedEntitlementsTabStorage();
}

@Override
protected List<IColumn<ContainerValueWrapper<AssignmentType>, String>> initColumns() {
List<IColumn<ContainerValueWrapper<AssignmentType>, String>> columns = new ArrayList<>();
columns.add(new AbstractColumn<ContainerValueWrapper<AssignmentType>, String>(createStringResource("ConstructionType.kind")){
private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<ContainerValueWrapper<AssignmentType>>> item, String componentId,
final IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
item.add(new Label(componentId, getKindLabelModel(rowModel.getObject())));
}
});
columns.add(new AbstractColumn<ContainerValueWrapper<AssignmentType>, String>(createStringResource("ConstructionType.intent")){
private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<ContainerValueWrapper<AssignmentType>>> item, String componentId,
final IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
item.add(new Label(componentId, getIntentLabelModel(rowModel.getObject())));
}
});
columns.add(new AbstractColumn<ContainerValueWrapper<AssignmentType>, String>(createStringResource("ConstructionType.association")){
private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<ContainerValueWrapper<AssignmentType>>> item, String componentId,
final IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
item.add(new Label(componentId, getAssociationLabelModel(rowModel.getObject())));
}
});

return columns;
}

@Override
protected ObjectQuery createObjectQuery() {
ObjectQuery query = super.createObjectQuery();
Expand Down Expand Up @@ -91,4 +142,84 @@ protected boolean isRelationVisible() {
protected List<ObjectTypes> getObjectTypesList(){
return Arrays.asList(ObjectTypes.RESOURCE);
}

private IModel<String> getKindLabelModel(ContainerValueWrapper<AssignmentType> assignmentWrapper){
if (assignmentWrapper == null){
return Model.of("");
}
AssignmentType assignment = assignmentWrapper.getContainerValue().asContainerable();
ConstructionType construction = assignment.getConstruction();
if (construction == null || construction.getKind() == null){
return Model.of("");
}
return WebComponentUtil.createLocalizedModelForEnum(construction.getKind(), InducedEntitlementsPanel.this);

}

private IModel<String> getIntentLabelModel(ContainerValueWrapper<AssignmentType> assignmentWrapper){
if (assignmentWrapper == null){
return Model.of("");
}
AssignmentType assignment = assignmentWrapper.getContainerValue().asContainerable();
ConstructionType construction = assignment.getConstruction();
if (construction == null || construction.getIntent() == null){
return Model.of("");
}
return Model.of(construction.getIntent());

}

private IModel<String> getAssociationLabelModel(ContainerValueWrapper<AssignmentType> assignmentWrapper){
if (assignmentWrapper == null){
return Model.of("");
}
AssignmentType assignment = assignmentWrapper.getContainerValue().asContainerable();
ConstructionType construction = assignment.getConstruction();
if (construction == null || construction.getAssociation() == null){
return Model.of("");
}
StringBuilder sb = new StringBuilder();
for (ResourceObjectAssociationType association : construction.getAssociation()){
if (association.getOutbound() == null || association.getOutbound().getExpression() == null){
continue;
}
ObjectReferenceType shadowRefValue = ExpressionUtil.getShadowRefValue(association.getOutbound().getExpression());
if (shadowRefValue == null || StringUtils.isEmpty(shadowRefValue.getOid())){
continue;
}
String shadowDisplayName = WebComponentUtil.getDisplayNameOrName(shadowRefValue, getPageBase(), OPERATION_LOAD_SHADOW_DISPLAY_NAME);
if (sb.length() == 0){
sb.append(createStringResource("ExpressionValuePanel.shadowRefValueTitle").getString() + ":");
}
if (StringUtils.isNotEmpty(shadowDisplayName)){
sb.append("\n");
sb.append(shadowDisplayName);
}
}
return Model.of(sb.toString());

}

@Override
protected List<ContainerValueWrapper<AssignmentType>> postSearch(List<ContainerValueWrapper<AssignmentType>> assignments) {
//TODO fix post search filtering
List<ContainerValueWrapper<AssignmentType>> filteredAssignments = new ArrayList<>();
assignments.forEach(assignmentWrapper -> {
AssignmentType assignment = assignmentWrapper.getContainerValue().asContainerable();
if (assignment.getConstruction() != null && assignment.getConstruction().getAssociation() != null){
List<ResourceObjectAssociationType> associations = assignment.getConstruction().getAssociation();
associations.forEach(association -> {
if (association.getOutbound() != null && association.getOutbound().getExpression() != null){
ObjectReferenceType shadowRef = ExpressionUtil.getShadowRefValue(association.getOutbound().getExpression());
if (shadowRef != null || (shadowRef == null && ValueStatus.ADDED.equals(assignmentWrapper.getStatus()))){
filteredAssignments.add(assignmentWrapper);
return;
}
}
});
}
});
// return filteredAssignments;
return assignments;
}
}
Expand Up @@ -60,7 +60,7 @@ public SelectableRowItem(String id, int index, IModel<T> model) {
@Override
protected Item<IColumn<T, String>> newCellItem(String id, int index, IModel<IColumn<T, String>> model) {
Item item = super.newCellItem(id, index, model);
item.add(new AttributeModifier("style", "max-width: 250px; word-wrap: break-word;"));
item.add(new AttributeModifier("style", "word-wrap: break-word;"));
return item;
}

Expand Down

0 comments on commit 15dd458

Please sign in to comment.