Skip to content

Commit

Permalink
simulation result processed object page with correct url mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Jan 16, 2023
1 parent e591683 commit 56588f0
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!--
~ Copyright (c) 2021 Evolveum
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:extend>
simulation result processed object details
</wicket:extend>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/*
* 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.page.admin.simulation;

import com.evolveum.midpoint.authentication.api.authorization.AuthorizationAction;
import com.evolveum.midpoint.authentication.api.authorization.PageDescriptor;
import com.evolveum.midpoint.authentication.api.authorization.Url;
import com.evolveum.midpoint.common.Utils;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.web.page.admin.PageAdmin;
import com.evolveum.midpoint.web.page.error.PageError404;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultType;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.jetbrains.annotations.NotNull;

/**
* Created by Viliam Repan (lazyman).
*/
@PageDescriptor(
urls = {
@Url(mountUrl = "/admin/simulations/result/${RESULT_OID}/object/${CONTAINER_ID}"),
@Url(mountUrl = "/admin/simulations/result/${RESULT_OID}/tag/${TAG_OID}/object/${CONTAINER_ID}")
},
action = {
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_SIMULATIONS_ALL_URL,
label = "PageSimulationResults.auth.simulationsAll.label",
description = "PageSimulationResults.auth.simulationsAll.description"),
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_SIMULATION_PROCESSED_OBJECT_URL,
label = "PageSimulationResultObject.auth.simulationProcessedObject.label",
description = "PageSimulationResultObject.auth.simulationProcessedObject.description")
}
)
public class PageSimulationResultObject extends PageAdmin {

private static final long serialVersionUID = 1L;

private static final String PAGE_PARAMETER_RESULT_OID = "RESULT_OID";
private static final String PAGE_PARAMETER_TAG_OID = "TAG_OID";

private static final String ID_TABLE = "table";

public PageSimulationResultObject() {
this(new PageParameters());
}

public PageSimulationResultObject(PageParameters parameters) {
super(parameters);

initLayout();
}

private void initLayout() {

}

private String getPageParameterResultOid() {
PageParameters params = getPageParameters();
return params.get(PAGE_PARAMETER_RESULT_OID).toString();
}

private String getPageParameterTagOid() {
PageParameters params = getPageParameters();
return params.get(PAGE_PARAMETER_TAG_OID).toString();
}

@Override
protected IModel<String> createPageTitleModel() {
return () -> {
String oid = getPageParameterResultOid();

if (!Utils.isPrismObjectOidValid(oid)) {
throw new RestartResponseException(PageError404.class);
}

String name = WebModelServiceUtils.resolveReferenceName(
new ObjectReferenceType().oid(oid).type(SimulationResultType.COMPLEX_TYPE), this);

return getString("PageSimulationResultObjects.title", name);
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,13 @@
@Url(mountUrl = "/admin/simulations/result/${RESULT_OID}/objects"),
@Url(mountUrl = "/admin/simulations/result/${RESULT_OID}/tag/${TAG_OID}")
},
// todo authorizations
action = {
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_SIMULATIONS_ALL_URL,
label = "PageSimulationResults.auth.simulationsAll.label",
description = "PageSimulationResults.auth.simulationsAll.description"),
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_SIMULATION_RESULT_URL,
label = "PageSimulationResults.auth.simulationResult.label",
description = "PageSimulationResults.auth.simulationResult.description")
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_SIMULATION_PROCESSED_OBJECTS_URL,
label = "PageSimulationResultObjects.auth.simulationProcessedObjects.label",
description = "PageSimulationResultObjects.auth.simulationProcessedObjects.description")
}
)
public class PageSimulationResultObjects extends PageAdmin {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,22 @@
import java.util.List;
import java.util.stream.Collectors;

import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.web.component.data.column.RoundedIconColumn;

import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType;

import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.IResource;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.ContainerableListPanel;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.web.component.data.ISelectableDataProvider;
import com.evolveum.midpoint.web.component.data.column.AjaxLinkColumn;
import com.evolveum.midpoint.web.component.data.column.RoundedIconColumn;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SimulationResultProcessedObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

/**
* Created by Viliam Repan (lazyman).
Expand Down Expand Up @@ -66,6 +65,51 @@ protected IModel<IResource> createPreferredImage(IModel<SelectableBean<Simulatio
};
}

@Override
protected IColumn<SelectableBean<SimulationResultProcessedObjectType>, String> createNameColumn(
IModel<String> displayModel, GuiObjectColumnType customColumn, ExpressionType expression) {

displayModel = displayModel == null ? createStringResource("ProcessedObjectsPanel.nameColumn") : displayModel;

return new AjaxLinkColumn<>(displayModel, ProcessedObjectsProvider.SORT_BY_NAME, null) {
private static final long serialVersionUID = 1L;

@Override
public IModel<String> createLinkModel(IModel<SelectableBean<SimulationResultProcessedObjectType>> rowModel) {
return () -> {
SelectableBean bean = rowModel.getObject();
if (bean == null) {
return null;
}

// todo if bean.getValue == null || bean.getResult is not success - show warning/error with some text instead of name
SimulationResultProcessedObjectType obj = rowModel.getObject().getValue();
if (obj == null) {
return null;
}

return WebComponentUtil.getTranslatedPolyString(obj.getName());
};
}

@Override
public void onClick(AjaxRequestTarget target, IModel<SelectableBean<SimulationResultProcessedObjectType>> rowModel) {
onObjectNameClicked(target, rowModel.getObject());
}
};
}

private void onObjectNameClicked(AjaxRequestTarget target, SelectableBean<SimulationResultProcessedObjectType> bean) {
// todo implement

PageParameters params = new PageParameters();
params.set("RESULT_OID", "123");
params.set("TAG_OID", "456");
params.set("CONTAINER_ID", "789");

setResponsePage( new PageSimulationResultObject(params));
}

@Override
protected ISelectableDataProvider<SelectableBean<SimulationResultProcessedObjectType>> createProvider() {
return new ProcessedObjectsProvider(this, getSearchModel()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
*/
public class ProcessedObjectsProvider extends SelectableBeanContainerDataProvider<SimulationResultProcessedObjectType> {

public static final String SORT_BY_NAME = "name";

public ProcessedObjectsProvider(Component component, @NotNull IModel<Search<SimulationResultProcessedObjectType>> search) {
super(component, search, null, false);
}
Expand Down

0 comments on commit 56588f0

Please sign in to comment.