Skip to content

Commit

Permalink
MID-8596 delta progress bar counter in simulation should count a bit …
Browse files Browse the repository at this point in the history
…better now (only non-operational values)
  • Loading branch information
1azyman committed Mar 16, 2023
1 parent cce07bf commit 7c8c814
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,6 @@

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

import java.util.*;
import java.util.stream.Collectors;
import javax.xml.namespace.QName;

import com.google.common.collect.Lists;
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.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.extensions.markup.html.repeater.data.table.LambdaColumn;
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.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel;
import com.evolveum.midpoint.gui.api.component.data.provider.ISelectableDataProvider;
Expand All @@ -37,9 +18,11 @@
import com.evolveum.midpoint.model.api.simulation.ProcessedObject;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.impl.DisplayableValueImpl;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.DeltaConvertor;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DisplayableValue;
Expand All @@ -58,6 +41,25 @@
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;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
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.extensions.markup.html.repeater.data.table.LambdaColumn;
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 javax.xml.namespace.QName;
import java.util.*;
import java.util.stream.Collectors;

/**
* Created by Viliam Repan (lazyman).
*/
Expand Down Expand Up @@ -323,10 +325,23 @@ private IColumn<SelectableBean<SimulationResultProcessedObjectType>, String> cre
return new DeltaProgressBarColumn<>(createStringResource("ProcessedObjectsPanel.deltaColumn")) {

@Override
protected @NotNull IModel<ObjectDeltaType> createObjectDeltaModel(IModel<SelectableBean<SimulationResultProcessedObjectType>> rowModel) {
protected @NotNull IModel<ObjectDelta<?>> createObjectDeltaModel(IModel<SelectableBean<SimulationResultProcessedObjectType>> rowModel) {
return () -> {
SimulationResultProcessedObjectType object = rowModel.getObject().getValue();
return object != null ? object.getDelta() : null;
ObjectDeltaType delta = object != null ? object.getDelta() : null;
if (delta == null) {
return null;
}

try {
return DeltaConvertor.createObjectDelta(delta);
} catch (SchemaException ex) {
LOGGER.debug("Couldn't parse object delta", ex);

getPageBase().error(ex.getMessage());

return null;
}
};
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

Expand All @@ -12,11 +13,10 @@

import com.evolveum.midpoint.gui.api.component.progressbar.ProgressBar;
import com.evolveum.midpoint.gui.api.util.LocalizationUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.util.SingleLocalizableMessage;
import com.evolveum.prism.xml.ns._public.types_3.ItemDeltaType;
import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType;
import com.evolveum.prism.xml.ns._public.types_3.ObjectType;

public abstract class DeltaProgressBarColumn<R extends Serializable, S extends Serializable> extends ProgressBarColumn<R, S> {

Expand All @@ -28,22 +28,23 @@ public DeltaProgressBarColumn(IModel<String> displayModel) {
super(displayModel);
}

protected abstract @NotNull IModel<ObjectDeltaType> createObjectDeltaModel(IModel<R> rowModel);
protected abstract @NotNull IModel<ObjectDelta<?>> createObjectDeltaModel(IModel<R> rowModel);

@Override
protected @NotNull IModel<List<ProgressBar>> createProgressBarModel(IModel<R> rowModel) {
return new LoadableDetachableModel<>() {

@Override
protected List<ProgressBar> load() {
ObjectDeltaType delta = createObjectDeltaModel(rowModel).getObject();
ObjectDelta<?> delta = createObjectDeltaModel(rowModel).getObject();

if (delta == null) {
return Collections.emptyList();
}

switch (delta.getChangeType()) {
case ADD:
int size = getSizeForAddDelta(delta);
long size = getSizeForAddDelta(delta);

return Collections.singletonList(new ProgressBar(100, ProgressBar.State.SUCCESS,
new SingleLocalizableMessage(KEY_ADDED, new Object[] { size }, KEY_ADDED)));
Expand All @@ -52,23 +53,23 @@ protected List<ProgressBar> load() {
default:
}

List<ItemDeltaType> deltas = delta.getItemDelta();
int total = deltas.size();
Collection<? extends ItemDelta<?, ?>> deltas = delta.getModifications();
long total = deltas.stream().filter(i -> !i.isOperational()).count();
int add = 0;
int modify = 0;
int delete = 0;

for (ItemDeltaType id : deltas) {
switch (id.getModificationType()) {
case ADD:
add++;
break;
case REPLACE:
modify++;
break;
case DELETE:
delete++;
break;
for (ItemDelta<?, ?> id : deltas) {
if (id.isOperational()) {
continue;
}

if (id.isAdd()) {
add++;
} else if (id.isReplace()) {
modify++;
} else if (id.isDelete()) {
delete++;
}
}

Expand All @@ -80,7 +81,7 @@ protected List<ProgressBar> load() {
return bars;
}

private void addProgressBar(List<ProgressBar> bars, ProgressBar.State state, int size, int total, String key) {
private void addProgressBar(List<ProgressBar> bars, ProgressBar.State state, int size, long total, String key) {
if (size == 0) {
return;
}
Expand All @@ -93,13 +94,13 @@ private void addProgressBar(List<ProgressBar> bars, ProgressBar.State state, int
};
}

private int getSizeForAddDelta(ObjectDeltaType delta) {
ObjectType obj = delta.getObjectToAdd();
if (obj == null || obj.asPrismObject().isEmpty()) {
private long getSizeForAddDelta(ObjectDelta<?> delta) {
PrismObject<?> obj = delta.getObjectToAdd();
if (obj == null || obj.isEmpty()) {
return 0;
}

return delta.getObjectToAdd().asPrismObject().getValue().getItems().size();
return obj.getValue().getItems().stream().filter(i -> !i.isOperational()).count();
}

@Override
Expand All @@ -111,7 +112,7 @@ protected String load() {
List<ProgressBar> bars = model.getObject();
Object[] texts = bars.stream()
.filter(bar -> bar.getText() != null)
.map(bar -> WebComponentUtil.translateMessage(bar.getText()))
.map(bar -> LocalizationUtil.translateMessage(bar.getText()))
.filter(StringUtils::isNotEmpty)
.toArray();

Expand All @@ -120,19 +121,19 @@ protected String load() {
return null;
}

ObjectDeltaType delta = createObjectDeltaModel(rowModel).getObject();
ObjectDelta<?> delta = createObjectDeltaModel(rowModel).getObject();
if (delta == null) {
return msg;
}

int count;
long count;
switch (delta.getChangeType()) {
case ADD:
count = getSizeForAddDelta(delta);
break;
case DELETE:
default:
count = delta.getItemDelta().size();
count = delta.getModifications().size();
}

return LocalizationUtil.translate("ProcessedObjectsPanel.progressMessage", new Object[] { msg, count });
Expand Down

0 comments on commit 7c8c814

Please sign in to comment.