Skip to content

Commit

Permalink
delete object action
Browse files Browse the repository at this point in the history
  • Loading branch information
katkav committed Aug 31, 2021
1 parent 007f254 commit a232910
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@
import com.evolveum.midpoint.gui.impl.component.menu.DetailsNavigationPanel;
import com.evolveum.midpoint.gui.impl.page.admin.component.OperationalButtonsPanel;

import com.evolveum.midpoint.prism.delta.ChangeType;

import com.evolveum.midpoint.util.MiscUtil;

import com.evolveum.midpoint.util.exception.*;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -39,7 +45,6 @@
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
Expand Down Expand Up @@ -171,9 +176,11 @@ protected void addStateButtons(RepeatingView stateButtonsView) {
protected void savePerformed(AjaxRequestTarget target) {
AbstractPageObjectDetails.this.savePerformed(target);
}

};
}


public void savePerformed(AjaxRequestTarget target) {
progressPanel.onBeforeSave();
previewRequested = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,17 @@
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.component.icon.LayeredIconCssStyle;
import com.evolveum.midpoint.prism.PrismObject;
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.task.api.Task;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.AjaxCompositedIconSubmitButton;

import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.users.component.ExecuteChangeOptionsDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
Expand All @@ -32,19 +40,12 @@

public class OperationalButtonsPanel<O extends ObjectType> extends BasePanel<PrismObjectWrapper<O>> {

private static final Trace LOGGER = TraceManager.getTrace(OperationalButtonsPanel.class);

private static final String ID_BUTTONS = "buttons";
private static final String ID_STATE_BUTTONS = "stateButtons";
private static final String ID_EXECUTE_OPTIONS = "executeOptions";

private final LoadableModel<ExecuteChangeOptionsDto> executeOptionsModel = new LoadableModel<>(false) {
private static final long serialVersionUID = 1L;

@Override
protected ExecuteChangeOptionsDto load() {
return ExecuteChangeOptionsDto.createFromSystemConfiguration();
}
};

public OperationalButtonsPanel(String id, LoadableModel<PrismObjectWrapper<O>> wrapperModel) {
super(id, wrapperModel);
}
Expand All @@ -69,35 +70,13 @@ private void initLayout() {
add(stateButtonsView);

addStateButtons(stateButtonsView);

//TODO temporary
// ExecuteChangeOptionsPanel optionsPanel = new ExecuteChangeOptionsPanel(ID_EXECUTE_OPTIONS,
// executeOptionsModel, true, false) {
// private static final long serialVersionUID = 1L;
//
// @Override
// protected void reloadPanelOnOptionsUpdate(AjaxRequestTarget target) {
// target.add(OperationalButtonsPanel.this);
// }
// };
// optionsPanel.setOutputMarkupId(true);
// optionsPanel.add(new VisibleEnableBehaviour() {
// private static final long serialVersionUID = 1L;
//
// @Override
// public boolean isVisible() {
// return getOptionsPanelVisibility();
// }
//
// });
// add(optionsPanel);
}

private void createDeleteButton(RepeatingView repeatingView) {
AjaxIconButton remove = new AjaxIconButton(repeatingView.newChildId(), Model.of(GuiStyleConstants.CLASS_ICON_REMOVE), Model.of("Delete object")) {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {

deletePerformed(ajaxRequestTarget);
}
};
remove.add(AttributeAppender.append("class", "btn btn-default btn-sm"));
Expand Down Expand Up @@ -133,6 +112,39 @@ protected void savePerformed(AjaxRequestTarget target) {

}

private void deletePerformed(AjaxRequestTarget target) {
ConfirmationPanel confirmationPanel = new ConfirmationPanel(getPageBase().getMainPopupBodyId(), createStringResource("do you really want to delete " + getObjectType())) {

@Override
public void yesPerformed(AjaxRequestTarget target) {
deleteConfirmPerformed(target);
}
};
getPageBase().showMainPopup(confirmationPanel, target);
}

protected void deleteConfirmPerformed(AjaxRequestTarget target) {
Task task = getPageBase().createSimpleTask("Delete object");
OperationResult result = task.getResult();

try {
PrismObject<O> object = getPrismObject();
ObjectDelta<O> deleteDelta = getPrismContext().deltaFor(object.getCompileTimeClass()).asObjectDelta(object.getOid());
deleteDelta.setChangeType(ChangeType.DELETE);

getPageBase().getModelService().executeChanges(MiscUtil.createCollection(deleteDelta), null, task, result);

result.computeStatusIfUnknown();
getPageBase().redirectBack();
} catch (Throwable e) {
result.recordFatalError("Cannot delete user " + getPrismObject() + ", " + e.getMessage(), e);
LOGGER.error("Error while deleting user {}, {}", getPrismObject(), e.getMessage(), e);
}

getPageBase().showResult(result);

}

protected void addStateButtons(RepeatingView stateButtonsView) {

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ protected void savePerformed(AjaxRequestTarget target) {
protected void previewPerformed(AjaxRequestTarget target) {
PageFocusDetails.this.previewPerformed(target);
}

};
}

Expand Down

0 comments on commit a232910

Please sign in to comment.