Skip to content

Commit

Permalink
Merge Objects page
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar authored and semancik committed Oct 21, 2016
1 parent 90fefe1 commit cf21cae
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 29 deletions.
Expand Up @@ -17,19 +17,31 @@

import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.component.FocusSummaryPanel;
import com.evolveum.midpoint.web.component.assignment.AssignmentEditorDto;
import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
import com.evolveum.midpoint.web.component.objectdetails.FocusMainPanel;
import com.evolveum.midpoint.web.component.prism.ContainerStatus;
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
import com.evolveum.midpoint.web.component.prism.ObjectWrapperFactory;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.PageAdmin;
import com.evolveum.midpoint.web.page.admin.PageAdminFocus;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
import com.evolveum.midpoint.web.page.admin.services.PageServices;
import com.evolveum.midpoint.web.page.admin.users.component.ExecuteChangeOptionsDto;
import com.evolveum.midpoint.web.page.admin.users.component.MergeObjectsPanel;
import com.evolveum.midpoint.web.page.admin.users.component.UserSummaryPanel;
import com.evolveum.midpoint.web.page.admin.users.dto.FocusSubwrapperDto;
Expand All @@ -38,6 +50,8 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
Expand All @@ -61,10 +75,14 @@
label = "PageMergeObjects.auth.mergeObjects.label",
description = "PageMergeObjects.auth.mergeObjects.description") })
public class PageMergeObjects<F extends FocusType> extends PageAdminFocus {
private static final String ID_MERGE_PANEL = "mergePanel";
private static final String DOT_CLASS = PageMergeObjects.class.getName() + ".";
private static final String OPERATION_DELETE_USER = DOT_CLASS + "deleteUser";
private static final Trace LOGGER = TraceManager.getTrace(PageMergeObjects.class);
private F mergeObject;
private F mergeWithObject;
private Class<F> type;
private MergeObjectsPanel mergeObjectsPanel;

public PageMergeObjects(){
}

Expand All @@ -76,10 +94,7 @@ public PageMergeObjects(F mergeObject, F mergeWithObject, Class<F> type){
PageParameters parameters = new PageParameters();
parameters.add(OnePageParameterEncoder.PARAMETER, mergeObject.getOid());
getPageParameters().overwriteWith(parameters);


initialize(this.mergeObject.asPrismObject());
// initLayout();
}

@Override
Expand Down Expand Up @@ -116,28 +131,16 @@ public WebMarkupContainer createPanel(String panelId) {
}
@Override
protected FocusSummaryPanel<UserType> createSummaryPanel(){
return new UserSummaryPanel(ID_SUMMARY_PANEL, getObjectModel());
UserSummaryPanel summaryPanel = new UserSummaryPanel(ID_SUMMARY_PANEL, getObjectModel());
summaryPanel.setVisible(false);
return summaryPanel;
}

@Override
protected Class getRestartResponsePage() {
return PageUsers.class;
}


// protected void initLayout(){
// if (mergeObject == null || StringUtils.isEmpty(mergeObject.getOid())
// || mergeWithObject == null || StringUtils.isEmpty(mergeWithObject.getOid())) {
// Label warningMessage = new Label(ID_MERGE_PANEL, createStringResource("PageMergeObjects.warningMessage"));
// warningMessage.setOutputMarkupId(true);
// add(warningMessage);
// } else {
// MergeObjectsPanel mergePanel = new MergeObjectsPanel(ID_MERGE_PANEL, mergeObject, mergeWithObject, type, PageMergeObjects.this);
// mergePanel.setOutputMarkupId(true);
// add(mergePanel);
// }
// }

protected UserType createNewObject(){
return new UserType();
}
Expand All @@ -156,4 +159,38 @@ protected IModel<String> createPageTitleModel() {
public boolean isEditingFocus() {
return true;
}

@Override
public void saveOrPreviewPerformed(AjaxRequestTarget target, OperationResult result, boolean previewOnly) {
MergeObjectsPanel panel = (MergeObjectsPanel) get("mainPanel").get("mainForm").get("tabPanel").get("panel");
ObjectDelta<F> mergeDelta = panel.getMergeDelta();

((ObjectWrapper)getObjectModel().getObject()).setOldDelta(mergeDelta);
super.saveOrPreviewPerformed(target, result, previewOnly);

deleteUser(mergeWithObject.getOid(), target);
}

private void deleteUser(String userOid, AjaxRequestTarget target) {
OperationResult result = new OperationResult(OPERATION_DELETE_USER);
try {
Task task = createSimpleTask(OPERATION_DELETE_USER);

ObjectDelta delta = new ObjectDelta(type, ChangeType.DELETE, getPrismContext());
delta.setOid(userOid);
ModelExecuteOptions options = getExecuteChangesOptions();
LOGGER.debug("Delete user using options {}.", new Object[] { options });
getModelService().executeChanges(WebComponentUtil.createDeltaCollection(delta), options, task,
result);
result.computeStatus();
} catch (Exception ex) {
result.recomputeStatus();
result.recordFatalError("Couldn't delete user.", ex);
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't delete user", ex);
}
result.computeStatusComposite();
showResult(result);
target.add(getFeedbackPanel());
}

}
Expand Up @@ -39,14 +39,5 @@
</div>
</div>
<wicket:child/>

<!--<div class="main-button-bar" style="padding-top: 20px;">-->
<!--<span class="button-group">-->
<!--<a class="btn btn-default" wicket:id="back"/>-->
<!--</span>-->
<!--<a class="btn btn-primary" wicket:id="switchDirection"/>-->
<!--<a class="btn btn-primary" wicket:id="mergeDeltaPreview"/>-->
<!--<a class="btn btn-primary" wicket:id="merge"/>-->
<!--</div>-->
</form>
</wicket:panel>
Expand Up @@ -18,6 +18,7 @@
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.*;
Expand Down Expand Up @@ -66,6 +67,7 @@ public class MergeObjectsPanel<F extends FocusType> extends BasePanel{
private F mergeObject;
private F mergeWithObject;
private PrismObject<F> mergeResultObject;
private ObjectDelta<F> mergeDelta;
private Class<F> type;
private PageBase pageBase;
private IModel<String> mergeTypeModel;
Expand Down Expand Up @@ -272,6 +274,8 @@ private PrismObject<F> getMergeObjectsResult(){
Task task = pageBase.createSimpleTask(OPERATION_GET_MERGE_OBJECT_PREVIEW);
mergeResultObject = pageBase.getModelInteractionService().mergeObjectsPreviewObject(type,
mergeObject.getOid(), mergeWithObject.getOid(), currentMergeType, task, result);
mergeDelta = pageBase.getModelInteractionService().mergeObjectsPreviewDelta(type,
mergeObject.getOid(), mergeWithObject.getOid(), currentMergeType, task, result);
} catch (Exception ex) {
result.recomputeStatus();
result.recordFatalError("Couldn't get merge object for preview.", ex);
Expand All @@ -280,4 +284,13 @@ private PrismObject<F> getMergeObjectsResult(){
}
return mergeResultObject;
}

public PrismObject<F> getMergeResultObject() {
return mergeResultObject;
}

public ObjectDelta<F> getMergeDelta(){
return mergeDelta;

}
}

0 comments on commit cf21cae

Please sign in to comment.