Skip to content

Commit

Permalink
Using ChooseTypePanel to view/edit campaign owner.
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Dec 16, 2015
1 parent 39b2d20 commit 4e52ae2
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 83 deletions.
Expand Up @@ -45,8 +45,7 @@ <h3 class="box-title"><wicket:message key="PageCertDefinition.basicInformation"/
<td><wicket:message key="PageCertDefinition.owner" class="col-md-4"/></td>
<td>
<div class="col-md-6">
<div wicket:id="ownerValueContainer" class="row">
<div wicket:id="ownerInput" class="col-xs-9"/>
<div wicket:id="ownerRefChooser" >
</div>
</div>
</td>
Expand Down
Expand Up @@ -18,16 +18,12 @@

import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.delta.DiffUtil;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.CertCampaignTypeUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.Holder;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
Expand All @@ -36,41 +32,31 @@
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.TabbedPanel;
import com.evolveum.midpoint.web.component.form.ValueChoosePanel;
import com.evolveum.midpoint.web.component.form.multivalue.GenericMultiValueLabelEditPanel;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.web.component.util.LoadableModel;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.PageTemplate;
import com.evolveum.midpoint.web.page.admin.certification.dto.CertDefinitionDto;
import com.evolveum.midpoint.web.page.admin.certification.dto.DefinitionScopeDto;
import com.evolveum.midpoint.web.page.admin.certification.dto.StageDefinitionDto;
import com.evolveum.midpoint.web.page.admin.roles.component.MultiplicityPolicyDialog;
import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.web.page.admin.configuration.component.ChooseTypePanel;
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.web.util.WebModelUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.*;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValue;

import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
Expand Down Expand Up @@ -99,8 +85,9 @@ public class PageCertDefinition extends PageAdminCertification {
private static final String ID_CAMPAIGNS_TOTAL = "campaignsTotal";
private static final String ID_LAST_STARTED = "campaignLastStarted";
private static final String ID_LAST_CLOSED = "campaignLastClosed";
private static final String ID_OWNER_VALUE_CONTAINER = "ownerValueContainer";
private static final String ID_OWNER_INPUT = "ownerInput";
// private static final String ID_OWNER_VALUE_CONTAINER = "ownerValueContainer";
// private static final String ID_OWNER_INPUT = "ownerInput";
private static final String ID_OWNER_REF_CHOOSER = "ownerRefChooser";

private static final String ID_BACK_BUTTON = "backButton";
private static final String ID_SAVE_BUTTON = "saveButton";
Expand Down Expand Up @@ -180,17 +167,17 @@ private void initTabs(Form mainForm) {

List<ITab> tabs = new ArrayList<>();
tabs.add(new AbstractTab(createStringResource("PageCertDefinition.scopeDefinition")) {
@Override
public WebMarkupContainer getPanel(String panelId) {
return new DefinitionScopePanel(panelId, new PropertyModel<DefinitionScopeDto>(definitionModel, CertDefinitionDto.F_SCOPE_DEFINITION));
}
});
@Override
public WebMarkupContainer getPanel(String panelId) {
return new DefinitionScopePanel(panelId, new PropertyModel<DefinitionScopeDto>(definitionModel, CertDefinitionDto.F_SCOPE_DEFINITION));
}
});
tabs.add(new AbstractTab(createStringResource("PageCertDefinition.stagesDefinition")) {
@Override
public WebMarkupContainer getPanel(String panelId) {
return new DefinitionStagesPanel(panelId, new PropertyModel<List<StageDefinitionDto>>(definitionModel, CertDefinitionDto.F_STAGE_DEFINITION));
}
});
@Override
public WebMarkupContainer getPanel(String panelId) {
return new DefinitionStagesPanel(panelId, new PropertyModel<List<StageDefinitionDto>>(definitionModel, CertDefinitionDto.F_STAGE_DEFINITION));
}
});

