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 Mar 22, 2023
2 parents bf341e2 + a2f2810 commit b152fdc
Show file tree
Hide file tree
Showing 12 changed files with 190 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,12 @@ public static String translateEnum(Enum<?> e, String nullKey) {
String key = WebComponentUtil.createEnumResourceKey(e);
return translate(key);
}

public static <T extends Enum> String createKeyForEnum(T value) {
if (value == null) {
return null;
}

return value.getClass().getSimpleName() + "." + value.name();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -985,12 +985,12 @@ public static <O extends ObjectType> List<QName> resolveObjectTypesToQNames(Coll
return concreteTypes;
}

/**
* @deprecated see {@link com.evolveum.midpoint.gui.api.util.LocalizationUtil#createKeyForEnum(Enum)}
*/
@Deprecated
public static <T extends Enum> String createEnumResourceKey(T value) {
if (value == null) {
return null;
}

return value.getClass().getSimpleName() + "." + value.name();
return com.evolveum.midpoint.gui.api.util.LocalizationUtil.createKeyForEnum(value);
}

public static <T extends Enum> IModel<String> createLocalizedModelForEnum(T value, Component comp) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,11 @@ private void addBuiltInMetrics(List<DetailsTableItem> result) {
int totalCount = SimulationResultTypeUtil.getObjectsProcessed(resultModel.getObject());
for (Map.Entry<BuiltInSimulationMetricType, Integer> entry : builtIn.entrySet()) {
BuiltInSimulationMetricType identifier = entry.getKey();
if (identifier == BuiltInSimulationMetricType.ERRORS) {
// handled later (as last detail item)
continue;
}

int value = entry.getValue();

items.add(createDetailsItemForBuiltInMetric(identifier, value));
Expand All @@ -279,6 +284,11 @@ private void addBuiltInMetrics(List<DetailsTableItem> result) {
target -> redirectToProcessedObjects((ObjectProcessingStateType) null))
);

Integer value = builtIn.get(BuiltInSimulationMetricType.ERRORS);
if (value != null) {
items.add(createDetailsItemForBuiltInMetric(BuiltInSimulationMetricType.ERRORS, value));
}

result.addAll(items);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,6 @@

package com.evolveum.midpoint.gui.impl.page.admin.simulation;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.LambdaColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.basic.MultiLineLabel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.authentication.api.authorization.AuthorizationAction;
import com.evolveum.midpoint.authentication.api.authorization.PageDescriptor;
import com.evolveum.midpoint.authentication.api.authorization.Url;
Expand All @@ -48,8 +25,6 @@
import com.evolveum.midpoint.schema.DeltaConvertor;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb;
import com.evolveum.midpoint.web.component.data.CountToolbar;
import com.evolveum.midpoint.web.component.data.SelectableDataTable;
Expand All @@ -65,6 +40,28 @@
import com.evolveum.midpoint.web.page.error.PageError404;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.LambdaColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.basic.MultiLineLabel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

/**
* Created by Viliam Repan (lazyman).
Expand All @@ -89,8 +86,6 @@ public class PageSimulationResultObject extends PageAdmin implements SimulationP

private static final long serialVersionUID = 1L;

private static final Trace LOGGER = TraceManager.getTrace(PageSimulationResultObject.class);

private static final String ID_NAVIGATION = "navigation";
private static final String ID_DETAILS = "details";
private static final String ID_RELATED_OBJECTS = "relatedObjects";
Expand Down Expand Up @@ -384,9 +379,15 @@ protected String getPaginationCssClass() {
@Override
protected List<ObjectDeltaType> load() {
ObjectDeltaType delta = objectModel.getObject().getDelta();
if (delta == null) {
return Collections.emptyList();
}

try {
ProcessedObject<?> object = SimulationsGuiUtil.parseProcessedObject(objectModel.getObject(), PageSimulationResultObject.this);

if (object == null || object.getDelta() == null) {
return Collections.emptyList();
}
// this should provide better delta - with proper estimated old values, since simulation processed object
// contains before/after state of object together with delta
delta = DeltaConvertor.toObjectDeltaType(object.getDelta());
Expand All @@ -398,7 +399,7 @@ protected List<ObjectDeltaType> load() {
}
};

ChangesPanel changesNew = new ChangesPanel(ID_CHANGES_NEW, () -> Arrays.asList(objectModel.getObject().getDelta()), null);
ChangesPanel changesNew = new ChangesPanel(ID_CHANGES_NEW, deltas, null);
changesNew.setShowOperationalItems(true);
changesNew.add(new VisibleBehaviour(() -> !isExperimentalFeaturesDisabled()));
add(changesNew);
Expand All @@ -415,7 +416,7 @@ private boolean isExperimentalFeaturesDisabled() {
}

CompiledGuiProfile profile = principal.getCompiledGuiProfile();
return profile != null && BooleanUtils.isFalse(profile.isEnableExperimentalFeatures());
return BooleanUtils.isFalse(profile.isEnableExperimentalFeatures());
}

private List<IColumn<SelectableBean<SimulationResultProcessedObjectType>, String>> createColumns() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
Expand Down Expand Up @@ -66,6 +65,7 @@ public class PageSimulationResultObjects extends PageAdmin implements Simulation
public static final String PAGE_QUERY_PARAMETER = "state";

private static final String ID_NAVIGATION = "navigation";
private static final String ID_FORM = "form";
private static final String ID_TABLE = "table";

private IModel<SimulationResultType> resultModel;
Expand Down Expand Up @@ -165,7 +165,9 @@ protected void onBackPerformed(AjaxRequestTarget target) {
};
add(navigation);

MidpointForm form = new MidpointForm("form");
MidpointForm form = new MidpointForm(ID_FORM);
add(form);

ProcessedObjectsPanel table = new ProcessedObjectsPanel(ID_TABLE, availableMarksModel) {

@Override
Expand Down Expand Up @@ -206,7 +208,6 @@ protected String getMarkOid() {
}
};
form.add(table);
add(form);
}

private void onBackPerformed() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel;
import com.evolveum.midpoint.gui.api.component.data.provider.ISelectableDataProvider;
import com.evolveum.midpoint.gui.api.component.result.OperationResultPopupPanel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.LocalizationUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.ContainerableListPanel;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
Expand All @@ -25,6 +28,7 @@
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.DeltaConvertor;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.result.OperationResultStatus;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.util.MiscUtil;
Expand All @@ -41,7 +45,6 @@
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType;

import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -159,11 +162,48 @@ protected boolean isTitleLinkEnabled() {
protected void onTitleClicked(AjaxRequestTarget target) {
onObjectNameClicked(rowModel.getObject());
}

@Override
protected void onIconClicked(AjaxRequestTarget target) {
showOperationResult(target, model);
}

@Override
protected IModel<String> createIconCssModel() {
return () -> {
OperationResultStatus status = model.getObject().getResultStatus();
if (status == null) {
return null;
}

return status.isConsideredSuccess() ? null : GuiStyleConstants.CLASS_OP_RESULT_STATUS_ICON_WARNING_COLORED;
};
}

@Override
protected IModel<String> createIconTitleModel() {
return () -> {
OperationResultStatus status = model.getObject().getResultStatus();
if (status == null) {
return null;
}

return getString(LocalizationUtil.createKeyForEnum(status));
};
}
});
}
};
}

private void showOperationResult(AjaxRequestTarget target, IModel<ProcessedObject<?>> model) {
PageBase page = getPageBase();

IModel<OperationResult> result = () -> model.getObject().getResult();

page.showMainPopup(new OperationResultPopupPanel(page.getMainPopupBodyId(), result), target);
}

private String createProcessedObjectDescription(ProcessedObject<?> obj) {
if (obj == null) {
return null;
Expand Down Expand Up @@ -352,7 +392,7 @@ private IColumn<SelectableBean<SimulationResultProcessedObjectType>, String> cre
return new AbstractColumn<>(displayModel, SimulationResultProcessedObjectType.F_STATE.getLocalPart()) {
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<SimulationResultProcessedObjectType>>> item, String id,
IModel<SelectableBean<SimulationResultProcessedObjectType>> row) {
IModel<SelectableBean<SimulationResultProcessedObjectType>> row) {

item.add(SimulationsGuiUtil.createProcessedObjectStateLabel(id, () -> row.getObject().getValue()));
}
Expand Down Expand Up @@ -399,7 +439,7 @@ public void refreshTable(AjaxRequestTarget target) {
}

private void markObjects(IModel<SelectableBean<SimulationResultProcessedObjectType>> rowModel, List<String> markOids,
AjaxRequestTarget target) {
AjaxRequestTarget target) {
OperationResult result = new OperationResult(OPERATION_MARK_SHADOW);
Task task = getPageBase().createSimpleTask(OPERATION_MARK_SHADOW);

Expand Down Expand Up @@ -435,8 +475,8 @@ private void markObjects(IModel<SelectableBean<SimulationResultProcessedObjectTy
statements.toArray(new PolicyStatementType[0]));
getPageBase().getModelService().executeChanges(MiscUtil.createCollection(delta), null, task, result);
} catch (ObjectAlreadyExistsException | ObjectNotFoundException | SchemaException
| ExpressionEvaluationException | CommunicationException | ConfigurationException
| PolicyViolationException | SecurityViolationException e) {
| ExpressionEvaluationException | CommunicationException | ConfigurationException
| PolicyViolationException | SecurityViolationException e) {
result.recordPartialError(
createStringResource(
"ResourceContentPanel.message.markShadowPerformed.partialError", shadow)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@
package com.evolveum.midpoint.gui.impl.page.admin.simulation;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import javax.xml.namespace.QName;

Expand Down Expand Up @@ -175,18 +172,39 @@ public static String getProcessedObjectName(ProcessedObject<?> object, PageBase

ObjectType obj = ObjectProcessingStateType.DELETED.equals(object.getState()) ? object.getBefore() : object.getAfter();
if (obj == null) {
return LocalizationUtil.translatePolyString(obj.getName());
return page.getString("ProcessedObjectsPanel.unnamed");
}

String name = obj.getName() != null ? obj.getName().getOrig() : null;

String displayName = null;
if (obj instanceof ShadowType) {
try {
return getProcessedShadowName((ShadowType) obj, page);
displayName = getProcessedShadowName((ShadowType) obj, page);
} catch (SystemException ex) {
LOGGER.debug("Couldn't create processed shadow name", ex);
}
} else {
displayName = WebComponentUtil.getDisplayName(obj.asPrismObject());
}

if (name == null && displayName == null) {
return page.getString("ProcessedObjectsPanel.unnamed");
}

if (Objects.equals(name, displayName)) {
return name;
}

if (name == null) {
return displayName;
}

if (displayName == null) {
return name;
}

return WebComponentUtil.getDisplayNameAndName(obj.asPrismObject());
return name + " (" + displayName + ")";
}

private static String getProcessedShadowName(ShadowType shadow, PageBase page) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,15 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<a wicket:id="link">
<div wicket:id="title"/>
<div class="text-sm" wicket:id="descriptionContainer">
<i class="fa-solid fa-tag text-info mr-1"/>
<span class="text-secondary text-truncate" wicket:id="description"/>
</div>
</a>
<div>
<a wicket:id="link"><span wicket:id="title"/></a>
<a wicket:id="iconLink">
<i wicket:id="icon"/>
</a>
</div>
<div class="text-sm" wicket:id="descriptionContainer">
<i class="fa-solid fa-tag text-info mr-1"/>
<span class="text-secondary text-truncate" wicket:id="description"/>
</div>
</wicket:panel>
</html>

0 comments on commit b152fdc

Please sign in to comment.