/** * Searches for an original entity for the provided extended entity. * * @param extendedMetaClass extended entity * @return original entity or null if the provided entity is not an extension */ @Nullable public MetaClass getOriginalMetaClass(MetaClass extendedMetaClass) { Class originalClass = getOriginalClass(extendedMetaClass); if (originalClass == null) { return null; } MetaClass metaClass = replacedMetaClasses.get(originalClass); if (metaClass != null) { return metaClass; } return metadata.getSession().getClassNN(originalClass); }
protected String getSystemAttributeDescription(MetaClass metaClass, MetaProperty metaProperty) { String localizedCaption = getPropertyCaption(metaClass, metaProperty); Class originalClass = extendedEntities.getOriginalClass(metaClass); Class<?> ownClass = originalClass != null ? originalClass : metaClass.getJavaClass(); String key = ownClass.getSimpleName() + "." + metaProperty.getName(); return key.equals(localizedCaption) ? null : String.format("%s (%s)", metaProperty.getName(), localizedCaption); }
/** * Get localized name of an entity property. Messages pack must be located in the same package as entity. * * @param metaClass MetaClass containing the property * @param propertyName property's name * @param locale locale, if value is null locale of current user is used * @return localized name */ public String getPropertyCaption(MetaClass metaClass, String propertyName, @Nullable Locale locale) { Class originalClass = extendedEntities.getOriginalClass(metaClass); Class<?> ownClass = originalClass != null ? originalClass : metaClass.getJavaClass(); String className = ownClass.getSimpleName(); String key = className + "." + propertyName; String message; if (locale == null) { message = messages.getMessage(ownClass, key); } else { message = messages.getMessage(ownClass, key, locale); } if (!message.equals(key)) { return message; } MetaPropertyPath propertyPath = metaClass.getPropertyPath(propertyName); if (propertyPath != null) { return getPropertyCaption(propertyPath.getMetaProperty()); } else { return message; } }