// TODO(jon): better name public Map<EntryType, Set<AddeEntry>> getVerifiedEntriesByTypes() { Map<EntryType, Set<AddeEntry>> entryMap = newLinkedHashMap(EntryType.values().length); int size = trie.size(); for (EntryType type : EntryType.values()) { entryMap.put(type, new LinkedHashSet<AddeEntry>(size)); } for (AddeEntry entry : trie.values()) { Set<AddeEntry> entrySet = entryMap.get(entry.getEntryType()); entrySet.add(entry); } return entryMap; }
/** * Searches the set of servers in an attempt to locate the accounting information for the matching * server. <b>Note</b> that because the data structure is a {@link Set}, there <i>cannot</i> be * duplicate entries, so there is no need to worry about our criteria finding multiple matches. * * <p>Also note that none of the given parameters accept {@code null} values. * * @param address Address of the server. * @param group Dataset. * @param type Group type. * @return Either the {@link AddeAccount} for the given criteria, or {@link * AddeEntry#DEFAULT_ACCOUNT} if there was no match. * @see RemoteAddeEntry#equals(Object) */ public AddeAccount getAccountingFor(final String address, final String group, EntryType type) { Collection<AddeEntry> entries = trie.getPrefixedBy(address + '!' + group + '!' + type.name()).values(); for (AddeEntry entry : entries) { if (!isInvalidEntry(entry)) { return entry.getAccount(); } } return AddeEntry.DEFAULT_ACCOUNT; }
public Set<AddeServer.Group> getIdvStyleRemoteGroups(final String server, final EntryType type) { Set<AddeServer.Group> idvGroups = newLinkedHashSet(trie.size()); String typeStr = type.name(); for (AddeEntry matched : trie.getPrefixedBy(server).values()) { if (matched == RemoteAddeEntry.INVALID_ENTRY) { continue; } if ((matched.getEntryStatus() == EntryStatus.ENABLED) && (matched.getEntryValidity() == EntryValidity.VERIFIED) && (matched.getEntryType() == type)) { String group = matched.getGroup(); idvGroups.add(new AddeServer.Group(typeStr, group, group)); } } return idvGroups; }