Skip to content

Commit

Permalink
Merge pull request #193 from openstandia/MID-8469
Browse files Browse the repository at this point in the history
MID-8469 Fixed display format of case/work item pages
  • Loading branch information
KaterynaHonchar committed Mar 5, 2023
2 parents cc2cffe + d464cb0 commit 8a5ede0
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2064,6 +2064,17 @@ public static String getRelationLabelValue(AssignmentType assignment, PageBase p
pageBase.createStringResource(relation.getLocalPart()).getString();
}

public static String getRelationLabelValue(PrismReferenceValue referenceValue, PageBase pageBase) {
if (referenceValue == null) {
return "";
}
QName relation = referenceValue.getRelation();
String relationDisplayName = getRelationHeaderLabelKeyIfKnown(relation);
return StringUtils.isNotEmpty(relationDisplayName) ?
pageBase.createStringResource(relationDisplayName).getString() :
pageBase.createStringResource(relation.getLocalPart()).getString();
}

private static QName getRelation(PrismContainerValueWrapper<AssignmentType> assignmentWrapper) throws SchemaException {
if (assignmentWrapper == null) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -606,14 +606,7 @@ public IModel<String> getDataModel(IModel<PrismContainerValueWrapper<CaseWorkIte
protected IModel<String> createLinkModel(IModel<PrismContainerValueWrapper<CaseWorkItemType>> rowModel) {
CaseWorkItemType caseWorkItemType = unwrapRowModel(rowModel);
CaseType caseType = CaseTypeUtil.getCase(caseWorkItemType);
String name;
AssignmentHolderType object = WebComponentUtil.getObjectFromAddDeltaForCase(caseType);
if (object == null) {
name = WebModelServiceUtils.resolveReferenceName(caseType.getObjectRef(), pageBase, true);
} else {
name = WebComponentUtil.getEffectiveName(object, AbstractRoleType.F_DISPLAY_NAME, true);
}
return Model.of(name);
return Model.of(WebComponentUtil.getReferencedObjectDisplayNameAndName(caseType.getObjectRef(), true, pageBase));
}

@Override
Expand Down Expand Up @@ -662,7 +655,7 @@ public boolean isEnabled(IModel<PrismContainerValueWrapper<CaseWorkItemType>> ro
protected IModel<String> createLinkModel(IModel<PrismContainerValueWrapper<CaseWorkItemType>> rowModel) {
CaseWorkItemType caseWorkItemType = unwrapRowModel(rowModel);
CaseType caseType = CaseTypeUtil.getCase(caseWorkItemType);
return Model.of(WebModelServiceUtils.resolveReferenceName(caseType.getTargetRef(), pageBase, true));
return Model.of(WebComponentUtil.getReferencedObjectDisplayNameAndName(caseType.getTargetRef(), true, pageBase));
}

@Override
Expand Down Expand Up @@ -799,41 +792,37 @@ public static List<IColumn<SelectableBean<CaseType>, String>> getDefaultCaseColu
IColumn column = new PropertyColumn(createStringResource("pageCases.table.description"), "value.description");
columns.add(column);

column = new AbstractExportableColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.objectRef")) {
columns.add(new AjaxLinkColumn<>(createStringResource("pageCases.table.objectRef")) {
private static final long serialVersionUID = 1L;

@Override
public IModel<?> getDataModel(IModel<SelectableBean<CaseType>> iModel) {
return (IModel<String>) () -> {
CaseType caseModelObject = iModel.getObject().getValue();
if (caseModelObject == null) {
return "";
}
AssignmentHolderType objectRef = WebComponentUtil.getObjectFromAddDeltaForCase(caseModelObject);
if (objectRef != null) {
return WebComponentUtil.getEffectiveName(objectRef, AbstractRoleType.F_DISPLAY_NAME);
} else if (caseModelObject.getObjectRef() != null
&& StringUtils.isNotEmpty(caseModelObject.getObjectRef().getOid())) {
if (caseModelObject.getObjectRef().getObject() != null) {
return WebComponentUtil.getEffectiveName(caseModelObject.getObjectRef().getObject(),
AbstractRoleType.F_DISPLAY_NAME);
} else {
try {
return WebComponentUtil.getEffectiveName(caseModelObject.getObjectRef(), AbstractRoleType.F_DISPLAY_NAME, pageBase,
pageBase.getClass().getSimpleName() + "." + "loadCaseObjectRefName");
} catch (Exception ex) {
LOGGER.error("Unable find the object for reference: {}", caseModelObject.getObjectRef());
}
}
}
return "";
};
public IModel<String> getDataModel(IModel<SelectableBean<CaseType>> rowModel) {
CaseType caseModelObject = rowModel.getObject().getValue();
return Model.of(WebComponentUtil.getReferencedObjectDisplayNameAndName(caseModelObject.getObjectRef(), true, pageBase));
}

@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> item, String componentId, IModel<SelectableBean<CaseType>> rowModel) {
item.add(new Label(componentId, getDataModel(rowModel)));
protected IModel<String> createLinkModel(IModel<SelectableBean<CaseType>> rowModel) {
CaseType caseType = rowModel.getObject().getValue();
return Model.of(WebComponentUtil.getReferencedObjectDisplayNameAndName(caseType.getObjectRef(), true, pageBase));
}
};
columns.add(column);

@Override
public void onClick(AjaxRequestTarget target, IModel<SelectableBean<CaseType>> rowModel) {
CaseType caseType = rowModel.getObject().getValue();

dispatchToObjectDetailsPage(caseType.getObjectRef(), pageBase, false);
}

@Override
public boolean isEnabled(IModel<SelectableBean<CaseType>> rowModel) {
CaseType caseType = rowModel.getObject().getValue();
PrismObject object = caseType.getObjectRef().getObject();
// Do not generate link if the object has not been created yet.
// Check the version to see if it has not been created.
return object != null && object.getVersion() != null;
}
});

if (!isDashboard) {
columns.add(createCaseActorsColumn(pageBase));
Expand Down Expand Up @@ -1056,7 +1045,7 @@ public static RepeatingView getMultilineLinkPanel(String componentId, List<Objec
if (referencesList != null) {
referencesList.forEach(reference -> {
AjaxLinkPanel referenceAjaxLinkPanel = new AjaxLinkPanel(multilineLinkPanel.newChildId(),
Model.of(WebModelServiceUtils.resolveReferenceName(reference.clone(), pageBase, true))) {
Model.of(WebComponentUtil.getReferencedObjectDisplayNameAndName(reference, true, pageBase))) {
private static final long serialVersionUID = 1L;

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public void onClick(AjaxRequestTarget target) {
link.add(visibleIfReference);
add(link);

final Label additionalText = new Label(ID_ADDITIONAL_TEXT, () -> getModelObject() != null ? WebComponentUtil.translateMessage(getModelObject().getAdditionalText()) : null);
final Label additionalText = new Label(ID_ADDITIONAL_TEXT, new AdditionalLabelModel());
add(additionalText);
}

Expand Down Expand Up @@ -164,4 +164,18 @@ public String getObject() {
return value;
}
}

private class AdditionalLabelModel implements IModel<String> {
@Override
public String getObject() {
VisualizationItemValue val = getModelObject();
if (val == null) {
return null;
}
if (val.getSourceValue() != null && val.getSourceValue() instanceof PrismReferenceValue) {
return "[" + WebComponentUtil.getRelationLabelValue((PrismReferenceValue) val.getSourceValue(), getPageBase()) + "]";
}
return WebComponentUtil.translateMessage(getModelObject().getAdditionalText());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import java.util.*;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
Expand Down Expand Up @@ -337,11 +338,26 @@ private LocalizableMessage createDefaultProcessName(ModelInvocationContext<?> ct
assignment.isBeingDeleted() ? "Deleted" :
"Modified";

return new LocalizableMessageBuilder()
.key(SchemaConstants.DEFAULT_POLICY_CONSTRAINT_SHORT_MESSAGE_KEY_PREFIX + "assignmentModification.toBe" + operationKey)
.arg(ObjectTypeUtil.createDisplayInformation(target, false))
.arg(ObjectTypeUtil.createDisplayInformation(asPrismObject(focus), false))
.build();
QName relation = assignment.getNormalizedRelation();

if (relation == null) {
return new LocalizableMessageBuilder()
.key(SchemaConstants.DEFAULT_POLICY_CONSTRAINT_SHORT_MESSAGE_KEY_PREFIX + "assignmentModification.toBe" + operationKey)
.arg(ObjectTypeUtil.createDisplayInformation(target, false))
.arg(ObjectTypeUtil.createDisplayInformation(asPrismObject(focus), false))
.build();
} else {
LocalizableMessage relationMessage = new LocalizableMessageBuilder()
.key("relation." + relation.getLocalPart())
.build();

return new LocalizableMessageBuilder()
.key(SchemaConstants.DEFAULT_POLICY_CONSTRAINT_SHORT_REL_MESSAGE_KEY_PREFIX + "assignmentModification.toBe" + operationKey)
.arg(ObjectTypeUtil.createDisplayInformation(target, false))
.arg(ObjectTypeUtil.createDisplayInformation(asPrismObject(focus), false))
.arg(relationMessage)
.build();
}
}

// creates an ObjectDelta that will be executed after successful approval of the given assignment
Expand Down

0 comments on commit 8a5ede0

Please sign in to comment.