package de.danielbasedow.prospecter.core; import com.skjegstad.utils.BloomFilter; import com.skjegstad.utils.BloomFilterImpl; import com.skjegstad.utils.FakeBloomFilter; import gnu.trove.map.hash.TObjectIntHashMap; public class TokenMapperImpl implements TokenMapper { protected int termIdSequence; protected final TObjectIntHashMap<String> termMap = new TObjectIntHashMap<String>(); protected BloomFilter<String> bloomFilter; public TokenMapperImpl() { termIdSequence = 1; bloomFilter = new FakeBloomFilter<String>(); } @Override public int getTermId(String str, boolean dontGenerateNewIds) { int termId = 0; if (bloomFilter.contains(str)) { termId = termMap.get(str); } if (termId == 0 && !dontGenerateNewIds) { synchronized (this) { termId = getNewTermId(); termMap.put(str, termId); bloomFilter.add(str); } } return termId; } @Override public void setBloomFilter(BloomFilter<String> bloomFilter) { this.bloomFilter = bloomFilter; } public int getNewTermId() { return termIdSequence++; } }