Skip to content

Commit

Permalink
delta viewer, password/value change now "simplified"
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Feb 22, 2023
1 parent 2adfe26 commit d62aa42
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -156,12 +156,11 @@ protected VisualizationDto load() {
private void initLayout() {
VisualizationPanel primaryDeltas = new VisualizationPanel(ID_PRIMARY_DELTAS,
createVisualizationModel(primaryModel, "PagePreviewChanges.primaryChangesOne", "PagePreviewChanges.primaryChangesMore"));
// primaryDeltas.add(VisibleBehaviour.ALWAYS_INVISIBLE);
primaryDeltas.add(VisibleBehaviour.ALWAYS_INVISIBLE);
add(primaryDeltas);

VisualizationPanel secondaryDeltas = new VisualizationPanel(ID_SECONDARY_DELTAS,
createVisualizationModel(secondaryModel, "PagePreviewChanges.secondaryChangesOne", "PagePreviewChanges.secondaryChangesMore"));
// secondaryDeltas.add(VisibleBehaviour.ALWAYS_INVISIBLE);
add(secondaryDeltas);

add(new ChangesPanel(ID_PRIMARY, null, primaryModel) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,16 @@
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.Toggle;
import com.evolveum.midpoint.gui.api.component.TogglePanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.impl.page.admin.simulation.SimulationsGuiUtil;
import com.evolveum.midpoint.model.api.visualizer.Visualization;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType;

public class ChangesPanel extends BasePanel<Void> {
Expand All @@ -44,7 +47,9 @@ public enum ChangesView {
private static final String ID_VISUALIZATIONS = "visualizations";
private static final String ID_VISUALIZATION = "visualization";

private IModel<ChangesView> changesViewModel;
private IModel<ChangesView> changesView = Model.of(ChangesView.SIMPLE);

private VisibleEnableBehaviour changesViewVisible = VisibleBehaviour.ALWAYS_VISIBLE_ENABLED;

private IModel<List<VisualizationDto>> changesModel;

Expand All @@ -55,9 +60,15 @@ public ChangesPanel(String id, IModel<List<ObjectDeltaType>> deltaModel, IModel<
initLayout();
}

private void initModels(IModel<List<ObjectDeltaType>> deltaModel, IModel<List<VisualizationDto>> visualizationModel) {
changesViewModel = Model.of(ChangesView.SIMPLE);
public void setChangesView(@NotNull IModel<ChangesView> changesView) {
this.changesView = changesView;
}

public void setChangesViewVisible(@NotNull VisibleEnableBehaviour changesViewVisible) {
this.changesViewVisible = changesViewVisible;
}

private void initModels(IModel<List<ObjectDeltaType>> deltaModel, IModel<List<VisualizationDto>> visualizationModel) {
changesModel = visualizationModel != null ? visualizationModel : new LoadableModel<>(false) {

@Override
Expand Down Expand Up @@ -92,12 +103,12 @@ protected List<Toggle<ChangesView>> load() {

Toggle<ChangesView> simple = new Toggle<>("fa-solid fa-magnifying-glass mr-1", "ChangesView.SIMPLE");
simple.setValue(ChangesView.SIMPLE);
simple.setActive(changesViewModel.getObject() == simple.getValue());
simple.setActive(changesView.getObject() == simple.getValue());
toggles.add(simple);

Toggle<ChangesView> advanced = new Toggle<>("fa-solid fa-microscope mr-1", "ChangesView.ADVANCED");
advanced.setValue(ChangesView.ADVANCED);
advanced.setActive(changesViewModel.getObject() == advanced.getValue());
advanced.setActive(changesView.getObject() == advanced.getValue());
toggles.add(advanced);

return toggles;
Expand All @@ -113,6 +124,7 @@ protected void itemSelected(AjaxRequestTarget target, IModel<Toggle<ChangesView>
onChangesViewClicked(target, item.getObject());
}
};
toggle.add(changesViewVisible);
add(toggle);

WebMarkupContainer body = new WebMarkupContainer(ID_BODY);
Expand All @@ -130,7 +142,7 @@ private ListView<VisualizationDto> createVisualizations() {
protected void populateItem(ListItem<VisualizationDto> item) {
IModel<VisualizationDto> model = item.getModel();

boolean advanced = changesViewModel.getObject() == ChangesView.ADVANCED;
boolean advanced = changesView.getObject() == ChangesView.ADVANCED;

if (advanced) {
expandVisualization(model.getObject());
Expand All @@ -149,7 +161,7 @@ protected void populateItem(ListItem<VisualizationDto> item) {
}

private void onChangesViewClicked(AjaxRequestTarget target, Toggle<ChangesView> toggle) {
changesViewModel.setObject(toggle.getValue());
changesView.setObject(toggle.getValue());

Component newOne = createVisualizations();
Component existing = get(createComponentPath(ID_BODY, ID_VISUALIZATIONS));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/*
* Copyright (c) 2010-2023 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.model.impl.visualizer;

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

import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.impl.visualizer.output.VisualizationDeltaItemImpl;
import com.evolveum.midpoint.model.impl.visualizer.output.VisualizationImpl;
import com.evolveum.midpoint.model.impl.visualizer.output.VisualizationItemImpl;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.SingleLocalizableMessage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CredentialsType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;

/**
* Created by Viliam Repan (lazyman).
*/
@Component
public class PasswordDescriptionHandler implements VisualizationDescriptionHandler {

@Override
public boolean match(VisualizationImpl visualization) {
PrismContainerValue value = visualization.getSourceValue();
if (value == null) {
return false;
}

if (value.asContainerable() instanceof CredentialsType) {
// if there's password
return value.findContainer(CredentialsType.F_PASSWORD) != null;
}

if (ItemPath.create(FocusType.F_CREDENTIALS, CredentialsType.F_PASSWORD).equivalent(value.getPath())) {
// we're modifying/deleting password
return true;
}

return false;
}

@Override
public void apply(VisualizationImpl visualization, Task task, OperationResult result) {
ChangeType change = visualization.getChangeType();

VisualizationItemImpl item = visualization.getItems().stream()
.filter(i -> {
ItemPath path = i.getSourceRelPath();
return path != null && PasswordType.F_VALUE.equivalent(path.namedSegmentsOnly());
}).findFirst().orElse(null);

if (item instanceof VisualizationDeltaItemImpl) {
VisualizationDeltaItemImpl deltaItem = (VisualizationDeltaItemImpl) item;
if (!deltaItem.getDeletedValues().isEmpty()) {
change = deltaItem.getAddedValues().isEmpty() ? ChangeType.DELETE : ChangeType.MODIFY;
} else {
change = ChangeType.ADD;
}
}

visualization.getName().setSimpleDescription(
new SingleLocalizableMessage("PasswordDescriptionHandler.password", new Object[] {
new SingleLocalizableMessage("PasswordDescriptionHandler.changeType." + change.name())
})
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,8 @@ private void visualizeAtomicDelta(ItemDelta<?, ?> delta, VisualizationImpl visua
}
}
visualizeAtomicItemDelta(visualizationForItem, delta, context, task, result);

evaluateDescriptionHandlers(visualizationForItem, task, result);
}

private void addDescriptiveItems(VisualizationImpl visualization, PrismContainerValue<?> sourceValue, VisualizationContext context, Task task, OperationResult result) {
Expand Down

0 comments on commit d62aa42

Please sign in to comment.