diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 8ea6e7b5397..376154ebb47 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -1375,6 +1375,20 @@ public static String getDisplayName(PrismContainerValu return StringEscapeUtils.escapeHtml4(displayName); } + public static String getItemDefinitionDisplayNameOrName(ItemDefinition def, Component component) { + if (def == null) { + return null; + } + + if (def.getDisplayName() != null) { + StringResourceModel nameModel = PageBase.createStringResourceStatic(component, def.getDisplayName()); + if (StringUtils.isNotEmpty(nameModel.getString()) && !def.getDisplayName().equals(nameModel.getString())) { + return nameModel.getString(); + } + } + return def.getItemName().getLocalPart(); + } + private static String getAcquisitionDescription(ProvenanceAcquisitionType acquisitionType) { if (acquisitionType == null) { return null; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/Property.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/Property.java index b2aef7d3485..25640006d5a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/Property.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/Property.java @@ -8,6 +8,8 @@ import java.io.Serializable; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; + import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.apache.wicket.model.StringResourceModel; @@ -37,7 +39,7 @@ public ItemDefinition getDefinition() { } public String getName() { - return getItemDefinitionName(definition); + return WebComponentUtil.getItemDefinitionDisplayNameOrName(definition, null); } public boolean isSelected() { @@ -69,8 +71,8 @@ public int hashCode() { @Override public int compareTo(Property o) { - String n1 = getItemDefinitionName(definition); - String n2 = getItemDefinitionName(o.definition); + String n1 = WebComponentUtil.getItemDefinitionDisplayNameOrName(definition, null); + String n2 = WebComponentUtil.getItemDefinitionDisplayNameOrName(o.definition, null); if (n1 == null || n2 == null) { return 0; @@ -79,23 +81,6 @@ public int compareTo(Property o) { return String.CASE_INSENSITIVE_ORDER.compare(n1, n2); } - private String getItemDefinitionName(ItemDefinition def) { - if (def == null) { - return null; - } - - if (def.getDisplayName() != null) { - StringResourceModel nameModel = PageBase.createStringResourceStatic(null, def.getDisplayName()); - if (StringUtils.isNotEmpty(nameModel.getString())) { - return nameModel.getString(); - } - } - String name = def.getDisplayName(); // TODO this is always null here, isn't it? - if (StringUtils.isEmpty(name)) { - name = def.getItemName().getLocalPart(); - } - return name; - } @Override public String toString() { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/filter/ValueSearchFilterItem.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/filter/ValueSearchFilterItem.java index 975d8505bc1..e4c5f1ede6f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/filter/ValueSearchFilterItem.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/filter/ValueSearchFilterItem.java @@ -13,6 +13,8 @@ import java.util.List; import javax.xml.namespace.QName; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; + import org.apache.commons.collections4.CollectionUtils; import com.evolveum.midpoint.prism.*; @@ -117,16 +119,19 @@ public QName getMatchingRuleName() { public ValueSearchFilterItem(ValueFilter filter, boolean applyNegation) { this.filter = filter; this.applyNegation = applyNegation; - propertyName = filter.getElementName().toString(); propertyPath = filter.getElementName(); propertyDef = filter.getDefinition(); + propertyName = WebComponentUtil.getItemDefinitionDisplayNameOrName(propertyDef, null); value = CollectionUtils.isNotEmpty(filter.getValues()) ? filter.getValues().get(0) : null; + if (propertyDef instanceof PrismReferenceDefinition && value == null) { + value = new ObjectReferenceType(); + } this.expression = filter.getExpression(); parseFilterName(); } public ValueSearchFilterItem(Property property, boolean applyNegation) { - propertyName = property.getDefinition().getItemName().toString(); + propertyName = property.getName(); propertyPath = property.getDefinition().getItemName(); propertyDef = property.getDefinition(); this.applyNegation = applyNegation; @@ -267,6 +272,8 @@ private void parseFilterName() { } } + + public List getAvailableFilterNameList() { if (propertyDef == null) { return Arrays.asList(FilterName.values());