/** * */ package ecologylab.bigsemantics.collecting; import java.util.concurrent.ConcurrentHashMap; import ecologylab.bigsemantics.metadata.builtins.Document; import ecologylab.net.ParsedURL; /** * @author andrew * */ public class SemanticsSiteMap extends ConcurrentHashMap<String, SemanticsSite> { public SemanticsSite getOrConstruct(Document document, SemanticsGlobalScope infoCollector) { ParsedURL parsedURL = document.getLocation(); String domain = parsedURL == null ? null : parsedURL.domain(); SemanticsSite result = null; if (domain != null) { result = this.get(domain); if (result == null) { // record does not yet exist SemanticsSite newRec = new SemanticsSite(domain, infoCollector); result = this.putIfAbsent(domain, newRec); if (result == null) { // put succeeded, use new value result = newRec; } } } return result; } }