Skip to content

Commit

Permalink
Merge branch 'support-4.0' of github.com:Evolveum/midpoint into suppo…
Browse files Browse the repository at this point in the history
…rt-4.0
  • Loading branch information
semancik committed Feb 12, 2020
2 parents e13010f + 2e75479 commit fd2fe89
Show file tree
Hide file tree
Showing 44 changed files with 612 additions and 218 deletions.
Expand Up @@ -12,6 +12,7 @@
import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.assignment.AssignmentPanel;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -168,11 +169,11 @@ private IModel<String> createHeaderModel() {
sb.append(objectTemplateNameValue);
return Model.of(sb.toString());
}
PrismProperty<String> name = getModelObject().asPrismContainerValue().findProperty(ObjectType.F_NAME);
PrismProperty<PolyString> name = getModelObject().asPrismContainerValue().findProperty(ObjectType.F_NAME);
if (name == null || name.isEmpty()) {
return Model.of("");
}
return Model.of(name.getRealValue());
return Model.of(WebComponentUtil.getTranslatedPolyString(name.getRealValue()));
}

private IModel<String> createIdentifierModel() {
Expand Down
Expand Up @@ -10,9 +10,13 @@
import java.util.List;
import java.util.function.Supplier;

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.web.component.data.column.PolyStringPropertyColumn;
import com.evolveum.midpoint.web.component.util.SerializableSupplier;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
Expand All @@ -28,6 +32,7 @@
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.jetbrains.annotations.NotNull;

public abstract class PopupObjectListPanel<O extends ObjectType> extends ObjectListPanel<O> {
Expand Down Expand Up @@ -83,6 +88,15 @@ protected IColumn<SelectableBean<O>, String> createNameColumn(IModel<String> col
(StringUtils.isEmpty(itemPath) ? "name" : itemPath)) {
private static final long serialVersionUID = 1L;

@Override
protected IModel createLinkModel(IModel<SelectableBean<O>> rowModel) {
IModel linkModel = new PropertyModel(rowModel, getPropertyExpression());
if (linkModel.getObject() != null && linkModel.getObject() instanceof PolyStringType){
return Model.of(WebComponentUtil.getTranslatedPolyString((PolyStringType)linkModel.getObject()));
}
return linkModel;
}

@Override
public void onClick(AjaxRequestTarget target, IModel<SelectableBean<O>> rowModel) {
O object = rowModel.getObject().getValue();
Expand All @@ -93,11 +107,14 @@ public void onClick(AjaxRequestTarget target, IModel<SelectableBean<O>> rowModel
}

else {
return new PropertyColumn(
columnNameModel == null ? createStringResource("userBrowserDialog.name") : columnNameModel,
StringUtils.isEmpty(itemPath) ? ObjectType.F_NAME.getLocalPart() : itemPath,
SelectableBean.F_VALUE + "." +
(StringUtils.isEmpty(itemPath) ? "name" : itemPath));
if (StringUtils.isEmpty(itemPath) || ObjectType.F_NAME.getLocalPart().equals(itemPath)){
return new PolyStringPropertyColumn<SelectableBean<O>>(columnNameModel == null ? createStringResource("userBrowserDialog.name") : columnNameModel,
ObjectType.F_NAME.getLocalPart(), "value.name");
} else {
return new PropertyColumn(
columnNameModel == null ? createStringResource("userBrowserDialog.name") : columnNameModel,
itemPath,SelectableBean.F_VALUE + "." + itemPath);
}
}
}

Expand Down
Expand Up @@ -305,8 +305,12 @@ public static String getTypeLocalized(ObjectReferenceType ref) {
}

public static String getReferencedObjectNames(List<ObjectReferenceType> refs, boolean showTypes) {
return getReferencedObjectNames(refs, showTypes, true);
}

public static String getReferencedObjectNames(List<ObjectReferenceType> refs, boolean showTypes, boolean translate) {
return refs.stream()
.map(ref -> emptyIfNull(getName(ref)) + (showTypes ? (" (" + emptyIfNull(getTypeLocalized(ref)) + ")") : ""))
.map(ref -> emptyIfNull(getName(ref, translate)) + (showTypes ? (" (" + emptyIfNull(getTypeLocalized(ref)) + ")") : ""))
.collect(Collectors.joining(", "));
}

Expand All @@ -321,10 +325,15 @@ public static String getReferencedObjectDisplayNamesAndNames(List<ObjectReferenc
}

public static String getReferencedObjectDisplayNamesAndNames(Referencable ref, boolean showTypes) {
return getReferencedObjectDisplayNamesAndNames(ref, showTypes, true);
}

public static String getReferencedObjectDisplayNamesAndNames(Referencable ref, boolean showTypes, boolean translate) {
if (ref == null){
return "";
}
String name = ref.getTargetName() == null ? "" : ref.getTargetName().getOrig();
String name = ref.getTargetName() == null ? "" :
(translate ? getTranslatedPolyString(ref.getTargetName()) : ref.getTargetName().getOrig());
StringBuilder sb = new StringBuilder(name);
if(showTypes) {
sb.append(" (");
Expand Down Expand Up @@ -1034,22 +1043,34 @@ private static <T> List<DisplayableValue> getDisplayableValues(Collection<T> all
}

public static String getName(ObjectType object) {
return getName(object, true);
}

public static String getName(ObjectType object, boolean translate) {
if (object == null) {
return null;
}

return getName(object.asPrismObject());
return getName(object.asPrismObject(), translate);
}

public static String getEffectiveName(ObjectType object, QName propertyName) {
return getEffectiveName(object, propertyName, true);
}

public static String getEffectiveName(ObjectType object, QName propertyName, boolean translate) {
if (object == null) {
return null;
}

return getEffectiveName(object.asPrismObject(), propertyName);
return getEffectiveName(object.asPrismObject(), propertyName, translate);
}

public static <O extends ObjectType> String getEffectiveName(PrismObject<O> object, QName propertyName) {
return getEffectiveName(object, propertyName, true);
}

public static <O extends ObjectType> String getEffectiveName(PrismObject<O> object, QName propertyName, boolean translate) {
if (object == null) {
return null;
}
Expand All @@ -1061,13 +1082,33 @@ public static <O extends ObjectType> String getEffectiveName(PrismObject<O> obje
if (prop.getDefinition().getTypeName().equals(DOMUtil.XSD_STRING)) {
return (String) realValue;
} else if (realValue instanceof PolyString) {
return WebComponentUtil.getOrigStringFromPoly((PolyString) realValue);
return translate ? getTranslatedPolyString((PolyString) realValue)
: WebComponentUtil.getOrigStringFromPoly((PolyString) realValue);
}
}

PolyString name = getValue(object, ObjectType.F_NAME, PolyString.class);
if (name == null){
return null;
}
return translate ? getTranslatedPolyString(name)
: WebComponentUtil.getOrigStringFromPoly(name);
}

return name != null ? name.getOrig() : null;
public static String getTranslatedPolyString(PolyStringType value){
return getTranslatedPolyString(PolyString.toPolyString(value));
}

public static String getTranslatedPolyString(PolyString value){
MidPointApplication application = MidPointApplication.get();
return getTranslatedPolyString(value, application);
}

public static String getTranslatedPolyString(PolyString value, MidPointApplication application){
if (value == null){
return "";
}
return application.getLocalizationService().translate(value, getCurrentLocale(), true);
}

public static <O extends ObjectType> String getName(ObjectReferenceType ref, PageBase pageBase, String operation) {
Expand All @@ -1087,7 +1128,12 @@ public static <O extends ObjectType> String getName(ObjectReferenceType ref, Pag
}

public static <O extends ObjectType> String getDisplayNameOrName(ObjectReferenceType ref, PageBase pageBase, String operation) {
String name = getName(ref);
return getDisplayNameOrName(ref, pageBase, operation, true);
}

public static <O extends ObjectType> String getDisplayNameOrName(ObjectReferenceType ref, PageBase pageBase,
String operation, boolean translate) {
String name = getName(ref, translate);
if (StringUtils.isEmpty(name) || name.equals(ref.getOid())) {
String oid = ref.getOid();
Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions
Expand All @@ -1096,44 +1142,65 @@ public static <O extends ObjectType> String getDisplayNameOrName(ObjectReference
PrismObject<O> object = WebModelServiceUtils.loadObject(type, oid, pageBase,
pageBase.createSimpleTask(operation), new OperationResult(operation));
if (object != null) {
name = getDisplayNameOrName(object);
name = getDisplayNameOrName(object, true);
}
}
return name;
}

public static <O extends ObjectType> String getEffectiveName(ObjectReferenceType ref, QName propertyName, PageBase pageBase, String operation) {
public static <O extends ObjectType> String getEffectiveName(ObjectReferenceType ref, QName propertyName,
PageBase pageBase, String operation) {
return getEffectiveName(ref, propertyName, pageBase, operation, true);
}
public static <O extends ObjectType> String getEffectiveName(ObjectReferenceType ref, QName propertyName,
PageBase pageBase, String operation, boolean translate) {
PrismObject<O> object = WebModelServiceUtils.loadObject(ref, pageBase,
pageBase.createSimpleTask(operation), new OperationResult(operation));

if (object == null) {
return "Not Found";
}

return getEffectiveName(object, propertyName);
return getEffectiveName(object, propertyName, translate);

}

public static String getName(ObjectReferenceType ref) {
return getName(ref, true);
}

public static String getName(ObjectReferenceType ref, boolean translate) {
if (ref == null) {
return null;
}
if (ref.getTargetName() != null) {
if (translate){
return getTranslatedPolyString(ref.getTargetName());
}
return getOrigStringFromPoly(ref.getTargetName());
}
if (ref.asReferenceValue().getObject() != null) {
return getName(ref.asReferenceValue().getObject());
return getName(ref.asReferenceValue().getObject(), translate);
}
return ref.getOid();
}

public static String getName(PrismObject object) {
return getName(object, true);
}

public static String getName(PrismObject object, boolean translate) {
if (object == null) {
return null;
}
PolyString name = getValue(object, ObjectType.F_NAME, PolyString.class);

return name != null ? name.getOrig() : null;
if (name == null){
return null;
}
if (translate){
return getTranslatedPolyString(name);
}
return name.getOrig();
}

public static <C extends Containerable> String getDisplayName(PrismContainerValue<C> prismContainerValue) {
Expand Down Expand Up @@ -1273,38 +1340,77 @@ public static QName normalizeRelation(QName relation) {
}

public static String getDisplayNameOrName(PrismObject object) {
return getDisplayNameOrName(object, true);
}

public static String getDisplayNameOrName(PrismObject object, boolean translate) {
if (object == null) {
return null;
}

String displayName = getDisplayName(object);
return displayName != null ? displayName : getName(object);
String displayName = getDisplayName(object, translate);
return displayName != null ? displayName : getName(object, translate);
}

public static String getDisplayNameOrName(ObjectReferenceType ref) {
return getDisplayNameOrName(ref, true);
}

public static String getDisplayNameOrName(ObjectReferenceType ref, boolean translate) {
if (ref == null) {
return null;
}
String displayName = getDisplayName(ref);
return displayName != null ? displayName : getName(ref);
String displayName = getDisplayName(ref, translate);
return StringUtils.isNotEmpty(displayName) ? displayName : getName(ref);
}

// <display-name> (<name>) OR simply <name> if there's no display name
public static String getDisplayNameAndName(ObjectReferenceType ref) {
return getDisplayNameOrName(ref, true);
}

public static String getDisplayNameAndName(ObjectReferenceType ref, boolean translate) {
if (ref == null) {
return null;
}
String displayName = getDisplayName(ref);
String name = getName(ref);
String displayName = getDisplayName(ref, translate);
String name = getName(ref, translate);
return displayName != null ? displayName + " (" + name + ")" : name;
}

public static String getDisplayName(ObjectReferenceType ref) {
return PolyString.getOrig(ObjectTypeUtil.getDisplayName(ref));
return getDisplayName(ref, true);
}

public static String getDisplayName(ObjectReferenceType ref, boolean translate) {
if (translate){
return getTranslatedPolyString(ObjectTypeUtil.getDisplayName(ref));
} else {
return PolyString.getOrig(ObjectTypeUtil.getDisplayName(ref));
}
}

public static String getDisplayName(PrismObject object) {
return PolyString.getOrig(ObjectTypeUtil.getDisplayName(object));
return getDisplayName(object, true);
}

public static String getDisplayName(PrismObject object, boolean translate) {
return getDisplayName(object, translate, null);
}

public static String getDisplayName(PrismObject object, boolean translate, MidPointApplication application) {
if (object == null){
return "";
}
if (translate){
if (application == null) {
return getTranslatedPolyString(ObjectTypeUtil.getDisplayName(object));
} else {
return getTranslatedPolyString(PolyString.toPolyString(ObjectTypeUtil.getDisplayName(object)), application);
}
} else {
return PolyString.getOrig(ObjectTypeUtil.getDisplayName(object));
}
}

public static PolyStringType createPolyFromOrigString(String str) {
Expand Down Expand Up @@ -1554,7 +1660,7 @@ public static String getLocalizedDate(Date date, String style) {
return null;
}
PatternDateConverter converter = new PatternDateConverter(getLocalizedDatePattern(style), true);
return converter.convertToString(date, WebComponentUtil.getCurrentLocale());
return converter.convertToString(date, getCurrentLocale());
}

public static String getShortDateTimeFormattedValue(XMLGregorianCalendar date, PageBase pageBase) {
Expand Down
Expand Up @@ -41,7 +41,7 @@ public class PrismReferenceWrapperColumnPanel<R extends Referencable> extends Ab

@Override
protected String createLabel(PrismValueWrapper<R, PrismReferenceValue> object) {
return WebComponentUtil.getReferencedObjectDisplayNamesAndNames(object.getRealValue(), false);
return WebComponentUtil.getReferencedObjectDisplayNamesAndNames(object.getRealValue(), false, true);
}

@Override
Expand Down

0 comments on commit fd2fe89

Please sign in to comment.