Skip to content

Commit

Permalink
simulation result -> processed objects filterd by state (not working …
Browse files Browse the repository at this point in the history
…yet)
  • Loading branch information
1azyman committed Mar 6, 2023
1 parent b094221 commit 5debb2c
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
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;
Expand All @@ -43,6 +44,7 @@
import com.evolveum.midpoint.gui.impl.page.admin.task.PageTask;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.impl.PrismPropertyValueImpl;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.util.ConfigurationSpecificationTypeUtil;
import com.evolveum.midpoint.schema.util.SimulationMetricValuesTypeUtil;
import com.evolveum.midpoint.schema.util.ValueDisplayUtil;
Expand Down Expand Up @@ -144,6 +146,13 @@ protected List<DetailsTableItem> load() {
public Component createValueComponent(String id) {
AjaxButton link = new AjaxButton(id, () -> getTaskName()) {

@Override
protected void onComponentTag(ComponentTag tag) {
tag.setName("a"); // to override default <span> element

super.onComponentTag(tag);
}

@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
redirectToTaskDetails();
Expand Down Expand Up @@ -171,6 +180,8 @@ public Component createValueComponent(String id) {
return getString("PageSimulationResult.development");
}));

addBuiltInMetrics(list);

return list;
}
};
Expand Down Expand Up @@ -228,6 +239,75 @@ 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());

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

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

BigDecimal value = SimulationMetricValuesTypeUtil.getValue(metric);
items.add(new DetailsTableItem(
createStringResource("PageSimulationResultObject." + WebComponentUtil.createEnumResourceKey(identifier)),
() -> MetricWidgetPanel.formatValue(value, getPrincipal().getLocale())) {

@Override
public Component createValueComponent(String id) {
AjaxButton link = new AjaxButton(id, getValue()) {

@Override
protected void onComponentTag(ComponentTag tag) {
tag.setName("a"); // to override default <span> element

super.onComponentTag(tag);
}

@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
redirectToProcessedObjects(identifier);
}
};

return link;
}
});
}

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

result.addAll(items);
}

private void redirectToProcessedObjects(BuiltInSimulationMetricType identifier) {
ObjectProcessingStateType state = null;
switch (identifier) {
case ADDED:
state = ObjectProcessingStateType.ADDED;
break;
case MODIFIED:
state = ObjectProcessingStateType.MODIFIED;
break;
case DELETED:
state = ObjectProcessingStateType.DELETED;
break;
}

ObjectFilter filter = null;
if (state != null) {
filter = getPrismContext().queryFor(SimulationResultProcessedObjectType.class)
.item(SimulationResultProcessedObjectType.F_STATE).eq(state)
.buildFilter();
}

PageParameters params = new PageParameters();
params.set(SimulationPage.PAGE_PARAMETER_RESULT_OID, getPageParameterResultOid());

navigateToNext(new PageSimulationResultObjects(params, filter));
}

private void initLayout() {
NavigationPanel navigation = new NavigationPanel(ID_NAVIGATION) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.impl.binding.AbstractReferencable;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb;
Expand Down Expand Up @@ -70,6 +71,10 @@ public PageSimulationResultObjects() {
}

public PageSimulationResultObjects(PageParameters parameters) {
this(parameters, null);
}

public PageSimulationResultObjects(PageParameters parameters, ObjectFilter objectFilter) {
super(parameters);

initModels();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
package com.evolveum.midpoint.gui.impl.page.admin.simulation;

import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.StringUtil;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.mapper.parameter.PageParameters;
Expand Down Expand Up @@ -44,10 +43,9 @@ default Long getPageParameterContainerId() {
PageParameters params = getPageParameters();
String id = params.get(PAGE_PARAMETER_CONTAINER_ID).toString();

if (!id.matches("[0-9]+")) {
if (!StringUtils.isNumeric(id)) {
return null;
}
StringUtils.isNumeric(id);

return Long.parseLong(id);
}
Expand Down

0 comments on commit 5debb2c

Please sign in to comment.