tabs.add(new AbstractTab(createStringResource("PageCertDefinition.campaigns")) {
@Override
Expand Down Expand Up @@ -257,44 +244,9 @@ public boolean isEnabled() {
});
mainForm.add(descriptionField);

final PropertyModel ownerModel = new PropertyModel<>(definitionModel, CertDefinitionDto.F_OWNER);

List<PrismReferenceValue> values = new ArrayList<>();
values.add(definitionModel.getObject() == null ? new PrismReferenceValue() : definitionModel.getObject().getOwner());
// final ValueChoosePanel ownerNameField = new ValueChoosePanel(ID_OWNER, ownerModel, values
// ,false, UserType.class);
// {
// @Override
// protected void choosePerformed(AjaxRequestTarget target, ObjectType object) {
// super.choosePerformed(target, object);
//
// Component comp = this.get("textWrapper");
//// target.add(comp);
// }
// };
// ownerNameField.setOutputMarkupId(true);

final WebMarkupContainer valueContainer = new WebMarkupContainer(ID_OWNER_VALUE_CONTAINER);
valueContainer.setOutputMarkupId(true);
valueContainer.add(new AttributeModifier("class", "row"));
add(valueContainer);

Panel input = new ValueChoosePanel(ID_OWNER_INPUT, ownerModel, values
,false, UserType.class);
// {
// @Override
// protected void choosePerformed(AjaxRequestTarget target, ObjectType object) {
// super.choosePerformed(target, object);
//
// Component comp = this.getParent();
// target.add(comp);
// }
// };
//TODO for now selected value is not displayed in the input control
//but it is set to model and can be saved
input.add(new AttributeModifier("class", "col-xs-9"));
valueContainer.add(input);
mainForm.add(valueContainer);
final WebMarkupContainer ownerRefChooser = createOwnerRefChooser(ID_OWNER_REF_CHOOSER);
ownerRefChooser.setOutputMarkupId(true);
mainForm.add(ownerRefChooser);

mainForm.add(new Label(ID_NUMBER_OF_STAGES, new PropertyModel<>(definitionModel, CertDefinitionDto.F_NUMBER_OF_STAGES)));
mainForm.add(new Label(ID_REVIEW_STAGE_CAMPAIGNS, new PropertyModel<>(definitionModel, CertDefinitionDto.F_NUMBER_OF_STAGES)));
Expand All @@ -303,6 +255,25 @@ public boolean isEnabled() {
mainForm.add(new Label(ID_LAST_CLOSED, new PropertyModel<>(definitionModel, CertDefinitionDto.F_NUMBER_OF_STAGES)));
}

private WebMarkupContainer createOwnerRefChooser(String id) {
ChooseTypePanel tenantRef = new ChooseTypePanel(id,
new PropertyModel<ObjectViewDto>(definitionModel, CertDefinitionDto.F_OWNER)) {

@Override
protected boolean isSearchEnabled() {
return true;
}

@Override
protected QName getSearchProperty() {
return UserType.F_NAME;
}
};

return tenantRef;
}


private void initButtons(final Form mainForm) {
AjaxButton backButton = new AjaxButton(ID_BACK_BUTTON, createStringResource("PageCertDefinition.button.back")) {
@Override
Expand Down
Expand Up @@ -18,11 +18,14 @@

import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
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.web.page.PageBase;
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType;
Expand All @@ -40,7 +43,6 @@ public class CertDefinitionDto implements Serializable {

public static final String F_NAME = "name";
public static final String F_DESCRIPTION = "description";
public static final String F_OWNER_NAME = "ownerName";
public static final String F_NUMBER_OF_STAGES = "numberOfStages";
public static final String F_XML = "xml";
public static final String F_OWNER = "owner";
Expand All @@ -51,15 +53,14 @@ public class CertDefinitionDto implements Serializable {
private AccessCertificationDefinitionType definition; // definition that is (at least partially) dynamically updated when editing the form
private final DefinitionScopeDto definitionScopeDto;
private final List<StageDefinitionDto> stageDefinition;
private String ownerName;
private String xml;
private PrismReferenceValue owner;
private ObjectViewDto owner;
private String scopeSearchFilter;

public CertDefinitionDto(AccessCertificationDefinitionType definition, PageBase page, Task task, OperationResult result) {
this.oldDefinition = definition.clone();
this.definition = definition;
ownerName = CertCampaignDto.resolveOwnerName(definition.getOwnerRef(), page, task, result);
owner = loadOwnerReference(definition.getOwnerRef());

try {
xml = page.getPrismContext().serializeObjectToString(definition.asPrismObject(), PrismContext.LANG_XML);
Expand All @@ -74,8 +75,24 @@ public CertDefinitionDto(AccessCertificationDefinitionType definition, PageBase
}
}

public String getOwnerName() {
return ownerName;
private ObjectViewDto loadOwnerReference(ObjectReferenceType ref) {
ObjectViewDto dto;

if (ref != null) {
if (ref.getTargetName() != null) {
dto = new ObjectViewDto(ref.getOid(), WebMiscUtil.getOrigStringFromPoly(ref.getTargetName()));
dto.setType(UserType.class);
return dto;
} else {
dto = new ObjectViewDto(ObjectViewDto.BAD_OID);
dto.setType(UserType.class);
return dto;
}
} else {
dto = new ObjectViewDto();
dto.setType(UserType.class);
return dto;
}
}

public String getXml() {
Expand All @@ -99,10 +116,20 @@ public AccessCertificationDefinitionType getDefinition() {
}

public AccessCertificationDefinitionType getUpdatedDefinition() {
updateOwner();
updateScopeDefinition();
return definition;
}

private void updateOwner() {
String oid = owner.getKnownOid();
if (oid != null) {
definition.setOwnerRef(ObjectTypeUtil.createObjectRef(owner.getKnownOid(), ObjectTypes.USER));
} else {
definition.setOwnerRef(null);
}
}

public AccessCertificationDefinitionType getOldDefinition() {
return oldDefinition;
}
Expand All @@ -111,10 +138,6 @@ public void setDefinition(AccessCertificationDefinitionType definition) {
this.definition = definition;
}

public void setOwnerName(String ownerName) {
// definition.setOwnerRef();
}

public void setName(String name){
PolyStringType namePolyString = new PolyStringType(name);
definition.setName(namePolyString);
Expand All @@ -124,8 +147,8 @@ public void setDescription(String description){
definition.setDescription(description);
}

public PrismReferenceValue getOwner() {
return definition.getOwnerRef() != null ? definition.getOwnerRef().asReferenceValue() : null;
public ObjectViewDto getOwner() {
return owner;
}

public void setOwner(PrismReferenceValue owner) {
Expand All @@ -141,8 +164,9 @@ private DefinitionScopeDto createDefinitionScopeDto(AccessCertificationScopeType
dto.setDescription(scopeTypeObj.getDescription());
if (scopeTypeObj instanceof AccessCertificationObjectBasedScopeType) {
AccessCertificationObjectBasedScopeType objScopeType = (AccessCertificationObjectBasedScopeType) scopeTypeObj;
dto.setObjectType(DefinitionScopeObjectType.valueOf(objScopeType.getObjectType() != null ?
objScopeType.getObjectType().getLocalPart() : null));
if (objScopeType.getObjectType() != null) {
dto.setObjectType(DefinitionScopeObjectType.valueOf(objScopeType.getObjectType().getLocalPart()));
}
dto.setSearchFilter(objScopeType.getSearchFilter());
if (objScopeType instanceof AccessCertificationAssignmentReviewScopeType) {
AccessCertificationAssignmentReviewScopeType assignmentScope =
Expand Down
Expand Up @@ -75,6 +75,14 @@ public String getOid() {
return oid;
}

public String getKnownOid() {
if (BAD_OID.equals(oid)) {
return null;
} else {
return oid;
}
}

public void setOid(String oid){
this.oid = oid;
}
Expand Down

0 comments on commit 4e52ae2

Please sign in to comment.