Skip to content

Commit

Permalink
MID-2212 fix - relation can be set in assignment only during assignme…
Browse files Browse the repository at this point in the history
…nt creation, not during assignment edit.
  • Loading branch information
Erik Suta committed Feb 25, 2015
1 parent 3b57547 commit 343127b
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 16 deletions.
Expand Up @@ -54,6 +54,7 @@
<div class="row">
<div class="col-xs-9">
<div wicket:id="relation" />
<span wicket:id="relationLabel" />
</div>
</div>
</div>
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -97,6 +98,7 @@ public class AssignmentEditorPanel extends SimplePanel<AssignmentEditorDto> {
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";
Expand Down Expand Up @@ -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<String>() {

@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<ObjectViewDto>(getModel(), AssignmentEditorDto.F_TENANT_REF)){
Expand Down Expand Up @@ -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());
}
}
Expand Up @@ -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.
Expand Down
Expand Up @@ -149,7 +149,7 @@ protected IModel<String> createPageTitleModel(){

@Override
protected String load() {
if(!isEditing()){
if(!isEditingRole()){
return createStringResource("PageRoleEditor.title.newRole").getObject();
}

Expand All @@ -164,7 +164,7 @@ protected IModel<String> createPageSubTitleModel(){

@Override
protected String load() {
if(!isEditing()){
if(!isEditingRole()){
return createStringResource("PageRoleEditor.subtitle.newRole").getObject();
}

Expand All @@ -179,7 +179,7 @@ private PrismObject<RoleType> loadRole(){

PrismObject<RoleType> role = null;
try {
if (!isEditing()) {
if (!isEditingRole()) {
RoleType r = new RoleType();
ActivationType defaultActivation = new ActivationType();
defaultActivation.setAdministrativeStatus(ActivationStatusType.ENABLED);
Expand Down Expand Up @@ -211,7 +211,7 @@ private PrismObject<RoleType> 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<RoleType> role = model.getObject();
Expand Down Expand Up @@ -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());
}
Expand Down Expand Up @@ -440,7 +440,7 @@ private void savePerformed(AjaxRequestTarget target){
PrismObject<RoleType> newRole = model.getObject();

delta = null;
if (!isEditing()) {
if (!isEditingRole()) {

//handle assignments
PrismObjectDefinition orgDef = newRole.getDefinition();
Expand Down Expand Up @@ -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());
Expand Down
Expand Up @@ -206,7 +206,7 @@ protected ContainerWrapper load() {
}
};

//status = isEditing() ? ContainerStatus.MODIFYING : ContainerStatus.ADDING;
//status = isEditingOrgUnit() ? ContainerStatus.MODIFYING : ContainerStatus.ADDING;

initLayout();
}
Expand All @@ -217,7 +217,7 @@ protected IModel<String> createPageTitleModel() {

@Override
protected String load() {
if (!isEditing()) {
if (!isEditingOrgUnit()) {
return PageOrgUnit.super.createPageTitleModel().getObject();
}

Expand All @@ -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<OrgType> org = orgModel.getObject();
Expand Down Expand Up @@ -376,7 +376,7 @@ protected ObjectQuery createChooseQuery(){
}
}

if(isEditing()){
if(isEditingOrgUnit()){
oidList.add(orgModel.getObject().asObjectable().getOid());
}

Expand Down Expand Up @@ -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());
}
Expand Down Expand Up @@ -595,7 +595,7 @@ private PrismObject<OrgType> buildUnitFromModel(List<ObjectReferenceType> parent
}

//Delete parentOrgUnits from edited OrgUnit
if(isEditing()){
if(isEditingOrgUnit()){
if(parentOrgUnitsModel != null && parentOrgUnitsModel.getObject() != null){
for(ObjectReferenceType parent: parentOrgList){
if(!isRefInParentOrgModel(parent)){
Expand Down Expand Up @@ -636,7 +636,7 @@ private void savePerformed(AjaxRequestTarget target) {
reviveModels();
delta = null;

if (!isEditing()) {
if (!isEditingOrgUnit()) {
newOrgUnit = buildUnitFromModel(null);

//handle assignments
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -748,7 +748,7 @@ private PrismObject<OrgType> loadOrgUnit(PrismObject<OrgType> unitToEdit) {

PrismObject<OrgType> org = null;
try {
if (!isEditing()) {
if (!isEditingOrgUnit()) {
if (unitToEdit == null) {
OrgType o = new OrgType();
ActivationType defaultActivation = new ActivationType();
Expand Down

0 comments on commit 343127b

Please sign in to comment.