package org.batfish.representation.juniper; import java.util.Collections; import java.util.Map; import java.util.Set; import java.util.TreeMap; import org.batfish.common.Warnings; import org.batfish.common.util.ComparableStructure; import org.batfish.datamodel.Prefix; public final class AddressBook extends ComparableStructure<String> { /** * */ private static final long serialVersionUID = 1L; private final Map<String, AddressBookEntry> _entries; private final Map<String, AddressBook> _globalBooks; public AddressBook(String name, Map<String, AddressBook> globalBooks) { super(name); _entries = new TreeMap<>(); _globalBooks = globalBooks; } public Map<String, AddressBookEntry> getEntries() { return _entries; } public Set<Prefix> getPrefixes(String entryName, Warnings w) { AddressBookEntry entry = _entries.get(entryName); if (entry == null) { for (AddressBook globalBook : _globalBooks.values()) { entry = globalBook._entries.get(entryName); if (entry != null) { break; } } } if (entry == null) { w.redFlag( "Could not find entry: \"" + entryName + "\" in address book: \"" + _key + "\" or any global address book"); return Collections.emptySet(); } else { return entry.getPrefixes(w); } } }