From 343127bd7dc17acefc1f32fa8951ec35d6651770 Mon Sep 17 00:00:00 2001 From: Erik Suta Date: Wed, 25 Feb 2015 12:53:55 +0100 Subject: [PATCH] MID-2212 fix - relation can be set in assignment only during assignment creation, not during assignment edit. --- .../assignment/AssignmentEditorPanel.html | 1 + .../assignment/AssignmentEditorPanel.java | 44 +++++++++++++++++++ .../AssignmentEditorPanel.properties | 1 + .../web/page/admin/roles/PageRole.java | 14 +++--- .../web/page/admin/users/PageOrgUnit.java | 18 ++++---- 5 files changed, 62 insertions(+), 16 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.html index b2e3cdc0d47..c89ec6c9844 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.html @@ -54,6 +54,7 @@
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.java index cc42831fbee..3b436f2aec8 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.java @@ -42,6 +42,7 @@ import com.evolveum.midpoint.web.page.PageBase; import com.evolveum.midpoint.web.page.admin.configuration.component.ChooseTypePanel; import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto; +import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus; import com.evolveum.midpoint.web.util.WebMiscUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import com.evolveum.prism.xml.ns._public.types_3.ItemPathType; @@ -97,6 +98,7 @@ public class AssignmentEditorPanel extends SimplePanel { private static final String ID_DESCRIPTION = "description"; private static final String ID_RELATION_CONTAINER = "relationContainer"; private static final String ID_RELATION = "relation"; + private static final String ID_RELATION_LABEL = "relationLabel"; private static final String ID_ADMINISTRATIVE_STATUS = "administrativeStatus"; private static final String ID_VALID_FROM = "validFrom"; private static final String ID_VALID_TO = "validTo"; @@ -343,8 +345,38 @@ public boolean isVisible() { "AssignmentEditorPanel.member", "AssignmentEditorPanel.manager", null); relation.setOutputMarkupId(true); relation.setOutputMarkupPlaceholderTag(true); + relation.add(new VisibleEnableBehaviour(){ + + @Override + public boolean isVisible() { + return isCreatingNewAssignment(); + } + }); relationContainer.add(relation); + Label relationLabel = new Label(ID_RELATION_LABEL, new AbstractReadOnlyModel() { + + @Override + public String getObject() { + if(getModel() == null || getModel().getObject() == null){ + return getString("AssignmentEditorPanel.relation.notSpecified"); + } + + AssignmentEditorDto object = getModel().getObject(); + return object.isOrgUnitManager() ? getString("AssignmentEditorPanel.manager") : getString("AssignmentEditorPanel.member"); + } + }); + relationLabel.setOutputMarkupId(true); + relationLabel.setOutputMarkupPlaceholderTag(true); + relationLabel.add(new VisibleEnableBehaviour(){ + + @Override + public boolean isVisible() { + return !isCreatingNewAssignment(); + } + }); + relationContainer.add(relationLabel); + WebMarkupContainer tenantRefContainer = new WebMarkupContainer(ID_CONTAINER_TENANT_REF); ChooseTypePanel tenantRef = new ChooseTypePanel(ID_TENANT_CHOOSER, new PropertyModel(getModel(), AssignmentEditorDto.F_TENANT_REF)){ @@ -738,4 +770,16 @@ private void showErrorPerformed(AjaxRequestTarget target){ error(getString("AssignmentEditorPanel.targetError")); target.add(getPageBase().getFeedbackPanel()); } + + /** + * Override to provide the information if object that contains this assignment + * is being edited or created. + * */ + protected boolean isCreatingNewAssignment(){ + if(getModelObject() == null){ + return false; + } + + return UserDtoStatus.ADD.equals(getModelObject().getStatus()); + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.properties index 80461f2a5d2..89c82353f22 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.properties +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.properties @@ -28,6 +28,7 @@ AssignmentEditorPanel.tenantRef=Tenant AssignmentEditorPanel.name.focus=(focus mapping) AssignmentEditorPanel.name.noTarget=(no target) AssignmentEditorPanel.showMore=Show more +AssignmentEditorPanel.relation.notSpecified="Not specified" AssignmentEditorPanel.member=Member AssignmentEditorPanel.manager=Manager AssignmentEditorPanel.targetError=Assignment target was not found. Either target oid is malformed or target object does not exist. 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 6d8d9d24ca6..a496833dc01 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 @@ -149,7 +149,7 @@ protected IModel createPageTitleModel(){ @Override protected String load() { - if(!isEditing()){ + if(!isEditingRole()){ return createStringResource("PageRoleEditor.title.newRole").getObject(); } @@ -164,7 +164,7 @@ protected IModel createPageSubTitleModel(){ @Override protected String load() { - if(!isEditing()){ + if(!isEditingRole()){ return createStringResource("PageRoleEditor.subtitle.newRole").getObject(); } @@ -179,7 +179,7 @@ private PrismObject loadRole(){ PrismObject role = null; try { - if (!isEditing()) { + if (!isEditingRole()) { RoleType r = new RoleType(); ActivationType defaultActivation = new ActivationType(); defaultActivation.setAdministrativeStatus(ActivationStatusType.ENABLED); @@ -211,7 +211,7 @@ private PrismObject loadRole(){ private ContainerWrapper loadRoleWrapper(){ OperationResult result = new OperationResult(OPERATION_CREATE_ROLE_WRAPPER); - ContainerStatus status = isEditing() ? ContainerStatus.MODIFYING : ContainerStatus.ADDING; + ContainerStatus status = isEditingRole() ? ContainerStatus.MODIFYING : ContainerStatus.ADDING; ObjectWrapper wrapper = null; ContainerWrapper extensionContainer = null; PrismObject role = model.getObject(); @@ -241,7 +241,7 @@ private ContainerWrapper loadRoleWrapper(){ return extensionContainer; } - private boolean isEditing(){ + private boolean isEditingRole(){ StringValue oid = getPageParameters().get(OnePageParameterEncoder.PARAMETER); return oid != null && StringUtils.isNotEmpty(oid.toString()); } @@ -440,7 +440,7 @@ private void savePerformed(AjaxRequestTarget target){ PrismObject newRole = model.getObject(); delta = null; - if (!isEditing()) { + if (!isEditingRole()) { //handle assignments PrismObjectDefinition orgDef = newRole.getDefinition(); @@ -478,7 +478,7 @@ private void savePerformed(AjaxRequestTarget target){ ObjectDelta extDelta = null; if(extensionDelta != null){ - if(isEditing()){ + if(isEditingRole()){ extDelta = extensionDelta; } else { extDelta = delta.getObjectToAdd().diff(extensionDelta.getObjectToAdd()); 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 5a741d7ebda..bea532d72b1 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 @@ -206,7 +206,7 @@ protected ContainerWrapper load() { } }; - //status = isEditing() ? ContainerStatus.MODIFYING : ContainerStatus.ADDING; + //status = isEditingOrgUnit() ? ContainerStatus.MODIFYING : ContainerStatus.ADDING; initLayout(); } @@ -217,7 +217,7 @@ protected IModel createPageTitleModel() { @Override protected String load() { - if (!isEditing()) { + if (!isEditingOrgUnit()) { return PageOrgUnit.super.createPageTitleModel().getObject(); } @@ -229,7 +229,7 @@ protected String load() { private ContainerWrapper loadExtensionWrapper(){ OperationResult result = new OperationResult(OPERATION_LOAD_EXTENSION_WRAPPER); - ContainerStatus status = isEditing() ? ContainerStatus.MODIFYING : ContainerStatus.ADDING; + ContainerStatus status = isEditingOrgUnit() ? ContainerStatus.MODIFYING : ContainerStatus.ADDING; ObjectWrapper wrapper; ContainerWrapper extensionWrapper = null; PrismObject org = orgModel.getObject(); @@ -376,7 +376,7 @@ protected ObjectQuery createChooseQuery(){ } } - if(isEditing()){ + if(isEditingOrgUnit()){ oidList.add(orgModel.getObject().asObjectable().getOid()); } @@ -533,7 +533,7 @@ public void onClick(AjaxRequestTarget target) { form.add(new ExecuteChangeOptionsPanel(ID_EXECUTE_OPTIONS, executeOptionsModel, true, false)); // TODO add "show reconcile affected" when implemented for Orgs } - private boolean isEditing() { + private boolean isEditingOrgUnit() { StringValue oid = getPageParameters().get(OnePageParameterEncoder.PARAMETER); return oid != null && StringUtils.isNotEmpty(oid.toString()); } @@ -595,7 +595,7 @@ private PrismObject buildUnitFromModel(List parent } //Delete parentOrgUnits from edited OrgUnit - if(isEditing()){ + if(isEditingOrgUnit()){ if(parentOrgUnitsModel != null && parentOrgUnitsModel.getObject() != null){ for(ObjectReferenceType parent: parentOrgList){ if(!isRefInParentOrgModel(parent)){ @@ -636,7 +636,7 @@ private void savePerformed(AjaxRequestTarget target) { reviveModels(); delta = null; - if (!isEditing()) { + if (!isEditingOrgUnit()) { newOrgUnit = buildUnitFromModel(null); //handle assignments @@ -674,7 +674,7 @@ private void savePerformed(AjaxRequestTarget target) { ObjectDelta extDelta = null; if(extensionDelta != null){ - if(isEditing()){ + if(isEditingOrgUnit()){ extDelta = extensionDelta; } else { extDelta = delta.getObjectToAdd().diff(extensionDelta.getObjectToAdd()); @@ -748,7 +748,7 @@ private PrismObject loadOrgUnit(PrismObject unitToEdit) { PrismObject org = null; try { - if (!isEditing()) { + if (!isEditingOrgUnit()) { if (unitToEdit == null) { OrgType o = new OrgType(); ActivationType defaultActivation = new ActivationType();