Skip to content

Commit

Permalink
MID-9514: adding support for create shadow reclassification task from…
Browse files Browse the repository at this point in the history
… uncategorized resource objects table panel
  • Loading branch information
skublik committed Mar 28, 2024
1 parent f4f8045 commit 02dd5cc
Show file tree
Hide file tree
Showing 11 changed files with 185 additions and 155 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ protected ObjectQuery createQueryForTasks(boolean isSimulationTasks) {

@Override
protected TaskCreationPopup<?> createNewTaskPopup() {
return new TaskCreationForRecognizedObjectsPopup(getPageBase().getMainPopupBodyId()) {
return new TaskCreationFoCategorizedObjectsPopup(getPageBase().getMainPopupBodyId()) {

@Override
protected void createNewTaskPerformed(SynchronizationTaskFlavor flavor, boolean simulate, AjaxRequestTarget target) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,18 +70,18 @@ public ResourceUncategorizedPanel(String id, ResourceDetailsModel model, Contain
protected void addViewMenuItemsForCreateTaskButton(List<InlineMenuItem> items) {
items.add(createTaskViewMenuItem(
createStringResource("ResourceObjectsPanel.button.viewSimulatedTasks"),
null,
SystemObjectsType.ARCHETYPE_SHADOW_RECLASSIFICATION_TASK.value(),
true));

items.add(createTaskViewMenuItem(
createStringResource("ResourceObjectsPanel.button.viewImportTasks"),
SystemObjectsType.ARCHETYPE_IMPORT_TASK.value(),
createStringResource("ResourceObjectsPanel.button.viewShadowReclassificationTasks"),
SystemObjectsType.ARCHETYPE_SHADOW_RECLASSIFICATION_TASK.value(),
false));
}

@Override
protected TaskCreationPopup<?> createNewTaskPopup() {
return new TaskCreationForUnrecognizedObjectsPopup(getPageBase().getMainPopupBodyId()) {
return new TaskCreationForUncategorizedObjectsPopup(getPageBase().getMainPopupBodyId()) {
@Override
protected void createNewTaskPerformed(SynchronizationTaskFlavor flavor, boolean simulate, AjaxRequestTarget target) {
ResourceUncategorizedPanel.this.createNewTaskPerformed(flavor, simulate, target);
Expand Down Expand Up @@ -121,7 +121,7 @@ protected ObjectQuery createQueryForTasks(boolean isSimulationTasks) {
filter = addSimulationRule(
filter.and(),
true,
ExecutionModeType.PREVIEW);
ExecutionModeType.SHADOW_MANAGEMENT_PREVIEW);
}

return filter.build();
Expand Down Expand Up @@ -277,11 +277,6 @@ private Collection<SelectorOptions<GetOperationOptions>> createSearchOptions() {

@Override
protected void customizeTaskCreator(ResourceTaskCreator creator, boolean isSimulation) {
creator.withSearchOptions(new SelectorQualifiedGetOptionsType()
.option(new SelectorQualifiedGetOptionType()
.options(new GetOperationOptionsType()
.shadowClassificationMode(ShadowClassificationModeType.FORCED))))
.withExecutionMode(ExecutionModeType.PREVIEW);
if (isSimulation) {
creator.withExecutionMode(ExecutionModeType.SHADOW_MANAGEMENT_PREVIEW);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
/**
* Popup panel for creating task for recognized resource object (work with object type, so with kind and intent).
*/
public class TaskCreationForRecognizedObjectsPopup extends TaskCreationPopup<CompiledObjectCollectionView> {
public class TaskCreationFoCategorizedObjectsPopup extends TaskCreationPopup<CompiledObjectCollectionView> {

public TaskCreationForRecognizedObjectsPopup(String id) {
public TaskCreationFoCategorizedObjectsPopup(String id) {
super(id);
}

Expand All @@ -46,7 +46,6 @@ protected Collection<CompiledObjectCollectionView> findAllApplicableArchetypeVie

@Override
protected void onTemplateChosePerformed(CompiledObjectCollectionView view, AjaxRequestTarget target) {
view.getArchetypeOid();
getFlavorModel().setObject(determineTaskFlavour(view.getArchetypeOid()));
}

Expand All @@ -70,14 +69,4 @@ private boolean isSynchronizationTaskCollection(String archetypeOid) {
|| archetypeOid.equals(SystemObjectsType.ARCHETYPE_LIVE_SYNC_TASK.value())
|| archetypeOid.equals(SystemObjectsType.ARCHETYPE_IMPORT_TASK.value());
}

private SynchronizationTaskFlavor determineTaskFlavour(String archetypeOid) {
SystemObjectsType taskType = SystemObjectsType.fromValue(archetypeOid);
return switch (taskType) {
case ARCHETYPE_RECONCILIATION_TASK -> SynchronizationTaskFlavor.RECONCILIATION;
case ARCHETYPE_LIVE_SYNC_TASK -> SynchronizationTaskFlavor.LIVE_SYNC;
case ARCHETYPE_IMPORT_TASK -> SynchronizationTaskFlavor.IMPORT;
default -> null;
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/*
* Copyright (C) 2010-2024 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.gui.impl.page.admin.resource.component;

import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.impl.component.tile.Tile;

import com.evolveum.midpoint.gui.impl.page.admin.TemplateChoicePanel;

import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;

import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.web.page.admin.resources.SynchronizationTaskFlavor;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;

/**
* Popup panel for creating task for unrecognized resource object (work with object class).
*/
public class TaskCreationForUncategorizedObjectsPopup extends TaskCreationPopup<CompiledObjectCollectionView> {

public TaskCreationForUncategorizedObjectsPopup(String id) {
super(id);
}

@Override
protected TemplateChoicePanel createChoicePanel(String id) {
return new TemplateChoicePanel(id) {

@Override
protected void onInitialize() {
super.onInitialize();
getFlavorModel().setObject(SynchronizationTaskFlavor.SHADOW_RECLASSIFICATION);
}

@Override
protected QName getType() {
return TaskType.COMPLEX_TYPE;
}

@Override
protected Collection<CompiledObjectCollectionView> findAllApplicableArchetypeViews() {
CompiledGuiProfile profile = getPageBase().getCompiledGuiProfile();
return profile.getObjectCollectionViews()
.stream()
.filter(view -> view.getArchetypeOid() != null
&& view.getArchetypeOid().equals(SystemObjectsType.ARCHETYPE_SHADOW_RECLASSIFICATION_TASK.value()))
.collect(Collectors.toList());
}

@Override
protected Component createTilePanel(String id, IModel<Tile<CompiledObjectCollectionView>> tileModel) {
Component panel = super.createTilePanel(id, tileModel);
panel.add(AttributeAppender.append("class", "disabled active"));
return panel;
}

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

@Override
protected void onTemplateChosePerformed(CompiledObjectCollectionView view, AjaxRequestTarget target) {
getFlavorModel().setObject(determineTaskFlavour(view.getArchetypeOid()));
}
};
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

import com.evolveum.midpoint.gui.impl.page.admin.AbstractTemplateChoicePanel;

import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
Expand All @@ -34,7 +36,7 @@ public abstract class TaskCreationPopup<T extends Serializable> extends BasePane
private static final String ID_BUTTONS = "buttons";
private static final String ID_CLOSE = "close";

private IModel<SynchronizationTaskFlavor> flavorModel;
private IModel<SynchronizationTaskFlavor> flavorModel = Model.of();

private Fragment footer;

Expand All @@ -45,14 +47,6 @@ public TaskCreationPopup(String id) {
@Override
protected void onInitialize() {
super.onInitialize();

flavorModel = new LoadableModel<>() {
@Override
protected SynchronizationTaskFlavor load() {
return null;
}
};

initLayout();
initFooter();
}
Expand Down Expand Up @@ -146,4 +140,15 @@ public Component getContent() {
protected final IModel<SynchronizationTaskFlavor> getFlavorModel() {
return flavorModel;
}

protected SynchronizationTaskFlavor determineTaskFlavour(String archetypeOid) {
SystemObjectsType taskType = SystemObjectsType.fromValue(archetypeOid);
return switch (taskType) {
case ARCHETYPE_RECONCILIATION_TASK -> SynchronizationTaskFlavor.RECONCILIATION;
case ARCHETYPE_LIVE_SYNC_TASK -> SynchronizationTaskFlavor.LIVE_SYNC;
case ARCHETYPE_IMPORT_TASK -> SynchronizationTaskFlavor.IMPORT;
case ARCHETYPE_SHADOW_RECLASSIFICATION_TASK -> SynchronizationTaskFlavor.SHADOW_RECLASSIFICATION;
default -> null;
};
}
}

0 comments on commit 02dd5cc

Please sign in to comment.