private void removeMatched(Set<UserAttribute> matchedToRemove) { getAttributes().removeAll(matchedToRemove); if (getUser() != null) { UserData user = getUser(); for (UserAttribute a : matchedToRemove) { clearAttribute(user, a); } } }
public UserAttribute findAttributeRecursive(final String key) { UserAttribute found = findAttribute(key); if (found == null) { for (UserAttribute a : getAttributes()) { found = a.findAttributeRecursive(key); if (found != null) { break; } } } return found; }
public boolean containsAttributes(Set<String> keys) { return getAttributeKeys().containsAll(keys); }
public UserAttribute addAttribute(final String key, final String value) { UserAttribute a = findAttribute(key, value); return a != null ? a : modifyOrAddAttribute(null, key, value); }
UserAttribute addInternal(UserAttribute a) { if (a.getParent() != null) { a.getParent().getAttributes().remove(a); } getAttributes().add(a); if (getUser() != null) { getUser().addChild(a); } a.setUser(getUser()); a.setParent(getChildParent()); return a; }
public Collection<UserAttribute> findAttributesMatchingKey(final String key) { return findAttributesByPredicate(getAttributes(), UserAttributePredicates.matchKey(key)); }
public void removeAttribute(Predicate<UserAttribute> predicate) { Set<UserAttribute> matchedToRemove = new HashSet<UserAttribute>(); for (UserAttribute a : getAttributes()) { if (predicate.apply(a)) { matchedToRemove.add(a); } } removeMatched(matchedToRemove); }
protected UserAttribute modifyOrAddAttribute(final UserAttribute original, final UserAttribute current) { if (original == null) { return addInternal(current); } if (UserAttributePredicates.matchAttribute(original).apply(current)) { return original; } removeMatched(original); return addInternal(current); }
public Map<String, UserAttribute> getAttributesMap() { return Collections.transform(getAttributes(), new Transformer<UserAttribute, String>() { @Override public String transform(UserAttribute obj) { return obj.getKey(); } }); }
public boolean containsAttributes(final String... keys) { return containsAttributes(new HashSet<String>() {{ for (String key : keys) { add(key); } }}); }
public String findAttributeValueRecursive(String key) { UserAttribute a = findAttributeRecursive(key); return a != null ? a.getValue() : null; }
public String findAttributeValue(String key) { UserAttribute a = findAttribute(key); return a != null ? a.getValue() : null; }
protected UserAttribute modifyOrAddAttribute(UserAttribute attribute, String key, String value) { if (attribute == null) { return addInternal(new UserAttribute(key, value)); } attribute.setValue(value); return attribute; }
public UserAttribute setAttribute(final String key, final String value) { return modifyOrAddAttribute(findAttribute(key), key, value); }
public Set<String> getAttributeKeys() { return Collections.collect(getAttributes(), new Transformer<UserAttribute, String>() { @Override public String transform(UserAttribute obj) { return obj.getKey(); } }, new HashSet<String>()); }
public UserAttribute findAttributeRecursive(final String key, final String value) { UserAttribute found = findAttribute(key, value); if (found == null) { for (UserAttribute a : getAttributes()) { found = a.findAttributeRecursive(key, value); if (found != null) { break; } } } return found; }
public UserAttribute setAttribute(final String key, final String oldValue, final String newValue) { return modifyOrAddAttribute(findAttribute(key, oldValue), key, newValue); }
public UserAttribute findAttribute(UserAttribute attribute) { return findAttribute(getAttributes(), UserAttributePredicates.matchEntity(attribute)); }
public UserAttribute setAttribute(UserAttribute attribute, String oldValue) { return modifyOrAddAttribute(findAttribute(attribute.getKey(), oldValue), attribute); }
public UserAttribute findAttribute(final String key) { return findAttribute(getAttributes(), UserAttributePredicates.matchKey(key)); }