/** * Retrieve a map from key name to PrimaryKey object. The Map contains all the primary keys * that exist on a particular class, without performing any recursion. * * @param cld the ClassDescriptor to fetch primary keys for * @return the Map from key names to PrimaryKeys */ public static Map<String, PrimaryKey> getPrimaryKeys(ClassDescriptor cld) { Map<String, PrimaryKey> keyMap = primaryKeyCache.get(cld); if (keyMap == null) { keyMap = new LinkedHashMap<String, PrimaryKey>(); Properties keys = getKeyProperties(cld.getModel().getName()); String cldName = Util.unqualifiedName(cld.getName()); Properties cldKeys = Util.getPropertiesStartingWith(cldName, keys); cldKeys = Util.stripStart(cldName, cldKeys); List<String> keyNames = new ArrayList<String>(); for (Object key : cldKeys.keySet()) { if (key instanceof String) { keyNames.add((String) key); } } Collections.sort(keyNames); for (String keyName : keyNames) { PrimaryKey key = new PrimaryKey(keyName, (String) cldKeys.get(keyName), cld); keyMap.put(keyName, key); } primaryKeyCache.put(cld, keyMap); } return keyMap; }
/** * Retrieve a map from key name to PrimaryKey object. The Map contains all the primary keys * that exist on a particular class, without performing any recursion. * * @param cld the ClassDescriptor to fetch primary keys for * @return the Map from key names to PrimaryKeys */ public static Map<String, PrimaryKey> getPrimaryKeys(ClassDescriptor cld) { Map<String, PrimaryKey> keyMap = primaryKeyCache.get(cld); if (keyMap == null) { keyMap = new LinkedHashMap<String, PrimaryKey>(); Properties keys = getKeyProperties(cld.getModel().getName()); String cldName = Util.unqualifiedName(cld.getName()); Properties cldKeys = Util.getPropertiesStartingWith(cldName, keys); cldKeys = Util.stripStart(cldName, cldKeys); List<String> keyNames = new ArrayList<String>(); for (Object key : cldKeys.keySet()) { if (key instanceof String) { keyNames.add((String) key); } } Collections.sort(keyNames); for (String keyName : keyNames) { PrimaryKey key = new PrimaryKey(keyName, (String) cldKeys.get(keyName), cld); keyMap.put(keyName, key); } primaryKeyCache.put(cld, keyMap); } return keyMap; }