diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaigns.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaigns.java index 101ae4306aa..9876606b189 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaigns.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaigns.java @@ -17,13 +17,22 @@ package com.evolveum.midpoint.web.page.admin.certification; import com.evolveum.midpoint.certification.api.CertificationManager; +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.prism.query.EqualFilter; +import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.prism.query.RefFilter; import com.evolveum.midpoint.prism.xml.XmlTypeConverter; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; +import com.evolveum.midpoint.schema.constants.ObjectTypes; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.CertCampaignTypeUtil; +import com.evolveum.midpoint.schema.util.ObjectTypeUtil; import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.util.exception.SchemaException; +import com.evolveum.midpoint.util.exception.SystemException; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.application.AuthorizationAction; @@ -36,9 +45,12 @@ import com.evolveum.midpoint.web.component.data.column.LinkColumn; import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; +import com.evolveum.midpoint.web.util.WebModelUtils; import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignStateType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationDefinitionType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationStageType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType; import org.apache.commons.lang.time.DurationFormatUtils; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -54,6 +66,7 @@ import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.string.StringValue; import javax.xml.datatype.XMLGregorianCalendar; import java.util.ArrayList; @@ -63,7 +76,7 @@ /** * @author mederly */ -@PageDescriptor(url = "/admin/certificationCampaigns", action = { +@PageDescriptor(url = "/admin/certificationCampaigns", encoder = OnePageParameterEncoder.class, action = { @AuthorizationAction(actionUri = PageAdminCertification.AUTH_CERTIFICATION_ALL, label = PageAdminCertification.AUTH_CERTIFICATION_ALL_LABEL, description = PageAdminCertification.AUTH_CERTIFICATION_ALL_DESCRIPTION) @@ -86,10 +99,31 @@ public class PageCertCampaigns extends PageAdminCertification { public static final String OP_OPEN_NEXT_STAGE = "PageCertCampaigns.button.openNextStage"; public static final String OP_START_REMEDIATION = "PageCertCampaigns.button.startRemediation"; - public PageCertCampaigns() { + public PageCertCampaigns(PageParameters parameters) { + getPageParameters().overwriteWith(parameters); initLayout(); } + @Override + protected IModel createPageSubTitleModel(){ + return new AbstractReadOnlyModel() { + @Override + public String getObject() { + String definitionOid = getDefinitionOid(); + if (definitionOid == null) { + return null; + } + PrismObject definitionPrismObject = + WebModelUtils.loadObject(AccessCertificationDefinitionType.class, definitionOid, new OperationResult("dummy"), PageCertCampaigns.this); + if (definitionPrismObject == null) { + return null; + } + return definitionPrismObject.asObjectable().getName().getOrig(); + } + }; + } + + private void initLayout() { Form mainForm = new Form(ID_MAIN_FORM); add(mainForm); @@ -379,6 +413,23 @@ private TablePanel getCampaignsTable() { private ObjectQuery createQuery() { // TODO filtering based on e.g. campaign state/stage (not started, active, finished) ObjectQuery query = new ObjectQuery(); + String definitionOid = getDefinitionOid(); + if (definitionOid != null) { + ObjectReferenceType ref = ObjectTypeUtil.createObjectRef(definitionOid, ObjectTypes.ACCESS_CERTIFICATION_DEFINITION); + ObjectFilter filter = null; + try { + filter = RefFilter.createReferenceEqual(new ItemPath(AccessCertificationCampaignType.F_DEFINITION_REF), + AccessCertificationCampaignType.class, getPrismContext(), ref.asReferenceValue()); + } catch (SchemaException e) { + throw new SystemException("Unexpected schema exception: " + e.getMessage(), e); + } + query = ObjectQuery.createObjectQuery(filter); + } return query; } + + private String getDefinitionOid() { + StringValue definitionOid = getPageParameters().get(OnePageParameterEncoder.PARAMETER); + return definitionOid != null ? definitionOid.toString() : null; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.properties index 65c0292f06a..a8db539a26d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.properties +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.properties @@ -40,6 +40,8 @@ PageCertDecisions.menu.reduceSelected=Reduce selected PageCertDecisions.menu.notDecidedSelected=Mark selected as Not decided PageCertDecisions.menu.delegateSelected=Delegate selected PageCertDecisions.menu.noResponseSelected=Mark selected as No response +#PageCertDecisions.menu.showCommentField=Show comment field +#PageCertDecisions.menu.hideCommentField=Hide comment field PageCertDecisions.message.noItemSelected=No item selected diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.java index a509256d252..b996bc13daf 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.java @@ -108,16 +108,14 @@ public class PageResource extends PageAdminResources { private static final String ID_BUTTON_IMPORT_ACCOUNTS = "importAccounts"; private static final String ID_BUTTON_DELETE_SYNC_TOKEN = "deleteSyncToken"; - private PageParameters parameters; private IModel model; public PageResource() { - parameters = super.getPageParameters(); initialize(); } public PageResource(PageParameters parameters, PageTemplate previousPage) { - this.parameters = parameters; + getPageParameters().overwriteWith(parameters); setPreviousPage(previousPage); initialize(); } @@ -133,13 +131,6 @@ protected ResourceDto load() { initLayout(); } - // this is quite a hack - we construct this page (also) by explicitly passing 'parameters' value - // So, in order for methods using getPageParameters() to work, we override it here. - @Override - public PageParameters getPageParameters() { - return parameters; - } - private ResourceDto loadResourceDto() { if (!isResourceOidAvailable()) { getSession().error(getString("pageResource.message.oidNotDefined")); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRole.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRole.java index 89228f97541..979c93be844 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRole.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRole.java @@ -140,7 +140,6 @@ public class PageRole extends PageAdminRoles implements ProgressReportingAwarePa private IModel> maxAssignmentsModel; private ObjectWrapper roleWrapper; - private PageParameters parameters; private ProgressReporter progressReporter; private LoadableModel executeOptionsModel @@ -152,20 +151,12 @@ protected ExecuteChangeOptionsDto load() { } }; - // this is quite a hack - we construct this page (also) by explicitly passing 'parameters' value - // So, in order for methods using getPageParameters() to work, we override it here. - @Override - public PageParameters getPageParameters() { - return parameters; - } - public PageRole() { - parameters = super.getPageParameters(); initialize(); } public PageRole(PageParameters parameters, PageTemplate previousPage) { - this.parameters = parameters; + getPageParameters().overwriteWith(parameters); setPreviousPage(previousPage); initialize(); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageOrgUnit.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageOrgUnit.java index 35e97c80ae8..cf673c4afe7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageOrgUnit.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageOrgUnit.java @@ -130,7 +130,6 @@ public class PageOrgUnit extends PageAdminUsers implements ProgressReportingAwar private IModel extensionModel; private ObjectWrapper orgWrapper; - private PageParameters parameters; private ProgressReporter progressReporter; private ObjectDelta delta; @@ -143,26 +142,17 @@ protected ExecuteChangeOptionsDto load() { } }; - // this is quite a hack - we construct this page (also) by explicitly passing 'parameters' value - // So, in order for methods using getPageParameters() to work, we override it here. - @Override - public PageParameters getPageParameters() { - return parameters; - } - public PageOrgUnit() { - parameters = super.getPageParameters(); initialize(null); } //todo improve [erik] public PageOrgUnit(final PrismObject unitToEdit) { - parameters = super.getPageParameters(); initialize(unitToEdit); } public PageOrgUnit(PageParameters parameters, PageTemplate previousPage) { - this.parameters = parameters; + getPageParameters().overwriteWith(parameters); setPreviousPage(previousPage); initialize(null); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUser.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUser.java index 9d1ca73a5d2..01e029896bc 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUser.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUser.java @@ -195,33 +195,23 @@ protected ExecuteChangeOptionsDto load() { } }; - private PageParameters parameters; private ProgressReporter progressReporter; private ObjectDelta delta; // used to determine whether to leave this page or stay on it (after operation finishing) public PageUser() { - parameters = super.getPageParameters(); initialize(null); } public PageUser(PageParameters parameters, PageTemplate previousPage) { - this.parameters = parameters; + getPageParameters().overwriteWith(parameters); setPreviousPage(previousPage); initialize(null); } public PageUser(final PrismObject userToEdit) { - parameters = super.getPageParameters(); initialize(userToEdit); } - // this is quite a hack - we construct this page (also) by explicitly passing 'parameters' value - // So, in order for methods using getPageParameters() to work, we override it here. - @Override - public PageParameters getPageParameters() { - return parameters; - } - protected void initialize(final PrismObject userToEdit) { userModel = new LoadableModel(false) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/TreeTablePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/TreeTablePanel.java index 88404b1926c..a059f26172a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/TreeTablePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/TreeTablePanel.java @@ -52,6 +52,7 @@ import com.evolveum.midpoint.web.component.util.SimplePanel; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.page.PageBase; +import com.evolveum.midpoint.web.page.PageTemplate; import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction; import com.evolveum.midpoint.web.page.admin.users.PageOrgUnit; import com.evolveum.midpoint.web.page.admin.users.PageUser; @@ -616,7 +617,7 @@ public void onClick(AjaxRequestTarget target, IModel rowModel) { OrgTableDto dto = rowModel.getObject(); PageParameters parameters = new PageParameters(); parameters.add(OnePageParameterEncoder.PARAMETER, dto.getOid()); - setResponsePage(PageUser.class, parameters); + setResponsePage(new PageUser(parameters, (PageTemplate) target.getPage())); } }); columns.add(new PropertyColumn(createStringResource("UserType.givenName"), diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RAccessCertificationCampaign.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RAccessCertificationCampaign.java index a34859a0266..cf66e6ed7e3 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RAccessCertificationCampaign.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RAccessCertificationCampaign.java @@ -17,6 +17,7 @@ package com.evolveum.midpoint.repo.sql.data.common; import com.evolveum.midpoint.prism.PrismContext; +import com.evolveum.midpoint.repo.sql.data.common.embedded.REmbeddedReference; import com.evolveum.midpoint.repo.sql.data.common.embedded.RPolyString; import com.evolveum.midpoint.repo.sql.util.DtoTranslationException; import com.evolveum.midpoint.repo.sql.util.IdGeneratorResult; @@ -38,6 +39,7 @@ public class RAccessCertificationCampaign extends RObject { private RPolyString name; + private REmbeddedReference definitionRef; @Embedded public RPolyString getName() { @@ -48,6 +50,15 @@ public void setName(RPolyString name) { this.name = name; } + @Embedded + public REmbeddedReference getDefinitionRef() { + return definitionRef; + } + + public void setDefinitionRef(REmbeddedReference definitionRef) { + this.definitionRef = definitionRef; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -58,6 +69,8 @@ public boolean equals(Object o) { if (name != null ? !name.equals(rACR.name) : rACR.name != null) return false; + if (definitionRef != null ? !definitionRef.equals(rACR.definitionRef) : rACR.definitionRef != null) + return false; return true; } @@ -65,6 +78,7 @@ public boolean equals(Object o) { public int hashCode() { int result = super.hashCode(); result = 31 * result + (name != null ? name.hashCode() : 0); + // TODO definitionRef ? return result; } @@ -73,8 +87,8 @@ public static void copyFromJAXB(AccessCertificationCampaignType jaxb, RAccessCer throws DtoTranslationException { RObject.copyFromJAXB(jaxb, repo, prismContext, generatorResult); - repo.setName(RPolyString.copyFromJAXB(jaxb.getName())); + repo.setDefinitionRef(RUtil.jaxbRefToEmbeddedRepoRef(jaxb.getDefinitionRef(), prismContext)); } @Override