+ public List<String> getPropertyKeys(){
+ List<String> properties = new ArrayList<>();
+ properties.add(getName());
+ properties.add(PROPERTY_PROTECTED_TITLECACHE);
+ properties.addAll(getPropertyKeys_internal());
+ properties.add(TYPE_PROPERTY);
+ properties.add(ID_PROPERTY);
+ properties.add(UUID_PROPERTY);
+ return properties;
+ }
+
+ protected abstract List<String> getPropertyKeys_internal();
+
+
+ public Object getPropertyValue(T cdmBase, String property){
+ if(property.equals(getName())){
+ return getText(cdmBase);
+ }
+ else if(property.equals(PROPERTY_PROTECTED_TITLECACHE)
+ &&cdmBase.isInstanceOf(IdentifiableEntity.class)){
+ return HibernateProxyHelper.deproxy(cdmBase, IdentifiableEntity.class).isProtectedTitleCache();
+ }
+ else if(property.equals(TYPE_PROPERTY)){
+ return getTypeText(cdmBase);
+ }
+ else if(property.equals(UUID_PROPERTY)){
+ return cdmBase.getUuid();
+ }
+ else if(property.equals(ID_PROPERTY)){
+ return cdmBase.getId();
+ }
+ return null;
+ }
+
+ public boolean isBooleanProperty(String property) {
+ if(property.equals(PROPERTY_PROTECTED_TITLECACHE)){
+ return true;
+ }
+ return false;
+ }
+
+ public boolean isCacheProperty(String property) {
+ if(property.equals(PROPERTY_PROTECTED_TITLECACHE)){
+ return true;
+ }
+ return false;
+ }
+
+ public <T extends IdentifiableEntity> Comparator<T> getTitleComparator(){
+ return new TitleCacheComparator<T>();