Skip to content

Commit

Permalink
resolving references for visualizer (assignment description handler)
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Feb 27, 2023
1 parent d267b6a commit fb36934
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import java.util.List;
import java.util.Objects;

import com.evolveum.midpoint.gui.api.model.LoadableModel;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
Expand Down Expand Up @@ -274,7 +276,7 @@ protected String load() {
}
};

changesModel = new LoadableDetachableModel<>() {
changesModel = new LoadableModel<>(false) {

@Override
protected VisualizationDto load() {
Expand Down Expand Up @@ -367,6 +369,7 @@ protected String getPaginationCssClass() {
add(details);

ChangesPanel changesNew = new ChangesPanel(ID_CHANGES_NEW, () -> Arrays.asList(objectModel.getObject().getDelta()), null);
changesNew.setShowOperationalItems(true);
changesNew.add(new VisibleBehaviour(() -> WebComponentUtil.isEnabledExperimentalFeatures()));
add(changesNew);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,6 @@
*/
package com.evolveum.midpoint.web.page.admin.reports;

import java.util.*;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValue;

import com.evolveum.midpoint.authentication.api.authorization.AuthorizationAction;
import com.evolveum.midpoint.authentication.api.authorization.PageDescriptor;
import com.evolveum.midpoint.authentication.api.authorization.Url;
Expand Down Expand Up @@ -53,6 +41,18 @@
import com.evolveum.prism.xml.ns._public.types_3.ItemDeltaType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValue;

import java.util.*;

@PageDescriptor(
urls = {
@Url(mountUrl = "/admin/auditLogDetails")
Expand Down Expand Up @@ -406,14 +406,8 @@ private void initDeltasPanel(WebMarkupContainer eventPanel) {

@Override
protected void populateItem(ListItem<ObjectDeltaOperationType> item) {
// ObjectDeltaOperationPanel deltaPanel = new ObjectDeltaOperationPanel(ID_DELTA_PANEL, item.getModel(), PageAuditLogDetails.this) {
// @Override
// public boolean getIncludeOriginalObject() {
// return false;
// }
// };
// deltaPanel.setOutputMarkupId(true);
AuditChangesPanel deltaPanel = new AuditChangesPanel(ID_DELTA_PANEL, item.getModel(), PageAuditLogDetails.this);
item.add(new VisibleBehaviour(() -> item.getModelObject() != null));
item.add(deltaPanel);
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,19 @@

import javax.xml.namespace.QName;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.model.impl.visualizer.output.VisualizationImpl;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.LocalizableMessage;
import com.evolveum.midpoint.util.SingleLocalizableMessage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentHolderType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
Expand All @@ -31,6 +36,9 @@
@Component
public class AssignmentDescriptionHandler implements VisualizationDescriptionHandler {

@Autowired
private ModelService modelService;

@Override
public boolean match(VisualizationImpl visualization) {
PrismContainerValue value = visualization.getSourceValue();
Expand All @@ -55,11 +63,61 @@ public void apply(VisualizationImpl visualization, Task task, OperationResult re
QName type = targetRef.getType() != null ? targetRef.getType() : ObjectType.COMPLEX_TYPE;
ObjectTypes ot = ObjectTypes.getObjectTypeFromTypeQName(type);

LocalizableMessage targetName = resolveReferenceName(targetRef, task, result);

visualization.getName().setOverview(
new SingleLocalizableMessage("AssignmentDescriptionHandler.assignment", new Object[] {
new SingleLocalizableMessage("ObjectTypes." + ot.name()),
targetRef.getTargetName() != null ? targetRef.getTargetName() : targetRef.getOid(),
targetName,
changeType == ADD ? "assigned" : "unassigned"
}, (String) null));
}

private LocalizableMessage resolveReferenceName(ObjectReferenceType ref, Task task, OperationResult result) {
if (ref == null) {
return null;
}

if (ref.getTargetName() != null) {
return new SingleLocalizableMessage(ref.getTargetName().getOrig());
}

if (ref.getObject() != null) {
PrismObject object = ref.getObject();
if (object.getName() == null) {
return createMessageFromUnknownReference(ref);
}

return new SingleLocalizableMessage(object.getName().getOrig());
}

String oid = ref.getOid();
if (oid == null) {
return null;
}

try {
ObjectTypes type = getTypeFromReference(ref);

PrismObject object = modelService.getObject(type.getClassDefinition(), ref.getOid(), GetOperationOptions.createRawCollection(), task, result);
return new SingleLocalizableMessage(object.getName().getOrig());
} catch (Exception ex) {
return createMessageFromUnknownReference(ref);
}
}

private ObjectTypes getTypeFromReference(ObjectReferenceType ref) {
QName typeName = ref.getType() != null ? ref.getType() : ObjectType.COMPLEX_TYPE;
return ObjectTypes.getObjectTypeFromTypeQName(typeName);
}

private LocalizableMessage createMessageFromUnknownReference(ObjectReferenceType ref) {
ObjectTypes type = getTypeFromReference(ref);

String key = "AssignmentDescriptionHandler.unknownRef";
return new SingleLocalizableMessage(key, new Object[] {
ref.getOid(),
new SingleLocalizableMessage("ObjectTypes." + type.name())
}, key);
}
}

0 comments on commit fb36934

Please sign in to comment.