Skip to content

Commit

Permalink
delta viewer, a lot of bugfixing
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Feb 24, 2023
1 parent 61b491e commit b4ce76f
Show file tree
Hide file tree
Showing 10 changed files with 195 additions and 209 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@
-->

<wicket:panel xmlns:wicket="http://wicket.apache.org">

<div wicket:id="objectDeltaOperationMarkup" class="card">
<table class="table table-striped">
<tr>
<td><wicket:message key="ObjectDeltaOperationType.resourceName" /></td>
<td><span wicket:id="resourceName" /></td>
</tr>
<tr>
<td><wicket:message
key="ObjectDeltaOperationType.objectName" /></td>
<td><span wicket:id="objectName" /></td>
</tr>
<tr>
<td><wicket:message key="ObjectDeltaOperationType.executionResult" /></td>
<td><div wicket:id="executionResult" class="pull-left"/>
<div wicket:id="fullResultLink" class="show-empty-button pull-right" /></td>
</tr>
</table>

<div wicket:id="deltaPanel" />
</div>

<div wicket:id="objectDeltaOperationMarkup" class="card card-outline">
<table class="table table-striped">
<wicket:enclosure>
<tr>
<td><wicket:message key="ObjectDeltaOperationType.resourceName"/></td>
<td><span wicket:id="resourceName"/></td>
</tr>
</wicket:enclosure>
<tr>
<td><wicket:message key="ObjectDeltaOperationType.objectName"/></td>
<td><span wicket:id="objectName"/></td>
</tr>
<tr>
<td><wicket:message key="ObjectDeltaOperationType.executionResult"/></td>
<td class="d-flex gap-1 align-items-baseline">
<span wicket:id="executionResult"/>
<a class="text-sm" wicket:id="fullResultLink"><wicket:message key="ObjectDeltaOperationResult.showFullResult"/></a>
</td>
</tr>
</table>
<div class="mx-3" wicket:id="deltaPanel"/>
</div>
</wicket:panel>
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.result.OperationResultPopupPanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.model.api.visualizer.Visualization;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
Expand All @@ -27,7 +28,6 @@
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.component.AjaxButton;
import com.evolveum.midpoint.web.component.prism.show.VisualizationDto;
import com.evolveum.midpoint.web.component.prism.show.VisualizationPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
Expand Down Expand Up @@ -61,71 +61,56 @@ public ObjectDeltaOperationPanel(String id, IModel<ObjectDeltaOperationType> mod

private void initLayout() {
WebMarkupContainer objectDeltaOperationMarkup = new WebMarkupContainer(ID_OBJECT_DELTA_OPERATION_MARKUP);
objectDeltaOperationMarkup.setOutputMarkupId(true);

objectDeltaOperationMarkup.add(AttributeModifier.append("class", (IModel<String>) this::getBoxCssClass));
add(objectDeltaOperationMarkup);

Label executionResult = new Label(ID_PARAMETERS_EXECUTION_RESULT,
new PropertyModel<>(getModel(), "executionResult.status"));
executionResult.setOutputMarkupId(true);
Label executionResult = new Label(ID_PARAMETERS_EXECUTION_RESULT, new PropertyModel<>(getModel(), "executionResult.status"));
objectDeltaOperationMarkup.add(executionResult);

AjaxButton showFullResultsLink = new AjaxButton(ID_PARAMETERS_FULL_RESULT_LINK) {
AjaxLink showFullResultsLink = new AjaxLink<>(ID_PARAMETERS_FULL_RESULT_LINK) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
showFullResultsPerformed(target);
}

@Override
public IModel<?> getBody() {
return getPageBase().createStringResource("ObjectDeltaOperationResult.showFullResult");
}
};
showFullResultsLink.setOutputMarkupId(true);
showFullResultsLink.add(AttributeAppender.append("style", "cursor: pointer;"));
showFullResultsLink.add(new VisibleBehaviour(() -> getModelObject() != null && getModelObject().getExecutionResult() != null));
objectDeltaOperationMarkup.add(showFullResultsLink);

Label resourceName = new Label(ID_PARAMETERS_RESOURCE_NAME,
new PropertyModel<>(getModel(), ObjectDeltaOperationType.F_RESOURCE_NAME.getLocalPart()));
resourceName.setOutputMarkupId(true);
Label resourceName = new Label(ID_PARAMETERS_RESOURCE_NAME, new PropertyModel<>(getModel(), ObjectDeltaOperationType.F_RESOURCE_NAME.getLocalPart()));
resourceName.add(new VisibleBehaviour(() -> getModelObject().getResourceName() != null));
objectDeltaOperationMarkup.add(resourceName);

Label objectName = new Label(ID_PARAMETERS_OBJECT_NAME,
new PropertyModel<>(getModel(), ObjectDeltaOperationType.F_OBJECT_NAME.getLocalPart()));
objectName.setOutputMarkupId(true);
objectDeltaOperationMarkup.add(objectName);
final VisualizationDto visualizationDto;
try {
visualizationDto = loadVisualizationForDelta();
} catch (SchemaException | ExpressionEvaluationException e) {
OperationResult result = new OperationResult(ObjectDeltaOperationPanel.class.getName() + ".loadSceneForDelta");
result.recordFatalError(createStringResource("ObjectDeltaOperationPanel.message.fetchOrVisualize.fatalError", e.getMessage()).getString(), e);
parentPage.showResult(result);
throw parentPage.redirectBackViaRestartResponseException();
}
IModel<VisualizationDto> deltaModel = new IModel<>() {
private static final long serialVersionUID = 1L;

public VisualizationDto getObject() {
return visualizationDto;
}
IModel<VisualizationDto> deltaModel = new LoadableModel<>(false) {

@Override
protected VisualizationDto load() {
try {
return loadVisualizationForDelta();
} catch (SchemaException | ExpressionEvaluationException e) {
OperationResult result = new OperationResult(ObjectDeltaOperationPanel.class.getName() + ".loadSceneForDelta");
result.recordFatalError(createStringResource("ObjectDeltaOperationPanel.message.fetchOrVisualize.fatalError", e.getMessage()).getString(), e);
parentPage.showResult(result);
throw parentPage.redirectBackViaRestartResponseException();
}
}
};

VisualizationPanel deltaPanel = new VisualizationPanel(ID_DELTA_PANEL, deltaModel, true, true) {
@Override
public void headerOnClickPerformed(AjaxRequestTarget target, IModel<VisualizationDto> model) {
super.headerOnClickPerformed(target, model);
// model.getObject().setMinimized(!model.getObject().isMinimized());

target.add(ObjectDeltaOperationPanel.this);
}
};
deltaPanel.setOutputMarkupId(true);
objectDeltaOperationMarkup.add(deltaPanel);

}

private String getBoxCssClass() {
Expand Down Expand Up @@ -167,25 +152,22 @@ private VisualizationDto loadVisualizationForDelta() throws SchemaException, Exp
ObjectDelta<? extends ObjectType> delta;
ObjectDeltaType deltaType = getModel().getObject().getObjectDelta();
try {
delta = DeltaConvertor.createObjectDelta(deltaType,
parentPage.getPrismContext());
delta = DeltaConvertor.createObjectDelta(deltaType, parentPage.getPrismContext());
} catch (SchemaException e) {
LoggingUtils.logException(LOGGER, "SchemaException while converting delta:\n{}", e, deltaType);
throw e;
}

try {
visualization = parentPage.getModelInteractionService().visualizeDelta(delta, true, getIncludeOriginalObject(),
parentPage.createSimpleTask(ID_PARAMETERS_DELTA),
new OperationResult(ID_PARAMETERS_DELTA));
} catch (SchemaException | ExpressionEvaluationException e) {
LoggingUtils.logException(LOGGER, "SchemaException while visualizing delta:\n{}",
e, DebugUtil.debugDump(delta));
LoggingUtils.logException(LOGGER, "SchemaException while visualizing delta:\n{}", e, DebugUtil.debugDump(delta));
throw e;
}
VisualizationDto visualizationDto = new VisualizationDto(visualization);
visualizationDto.setMinimized(true);
return visualizationDto;

return new VisualizationDto(visualization);
}

public boolean getIncludeOriginalObject() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@
<div class="m-3" wicket:id="partialVisualization"/>
</wicket:container>

<div class="show-empty-button" wicket:id="showOperationalItemsLink"/>
<a class="text-sm d-block m-2" wicket:id="showOperationalItemsLink"/>
</wicket:panel>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,12 @@
package com.evolveum.midpoint.web.component.prism.show;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;

Expand Down Expand Up @@ -93,22 +91,16 @@ protected boolean isOperationalItemsVisible() {
partialVisualizations.setReuseItems(true);
add(partialVisualizations);

AjaxButton showOperationalItemsLink = new AjaxButton(ID_SHOW_OPERATIONAL_ITEMS_LINK) {
AjaxButton showOperationalItemsLink = new AjaxButton(ID_SHOW_OPERATIONAL_ITEMS_LINK, getShowOperationalItemsLinkLabel()) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
setOperationalItemsVisible(!operationalItemsVisible);
target.add(SimpleVisualizationPanel.this);
}

@Override
public IModel<?> getBody() {
return getShowOperationalItemsLinkLabel();
}
};
showOperationalItemsLink.setOutputMarkupId(true);
showOperationalItemsLink.add(AttributeAppender.append("style", "cursor: pointer;"));
showOperationalItemsLink.add(new VisibleBehaviour(() -> showOperationalItems));
add(showOperationalItemsLink);
}
Expand All @@ -117,9 +109,8 @@ private void setOperationalItemsVisible(boolean operationalItemsVisible) {
this.operationalItemsVisible = operationalItemsVisible;
}

private IModel<?> getShowOperationalItemsLinkLabel() {
return operationalItemsVisible ? PageBase.createStringResourceStatic("ScenePanel.hideOperationalItemsLink")
: PageBase.createStringResourceStatic("ScenePanel.showOperationalItemsLink");
private IModel<String> getShowOperationalItemsLinkLabel() {
return () -> operationalItemsVisible ? getString("ScenePanel.hideOperationalItemsLink") : getString("ScenePanel.showOperationalItemsLink");
}

private boolean isOperationalPartialVisualization(IModel<VisualizationDto> visualizationDtoModel) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.web.component.util.EnableBehaviour;

import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -137,11 +138,17 @@ public String getObject() {
if (val == null) {
return null;
}
if (val.getSourceValue() != null) {
if (val.getSourceValue() instanceof PrismReferenceValue) {
return WebComponentUtil.getReferencedObjectDisplayNameAndName(((PrismReferenceValue) val.getSourceValue()).asReferencable(), true, getPageBase());
} else if (val.getSourceValue() instanceof Objectable) {
WebComponentUtil.getDisplayNameOrName(((Objectable) val.getSourceValue()).asPrismObject());
PrismValue prismvalue = val.getSourceValue();
if (prismvalue != null) {
if (prismvalue instanceof PrismReferenceValue) {
PrismReferenceValue ref = (PrismReferenceValue) prismvalue;
if (ref.getOid() == null) {
return LocalizationUtil.translate("VisualizationItemValue.undefinedOid");
}

return WebComponentUtil.getReferencedObjectDisplayNameAndName(ref.asReferencable(), true, getPageBase());
} else if (prismvalue instanceof Objectable) {
WebComponentUtil.getDisplayNameOrName(((Objectable) prismvalue).asPrismObject());
}
}
LocalizableMessage textValue = getModelObject().getText();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ <h3 class="card-title">
</div>

<div wicket:id="body" class="card-body p-0">
<div class="m-3" wicket:id="visualization"/>
<div wicket:id="visualization"/>
</div>
</wicket:panel>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,6 @@ public void onClick(AjaxRequestTarget target) {
add(body);

final SimpleVisualizationPanel visualization = new SimpleVisualizationPanel(ID_VISUALIZATION, getModel(), showOperationalItems, advanced);
visualization.setRenderBodyOnly(true);
body.add(visualization);
}

Expand Down

0 comments on commit b4ce76f

Please sign in to comment.