Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Mar 16, 2023
2 parents 4a3cdf1 + 6ce16bd commit 6ff0cc5
Show file tree
Hide file tree
Showing 132 changed files with 2,326 additions and 1,087 deletions.
15 changes: 8 additions & 7 deletions gui/admin-gui/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion gui/admin-gui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"sparklines": "^1.3.0",
"style-loader": "^3.3.1",
"tempusdominus-bootstrap-4": "^5.39.2",
"webpack": "^5.75.0",
"webpack": "^5.76.0",
"webpack-cli": "^5.0.0",
"webpack-merge": "^5.8.0"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1433,6 +1433,21 @@ public static String getDisplayNameOrName(Referencable ref, boolean translate) {
return StringUtils.isNotEmpty(displayName) ? displayName : getName(ref, translate);
}

public static String getDisplayNameAndName(PrismObject<?> object) {
String displayName = getDisplayName(object);
String name = getName(object);

if (StringUtils.isEmpty(displayName)) {
return name;
}

if (StringUtils.isEmpty(name)) {
return displayName;
}

return displayName + " (" + name + ")";
}

// <display-name> (<name>) OR simply <name> if there's no display name
public static String getDisplayNameAndName(ObjectReferenceType ref) {
return getDisplayNameOrName(ref, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,11 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.evolveum.midpoint.gui.api.util.ModelServiceLocator;
import com.evolveum.midpoint.gui.impl.component.search.factory.*;
import com.evolveum.midpoint.gui.impl.component.search.wrapper.PropertySearchItemWrapper;
import com.evolveum.midpoint.gui.impl.page.admin.simulation.AvailableMarkItemWrapperFactory;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.path.PathKeyedMap;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SearchItemType;

Expand All @@ -26,6 +23,7 @@ public class SearchConfigurationWrapperFactory {

static {
factories.add(new AvailableMarkItemWrapperFactory());
factories.add(new ProcessedObjectTypeItemWrapperFactory());
factories.add(new DeadShadowSearchItemWrapperFactory());
factories.add(new ChoicesSearchItemWrapperFactory());
factories.add(new AutocompleteSearchItemWrapperFactory());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.gui.impl.page.admin.simulation;
package com.evolveum.midpoint.gui.impl.component.search.factory;

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

import com.evolveum.midpoint.gui.impl.component.search.SearchContext;
import com.evolveum.midpoint.gui.impl.component.search.factory.AbstractSearchItemWrapperFactory;
import com.evolveum.midpoint.gui.impl.component.search.factory.SearchItemContext;
import com.evolveum.midpoint.gui.impl.component.search.wrapper.AvailableMarkSearchItemWrapper;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultProcessedObjectType;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright (c) 2010-2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.gui.impl.component.search.factory;

import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.impl.component.search.wrapper.ProcessedObjectTypeSearchItemWrapper;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultProcessedObjectType;

/**
* Created by Viliam Repan (lazyman).
*/
public class ProcessedObjectTypeItemWrapperFactory extends AbstractSearchItemWrapperFactory<QName, ProcessedObjectTypeSearchItemWrapper> {

@Override
protected ProcessedObjectTypeSearchItemWrapper createSearchWrapper(SearchItemContext ctx) {
return new ProcessedObjectTypeSearchItemWrapper();
}

@Override
public boolean match(SearchItemContext ctx) {
return SimulationResultProcessedObjectType.F_TYPE.equivalent(ctx.getPath());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.gui.impl.page.admin.simulation;
package com.evolveum.midpoint.gui.impl.component.search.wrapper;

import java.util.List;
import java.util.Objects;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.impl.component.search.wrapper.ChoicesSearchItemWrapper;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.expression.VariablesMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,26 @@
*/
package com.evolveum.midpoint.gui.impl.component.search.wrapper;

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

import org.apache.commons.lang3.StringUtils;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.search.SearchValue;
import com.evolveum.midpoint.gui.impl.component.search.panel.ObjectTypeSearchItemPanel;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.gui.impl.component.search.SearchValue;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectTypeSearchItemConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SearchBoxModeType;

import org.apache.commons.lang3.StringUtils;

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

public class ObjectTypeSearchItemWrapper extends FilterableSearchItemWrapper<QName> {

private QName oldType;
private boolean typeChanged;
private boolean allowAllTypesSearch;

Expand All @@ -54,8 +52,8 @@ private void convertSupportedTypeList(List<QName> supportedTypeList) {
return;
}
this.supportedTypeList = supportedTypeList.stream()
.map(qName -> WebComponentUtil.qnameToAnyClass(PrismContext.get(), qName))
.collect(Collectors.toList());
.map(qName -> WebComponentUtil.qnameToAnyClass(PrismContext.get(), qName))
.collect(Collectors.toList());
}

public Class<ObjectTypeSearchItemPanel> getSearchItemPanelClass() {
Expand Down Expand Up @@ -104,7 +102,7 @@ public void setName(String name) {

@Override
public String getHelp() {
return StringUtils.isNotEmpty(help) ? help : "";
return StringUtils.isNotEmpty(help) ? help : "";
}

public void setHelp(String help) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* Copyright (c) 2010-2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.gui.impl.component.search.wrapper;

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

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.impl.DisplayableValueImpl;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultProcessedObjectType;

/**
* Created by Viliam Repan (lazyman).
*/
public class ProcessedObjectTypeSearchItemWrapper extends ChoicesSearchItemWrapper<QName> {

public ProcessedObjectTypeSearchItemWrapper() {
super(SimulationResultProcessedObjectType.F_TYPE,
WebComponentUtil.createObjectTypesList().stream()
.map(o -> new DisplayableValueImpl<QName>(o.getTypeQName(), WebComponentUtil.createEnumResourceKey(o)))
.collect(Collectors.toList()));
}

@Override
public ObjectFilter createFilter(Class type, PageBase pageBase, VariablesMap variables) {
if (getValue().getValue() == null) {
return null;
}

return PrismContext.get().queryFor(SimulationResultProcessedObjectType.class)
.item(getPath()).eq(getValue().getValue()).buildFilter();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,26 @@

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

import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import javax.xml.datatype.XMLGregorianCalendar;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.basic.Label;
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.LoadableDetachableModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

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 @@ -30,36 +50,13 @@
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb;
import com.evolveum.midpoint.web.component.util.SerializableConsumer;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.PageAdmin;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.basic.Label;
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.LoadableDetachableModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import javax.xml.datatype.XMLGregorianCalendar;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;

/**
* Created by Viliam Repan (lazyman).
*/
Expand Down Expand Up @@ -241,31 +238,26 @@ protected List<DashboardWidgetType> load() {
}

private void addBuiltInMetrics(List<DetailsTableItem> result) {
List<SimulationMetricValuesType> metrics = resultModel.getObject().getMetric();
List<SimulationMetricValuesType> builtIn = metrics.stream().filter(m -> m.getRef() != null && m.getRef().getBuiltIn() != null)
.collect(Collectors.toList());
SimulationResultType simResult = resultModel.getObject();
Map<BuiltInSimulationMetricType, Integer> builtIn = SimulationsGuiUtil.getBuiltInMetrics(simResult);

List<DetailsTableItem> items = new ArrayList<>();

int totalCount = SimulationResultTypeUtil.getObjectsProcessed(resultModel.getObject());
int unmodifiedCount = totalCount;

for (SimulationMetricValuesType metric : builtIn) {
BuiltInSimulationMetricType identifier = metric.getRef().getBuiltIn();

BigDecimal value = SimulationMetricValuesTypeUtil.getValue(metric);
unmodifiedCount = unmodifiedCount - value.intValue();
for (Map.Entry<BuiltInSimulationMetricType, Integer> entry : builtIn.entrySet()) {
BuiltInSimulationMetricType identifier = entry.getKey();
int value = entry.getValue();

items.add(createDetailsItemForBuiltInMetric(identifier, value));
}

final int finalUnmodified = unmodifiedCount;
int unmodifiedCount = SimulationsGuiUtil.getUnmodifiedProcessedObjectCount(simResult, builtIn);

items.sort(Comparator.comparing(d -> d.getLabel().getObject(), Comparator.naturalOrder()));

items.add(createDetailsItemForBuiltInMetric(
createStringResource("PageSimulationResultObject.UnmodifiedObjects"),
() -> Integer.toString(finalUnmodified),
() -> Integer.toString(unmodifiedCount),
target -> redirectToProcessedObjects((BuiltInSimulationMetricType) null))
);

Expand All @@ -278,14 +270,14 @@ private void addBuiltInMetrics(List<DetailsTableItem> result) {
result.addAll(items);
}

private DetailsTableItem createDetailsItemForBuiltInMetric(BuiltInSimulationMetricType identifier, BigDecimal value) {
private DetailsTableItem createDetailsItemForBuiltInMetric(BuiltInSimulationMetricType identifier, Number value) {
IModel<String> nameModel = createStringResource("PageSimulationResultObject." + WebComponentUtil.createEnumResourceKey(identifier));
IModel<String> valueModel = () -> MetricWidgetPanel.formatValue(value, getPrincipal().getLocale());

return createDetailsItemForBuiltInMetric(nameModel, valueModel, target -> redirectToProcessedObjects(identifier));
}

private DetailsTableItem createDetailsItemForBuiltInMetric(IModel<String> name, IModel<String> value, Consumer<AjaxRequestTarget> onClickHandler) {
private DetailsTableItem createDetailsItemForBuiltInMetric(IModel<String> name, IModel<String> value, SerializableConsumer<AjaxRequestTarget> onClickHandler) {
return new DetailsTableItem(name, value) {

@Override
Expand Down Expand Up @@ -352,7 +344,7 @@ protected void onBackPerformed(AjaxRequestTarget target) {

@Override
protected AjaxLink<?> createNextButton(String id, IModel<String> nextTitle) {
AjaxIconButton next = new AjaxIconButton(id, () -> "fa-solid fa-magnifying-glass mr-2", () -> "View results") {
AjaxIconButton next = new AjaxIconButton(id, () -> "fa-solid fa-magnifying-glass mr-2", () -> getString("PageSimulationResult.viewProcessedObjects")) {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
onViewAllPerformed();
Expand Down

0 comments on commit 6ff0cc5

Please sign in to comment.