![JAR search and dependency download from the Maven repository](/logo.png)
de.julielab.geneexpbase.candidateretrieval.CandidateCacheKey Maven / Gradle / Ivy
package de.julielab.geneexpbase.candidateretrieval;
import com.sun.istack.NotNull;
import de.julielab.geneexpbase.genemodel.GeneName;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.lucene.search.Query;
import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
import java.util.Objects;
public class CandidateCacheKey implements Serializable, Comparable {
public static final int DEFAULT_MAX_CANDIDATES = 20;
private transient GeneName geneName;
private transient Collection contextNames;
private transient String taxId;
private transient Collection geneIdsFilter;
private transient QueryGenerator queryGenerator;
private transient int maxHits = DEFAULT_MAX_CANDIDATES;
private transient boolean loadSynHitFields;
private transient Map fieldWeights;
private transient String idPrefixFilter;
private String hashString;
private String termFilterField;
private String termFilterTerm;
/**
* Gets gene candidates based only on the name making no restrictions on
* species.
*
* @param geneName
*/
public CandidateCacheKey(GeneName geneName) {
this(geneName, null);
}
/**
* Gets gene candidates accordingi to geneName but restricted
* to species with taxonomy ID taxId.
*
* @param geneName
* @param taxId
*/
public CandidateCacheKey(GeneName geneName, String taxId) {
this.setGeneName(geneName);
this.setTaxId(taxId);
}
public Collection getContextNames() {
return contextNames;
}
public void setContextNames(Collection contextNames) {
this.contextNames = contextNames;
}
public String getTermFilterField() {
return termFilterField;
}
public String getTermFilterTerm() {
return termFilterTerm;
}
public String getHashString() {
if (hashString == null) {
String data = (getGeneName() != null ? getGeneName().toString() : null) + getTaxId() + getGeneIdsFilter() + (getQueryGenerator() != null ? getQueryGenerator().getName() : null) + getMaxHits() + isLoadSynHitFields() + getFieldWeights() + getIdPrefixFilter() + (contextNames != null ? contextNames.toString() : null) + termFilterField+termFilterTerm;
hashString = DigestUtils.md5Hex(data);
}
return hashString;
}
@Override
public int compareTo(@NotNull CandidateCacheKey o) {
return getHashString().compareTo(o.getHashString());
}
@Override
public String toString() {
return "CandidateCacheKey{" +
"geneName=" + getGeneName() +
", taxId='" + getTaxId() + '\'' +
", geneIdsFilter=" + getGeneIdsFilter() +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CandidateCacheKey that = (CandidateCacheKey) o;
return getHashString().equals(that.getHashString());
}
@Override
public int hashCode() {
return Objects.hash(getHashString());
// return Objects.hash(geneName, taxId, geneIdsFilter, queryGenerator, maxHits, loadSynHitFields, fieldWeights);
}
public Query generateQuery() {
if (getQueryGenerator() == null)
throw new NullPointerException("The queryGenerator is null.");
return getQueryGenerator().generateQuery(this);
}
public GeneName getGeneName() {
return geneName;
}
public void setGeneName(GeneName geneName) {
this.hashString = null;
this.geneName = geneName;
}
public String getTaxId() {
return taxId;
}
public void setTaxId(String taxId) {
this.hashString = null;
this.taxId = taxId;
}
public Collection getGeneIdsFilter() {
return geneIdsFilter;
}
public void setGeneIdsFilter(Collection geneIdsFilter) {
this.hashString = null;
this.geneIdsFilter = geneIdsFilter;
}
public QueryGenerator getQueryGenerator() {
return queryGenerator;
}
public void setQueryGenerator(QueryGenerator queryGenerator) {
this.hashString = null;
this.queryGenerator = queryGenerator;
}
public int getMaxHits() {
return maxHits;
}
public void setMaxHits(int maxHits) {
this.hashString = null;
this.maxHits = maxHits;
}
public boolean isLoadSynHitFields() {
return loadSynHitFields;
}
public void setLoadSynHitFields(boolean loadSynHitFields) {
this.hashString = null;
this.loadSynHitFields = loadSynHitFields;
}
public Map getFieldWeights() {
return fieldWeights;
}
public void setFieldWeights(Map fieldWeights) {
this.hashString = null;
this.fieldWeights = fieldWeights;
}
public String getIdPrefixFilter() {
return idPrefixFilter;
}
public void setIdPrefixFilter(String idPrefixFilter) {
this.hashString = null;
this.idPrefixFilter = idPrefixFilter;
}
public void setTermFilter(String field, String term) {
this.hashString = null;
this.termFilterField = field;
this.termFilterTerm = term;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy