// TODO - try to get rid of <br> attributes when creating new lines in association attributes // pop-up private String createAssociationTooltipText(PrismProperty property) { StringBuilder sb = new StringBuilder(); sb.append(getString("prismValuePanel.message.association.attributes")).append("<br>"); if (property.getParent() != null && property.getParent().getParent() != null) { PrismObject<ShadowType> shadowPrism = (PrismObject<ShadowType>) property.getParent().getParent(); Collection<ResourceAttribute<?>> attributes = ShadowUtil.getAttributes(shadowPrism); if (attributes == null || attributes.isEmpty()) { return sb.toString(); } // TODO - this is a dirty fix for situation, when attribute value is too long and it is a // string without white chars, // thus it will not break in tooltip. break-all is also not good, since it can brake in the // middle of words. What we // are doing here is replacing every, with ,​, ​ (the same with @) is a zero-width // space, so the attribute value // will break after comma. This dirty fix will be removed when association editor is // completed. for (ResourceAttribute<?> attr : attributes) { for (Object realValue : attr.getRealValues()) { sb.append(getAttributeName(attr)); sb.append(":"); if (realValue != null) { sb.append( realValue .toString() .replace(",", ",​") .replace("@", "@​") .replace("_", "@​")); } sb.append("<br>"); } } } return sb.toString(); }
@Override public void setObject(Object object) { try { PrismProperty property = getPrismObject().findOrCreateProperty(path); if (object != null) { PrismPropertyDefinition def = property.getDefinition(); if (PolyString.class.equals(def.getTypeClass())) { object = new PolyString((String) object); } property.setValue(new PrismPropertyValue(object, OriginType.USER_ACTION, null)); } else { PrismContainerValue parent = (PrismContainerValue) property.getParent(); parent.remove(property); } } catch (Exception ex) { LoggingUtils.logException(LOGGER, "Couldn't update prism property model", ex); } }