Skip to content

Commit

Permalink
move reclassify button to ResourceUncategorizedPanel
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Aug 22, 2023
1 parent b2d0a68 commit 7c5729e
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,6 @@ public abstract class ResourceObjectsPanel extends AbstractObjectMainPanel<Resou
private static final Trace LOGGER = TraceManager.getTrace(ResourceObjectsPanel.class);
private static final String DOT_CLASS = ResourceObjectsPanel.class.getName() + ".";
private static final String OPERATION_GET_TOTALS = DOT_CLASS + "getTotals";
protected static final String OPERATION_RECLASSIFY_SHADOWS = DOT_CLASS + "reclassifyShadows";

private static final String ID_OBJECT_TYPE = "objectType";
private static final String ID_TABLE = "table";
private static final String ID_TITLE = "title";
Expand Down Expand Up @@ -258,7 +256,6 @@ public CompiledObjectCollectionView getObjectCollectionView() {
@Override
protected List<Component> createToolbarButtonsList(String buttonId) {
List<Component> buttonsList = new ArrayList<>();
buttonsList.add(createReclassifyButton(buttonId));
buttonsList.add(createReloadButton(buttonId));
buttonsList.addAll(super.createToolbarButtonsList(buttonId));
return buttonsList;
Expand Down Expand Up @@ -431,80 +428,6 @@ protected String getTaskName() {
return reload;
}

private AjaxIconButton createReclassifyButton(String buttonId) {

ReloadableButton reclassify = new ReloadableButton(
buttonId, getPageBase(), createStringResource("ResourceCategorizedPanel.button.reclassify")) {

@Override
protected void refresh(AjaxRequestTarget target) {
target.add(getShadowTable());
}

@Override
protected TaskAwareExecutor.Executable<String> getTaskExecutor() {
return createReclassifyTask();
}

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

@Override
protected IModel<String> getConfirmMessage() {
return getPageBase().createStringResource(
"ResourceCategorizedPanel.button.reclassify.confirmation.objectClass",
getObjectClass() != null ? getObjectClass().getLocalPart() : null);
}
};

// AjaxIconButton reclassify = new AjaxIconButton(buttonId, Model.of("fa fa-rotate-right"),
// createStringResource("ResourceCategorizedPanel.button.reclassify")) {
//
// @Override
// public void onClick(AjaxRequestTarget target) {
// IModel<String> confirmModel;
//
// confirmModel = getPageBase().createStringResource(
// "ResourceCategorizedPanel.button.reclassify.confirmation.objectClass",
// getObjectClass() != null ? getObjectClass().getLocalPart() : null);
//
// ConfirmationPanel confirmationPanel = new ConfirmationPanel(getPageBase().getMainPopupBodyId(), confirmModel) {
// @Override
// public void yesPerformed(AjaxRequestTarget target) {
// createReclassifyTask(target);
// getShadowTable().startRefreshing(target);
// target.add(getShadowTable());
// }
// };
// getPageBase().showMainPopup(confirmationPanel, target);
// }
// };
reclassify.add(AttributeAppender.append("class", "btn btn-primary btn-sm mr-2"));
reclassify.setOutputMarkupId(true);
reclassify.showTitleAsLabel(true);
reclassify.add(new VisibleBehaviour(() -> getObjectClass() != null));
return reclassify;
}

private TaskAwareExecutor.Executable<String> createReclassifyTask() throws RestartResponseException {
return (task, result) -> {
ResourceType resource = getObjectWrapperObject().asObjectable();
return ResourceTaskCreator.forResource(resource, getPageBase())
.ofFlavor(SynchronizationTaskFlavor.IMPORT)
.withCoordinates(getObjectClass())
.withExecutionMode(ExecutionModeType.PREVIEW)
.withPredefinedConfiguration(PredefinedConfigurationType.DEVELOPMENT)
.withSubmissionOptions(
ActivitySubmissionOptions.create()
.withTaskTemplate(new TaskType()
.name("Reclassifying objects on " + resource.getName())
.cleanupAfterCompletion(XmlTypeConverter.createDuration("PT0S"))))
.submit(task, result);
};
}

private ResourceObjectTypeDefinitionType getSelectedObjectType() {
ResourceObjectTypeDefinition objectTypeDefinition = getSelectedObjectTypeDefinition();
return objectTypeDefinition == null ? null : objectTypeDefinition.getDefinitionBean();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,18 @@

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.data.provider.ISelectableDataProvider;
import com.evolveum.midpoint.gui.impl.component.button.ReloadableButton;
import com.evolveum.midpoint.gui.impl.component.data.provider.SelectableBeanObjectDataProvider;
import com.evolveum.midpoint.gui.impl.component.search.CollectionPanelType;
import com.evolveum.midpoint.gui.impl.component.search.SearchContext;
import com.evolveum.midpoint.gui.impl.page.admin.AbstractObjectMainPanel;
import com.evolveum.midpoint.gui.impl.page.admin.abstractrole.component.TaskAwareExecutor;
import com.evolveum.midpoint.gui.impl.page.admin.resource.ResourceDetailsModel;
import com.evolveum.midpoint.model.api.ActivitySubmissionOptions;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.api.authentication.CompiledShadowCollectionView;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.GetOperationOptionsBuilder;
import com.evolveum.midpoint.schema.SelectorOptions;
Expand All @@ -24,20 +28,24 @@
import com.evolveum.midpoint.web.application.PanelDisplay;
import com.evolveum.midpoint.web.application.PanelInstance;
import com.evolveum.midpoint.web.application.PanelType;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.input.DropDownChoicePanel;
import com.evolveum.midpoint.web.component.input.ResourceObjectClassChoiceRenderer;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.resources.SynchronizationTaskFlavor;
import com.evolveum.midpoint.web.page.admin.shadows.ShadowTablePanel;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
Expand Down Expand Up @@ -144,8 +152,10 @@ public CompiledObjectCollectionView getObjectCollectionView() {

@Override
protected List<Component> createToolbarButtonsList(String buttonId) {
return new ArrayList<>(super.createToolbarButtonsList(buttonId));

ArrayList<Component> buttons = new ArrayList<>();
buttons.add(createReclassifyButton(buttonId));
buttons.addAll(super.createToolbarButtonsList(buttonId));
return buttons;
}

@Override
Expand All @@ -165,6 +175,58 @@ protected List<InlineMenuItem> createInlineMenu() {
add(shadowTablePanel);
}

private AjaxIconButton createReclassifyButton(String buttonId) {

ReloadableButton reclassify = new ReloadableButton(
buttonId, getPageBase(), createStringResource("ResourceCategorizedPanel.button.reclassify")) {

@Override
protected void refresh(AjaxRequestTarget target) {
target.add(getShadowTable());
}

@Override
protected TaskAwareExecutor.Executable<String> getTaskExecutor() {
return createReclassifyTask();
}

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

@Override
protected IModel<String> getConfirmMessage() {
return getPageBase().createStringResource(
"ResourceCategorizedPanel.button.reclassify.confirmation.objectClass",
getSelectedObjectClass() != null ? getSelectedObjectClass().getLocalPart() : null);
}
};

reclassify.add(AttributeAppender.append("class", "btn btn-primary btn-sm mr-2"));
reclassify.setOutputMarkupId(true);
reclassify.showTitleAsLabel(true);
reclassify.add(new VisibleBehaviour(() -> getSelectedObjectClass() != null));
return reclassify;
}

private TaskAwareExecutor.Executable<String> createReclassifyTask() throws RestartResponseException {
return (task, result) -> {
ResourceType resource = getObjectWrapperObject().asObjectable();
return ResourceTaskCreator.forResource(resource, getPageBase())
.ofFlavor(SynchronizationTaskFlavor.IMPORT)
.withCoordinates(getSelectedObjectClass())
.withExecutionMode(ExecutionModeType.PREVIEW)
.withPredefinedConfiguration(PredefinedConfigurationType.DEVELOPMENT)
.withSubmissionOptions(
ActivitySubmissionOptions.create()
.withTaskTemplate(new TaskType()
.name("Reclassifying objects on " + resource.getName())
.cleanupAfterCompletion(XmlTypeConverter.createDuration("PT0S"))))
.submit(task, result);
};
}

protected Consumer<Task> createProviderSearchTaskCustomizer() {
return null;
}
Expand Down

0 comments on commit 7c5729e

Please sign in to comment.