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 Jun 24, 2022
2 parents d317537 + 94cf833 commit 581cc32
Show file tree
Hide file tree
Showing 38 changed files with 615 additions and 373 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1063,7 +1063,7 @@ public static <T extends Enum> IModel<String> createLocalizedModelForEnum(T valu
}

public static <T extends Enum> IModel<List<T>> createReadonlyModelFromEnum(final Class<T> type) {
return (IModel<List<T>>) () -> {
return () -> {
List<T> list = new ArrayList<>();
Collections.addAll(list, type.getEnumConstants());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import com.evolveum.midpoint.prism.PrismReferenceDefinition;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.builder.S_AtomicFilterExit;
import com.evolveum.midpoint.prism.query.builder.S_FilterExit;
import com.evolveum.midpoint.schema.constants.ExpressionConstants;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
Expand Down Expand Up @@ -72,7 +72,7 @@ public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap var
.item(FocusType.F_ROLE_MEMBERSHIP_REF).ref(MemberOperationsHelper.createReferenceValuesList(ref, relations))
.buildFilter();
} else {
S_AtomicFilterExit q = prismContext.queryFor(type).exists(AssignmentHolderType.F_ASSIGNMENT)
S_FilterExit q = prismContext.queryFor(type).exists(AssignmentHolderType.F_ASSIGNMENT)
.block()
.item(AssignmentType.F_TARGET_REF)
.ref(MemberOperationsHelper.createReferenceValuesList(ref, relations));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.S_AtomicFilterExit;
import com.evolveum.midpoint.prism.query.builder.S_FilterExit;
import com.evolveum.midpoint.prism.query.builder.S_FilterEntry;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
Expand Down Expand Up @@ -267,7 +267,7 @@ public static Task createRecomputeMembersTask(AbstractRoleType targetObject, Que

// Use exists filter to build a query like this:
// $a/targetRef = oid1 and $a/tenantRef = oid2 and $a/orgRef = oid3
S_AtomicFilterExit q = q0.exists(AssignmentHolderType.F_ASSIGNMENT)
S_FilterExit q = q0.exists(AssignmentHolderType.F_ASSIGNMENT)
.block()
.item(AssignmentType.F_TARGET_REF)
.ref(createReferenceValuesList(targetObject, relations));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import com.evolveum.midpoint.prism.impl.query.builder.QueryBuilder;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.S_AtomicFilterExit;
import com.evolveum.midpoint.prism.query.builder.S_FilterExit;
import com.evolveum.midpoint.schema.SearchResultList;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
Expand Down Expand Up @@ -226,7 +226,7 @@ protected ObjectQuery createDynamicFormQuery() {
throw new RestartResponseException(getClass());
}

S_AtomicFilterExit filter = QueryBuilder.queryFor(UserType.class, PrismContext.get()).all();
S_FilterExit filter = QueryBuilder.queryFor(UserType.class, PrismContext.get()).all();
for (ItemPath path : filledItems) {
PrismProperty<?> property = user.findProperty(path);
filter = filter.and().item(path).eq(property.getAnyValue().clone());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,23 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="d-flex flex-column gap-3">
<div class="card conflict-item conflict-item-success" wicket:id="doneCard">
<div class="card-body">
<div class="d-flex gap-2 border-bottom border-gray align-items-center pb-3 mb-3">
<h5 class="mb-0"><wicket:message key="ConflictSolverPanel.doneAllTitle"/></h5>
</div>

<wicket:message key="ConflictSolverPanel.doneMessage"/>

<div class="main-button-bar mt-4">
<a class="btn btn-success" wicket:id="backToSummary">
<i class="fas fa-cart-shopping mr-1"></i>
<wicket:message key="ConflictSolverPanel.doneBack"/>
</a>
</div>
</div>
</div>

<div class="align-self-start" wicket:id="toggle"/>

<wicket:container wicket:id="items">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import java.util.stream.Collectors;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
Expand All @@ -22,6 +24,7 @@
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.Toggle;
import com.evolveum.midpoint.gui.api.component.TogglePanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;

/**
* Created by Viliam Repan (lazyman).
Expand All @@ -30,6 +33,8 @@ public class ConflictSolverPanel extends BasePanel<RequestAccess> {

private static final long serialVersionUID = 1L;

private static final String ID_DONE_CARD = "doneCard";
private static final String ID_BACK_TO_SUMMARY = "backToSummary";
private static final String ID_TOGGLE = "toggle";
private static final String ID_ITEMS = "items";
private static final String ID_ITEM = "item";
Expand All @@ -44,6 +49,19 @@ public ConflictSolverPanel(String id, IModel<RequestAccess> model) {

private void initLayout() {
setOutputMarkupId(true);

WebMarkupContainer doneCard = new WebMarkupContainer(ID_DONE_CARD);
doneCard.add(new VisibleBehaviour(() -> getModelObject().isAllConflictsSolved()));
add(doneCard);

AjaxLink backToSummary = new AjaxLink<>(ID_BACK_TO_SUMMARY) {
@Override
public void onClick(AjaxRequestTarget target) {
backToSummaryPerformed(target);
}
};
doneCard.add(backToSummary);

IModel<List<Toggle<ConflictState>>> toggleModel = () -> {
List<Toggle<ConflictState>> list = new ArrayList<>();

Expand All @@ -60,6 +78,9 @@ private void initLayout() {
case SOLVED:
badgeCss = Badge.State.SUCCESS.getCss();
break;
case SKIPPED:
badgeCss = Badge.State.PRIMARY.getCss();
break;
}

long count = getModelObject().getConflicts().stream().filter(c -> cs.equals(c.getState())).count();
Expand Down Expand Up @@ -126,12 +147,10 @@ private void solveConflictPerformed(AjaxRequestTarget target, IModel<Conflict> c

getModelObject().solveConflict(conflict, toRemove);

// switch to "SOLVED" items if there are no more "UNRESOLVED" items
long count = getModelObject().getConflicts().stream().filter(c -> ConflictState.UNRESOLVED.equals(c.getState())).count();
if (count == 0) {
this.selected.setObject(ConflictState.SOLVED);
}

target.add(this);
}

protected void backToSummaryPerformed(AjaxRequestTarget target) {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
* Created by Viliam Repan (lazyman).
*/
public enum ConflictState {
UNRESOLVED, SOLVED;//, SKIPPED
UNRESOLVED, SOLVED, SKIPPED
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,31 @@

package com.evolveum.midpoint.gui.impl.page.self.requestAccess;

import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.gui.api.component.wizard.BasicWizardPanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.component.tile.Tile;
import com.evolveum.midpoint.gui.impl.component.tile.TilePanel;
import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.SecurityUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SecurityViolationException;
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;

import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.List;

/**
* Created by Viliam Repan (lazyman).
*/
Expand Down Expand Up @@ -62,11 +62,17 @@ private void initModels() {

@Override
protected List<Tile<QName>> load() {
RelationSelectionType config = getRelationConfiguration();

QName defaultRelation = config.getDefaultRelation();
getModelObject().setRelation(defaultRelation);

List<Tile<QName>> tiles = new ArrayList<>();

List<QName> list = getAvailableRelationsList();
for (QName name : list) {
Tile<QName> tile = createTileForRelation(name);
tile.setSelected(name.equals(defaultRelation));
tile.setValue(name);

tiles.add(tile);
Expand Down Expand Up @@ -154,13 +160,22 @@ private Tile<QName> createTileForRelation(QName name) {
}

private List<QName> getAvailableRelationsList() {
// todo fix focus parameter
FocusType focus = null;
List<ObjectReferenceType> personsOfInterest = getModelObject().getPersonOfInterest();
if (personsOfInterest.isEmpty()) {
return new ArrayList<>();
}

ObjectReferenceType ref = personsOfInterest.get(0);

FocusType focus;
try {
focus = SecurityUtil.getPrincipal().getFocus();
} catch (SecurityViolationException ex) {
ex.printStackTrace();
PrismObject<UserType> prismFocus = WebModelServiceUtils.loadObject(ref, getPageBase());
focus = prismFocus.asObjectable();
} catch (Exception ex) {
getPageBase().error(getString("RelationPanel.loadRelationsError", ref.getTargetName(), ref.getOid()));
return new ArrayList<>();
}

Task task = getPageBase().createSimpleTask(OPERATION_LOAD_ASSIGNABLE_RELATIONS_LIST);
OperationResult result = task.getResult();
List<QName> assignableRelationsList = WebComponentUtil.getAssignableRelationsList(
Expand Down

0 comments on commit 581cc32

Please sign in to comment.