All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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