@Override public MetaClass getMetaClass(String className, int version, MetadataContext context) { MetaClass meta = getMetaClass(className); if (meta.getVersion() == version) { return meta; } return delegate.getMetaClass(className, version, context); }
@Override public List<MetaClass> getMetaClasses(MetadataContext context) { List<MetaClass> allMetas = delegate.getMetaClasses(context); Map<String, MetaClass> metaMap = new HashMap<String, MetaClass>(); for (MetaClass mc : allMetas) { metaMap.put(mc.getName(), mc); } metaMap.putAll(nameCache); return new ArrayList<MetaClass>(metaMap.values()); }
@Override public boolean isIndexUsable(ISearchField field, MetaClass metaClass) { Collection<IndexInfo> indexes = metaClass.getIndexesOnField(field.getFieldName()); for (IndexInfo index : indexes) { String firstKey = index.getKeyList().get(0); MetaField metaField = metaClass.getFieldByName(firstKey); String physicalKeyName = getFieldValueName(metaField); if (metaField.getDataType().equals(DataTypeEnum.RELATIONSHIP)) { physicalKeyName = metaField.getFlattenValueDbName() + AbstractEntityIDHelper.DOT + InternalFieldEnum.ID.getDbName(); } if (physicalKeyName.equals(field.getFullDbName())) { return true; } } return false; }