/** * The contents of this file are subject to the OpenMRS Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://license.openmrs.org * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs; import org.openmrs.util.OpenmrsUtil; /** * An Object of this class represents a search result returned when searching for concepts, it holds * extra metadata about the matched concept(s). * * @since 1.8 */ public class ConceptSearchResult implements java.io.Serializable { private static final long serialVersionUID = 6394792520635644989L; // the matching concept that was found private Concept concept; // the actual conceptName that was matching a given word in the search private ConceptName conceptName; // the word in the search string that was matched against the conceptNameHit private String word; private Double transientWeight = 0.0; /** default constructor */ public ConceptSearchResult() { } /** * Optional constructor for turning a conceptWord into a conceptSearchResult, the constructor is * hidden from API users so as to hide the idea of conceptWord, it is meant to be used * underneath the API for convenience purposes. * * @param conceptWord the conceptWord from which to construct a search result */ protected ConceptSearchResult(ConceptWord conceptWord) { if (conceptWord != null) { this.concept = conceptWord.getConcept(); this.conceptName = conceptWord.getConceptName(); this.word = conceptWord.getWord(); // if a null value is passed in, ignore it and maintain the default // of 0.0 if (conceptWord.getWeight() != null) this.transientWeight = conceptWord.getWeight(); } } /** * Convenience constructor * * @param word the single word that will be matched to search terms * @param concept the concept that is being matched to * @param conceptName the specific name that will be matched */ public ConceptSearchResult(String word, Concept concept, ConceptName conceptName) { this.concept = concept; this.conceptName = conceptName; this.word = word; } /** * Convenience constructor that takes in a weight too * * @param word the single word that will be matched to search terms * @param concept the concept that is being matched to * @param conceptName the specific name that will be matched * @param transientWeight the weight for this conceptSearchResult */ public ConceptSearchResult(String word, Concept concept, ConceptName conceptName, Double transientWeight) { this.concept = concept; this.conceptName = conceptName; this.word = word; if (transientWeight != null) this.transientWeight = transientWeight; } /** * @return the concept */ public Concept getConcept() { return concept; } /** * @param concept the concept to set */ public void setConcept(Concept concept) { this.concept = concept; } /** * @return the conceptName */ public ConceptName getConceptName() { return conceptName; } /** * @param conceptName the conceptName to set */ public void setConceptName(ConceptName conceptName) { this.conceptName = conceptName; } /** * @return the word */ public String getWord() { return word; } /** * @param word the word to set */ public void setWord(String word) { this.word = word; } /** * Getter for transientWeight * * @return */ public Double getTransientWeight() { return transientWeight; } /** * Setter transientWeight * * @param transientWeight */ public void setTransientWeight(Double transientWeight) { this.transientWeight = transientWeight; } /** * @see java.lang.Object#equals(Object) */ @Override public boolean equals(Object obj) { if (obj instanceof ConceptSearchResult) { ConceptSearchResult result = (ConceptSearchResult) obj; return OpenmrsUtil.nullSafeEquals(this.getConcept(), result.getConcept()) && OpenmrsUtil.nullSafeEquals(this.getConceptName(), result.getConceptName()) && OpenmrsUtil.nullSafeEquals(this.getWord(), result.getWord()) && OpenmrsUtil.nullSafeEquals(this.getTransientWeight(), result.getTransientWeight()); } return false; } /** * @see java.lang.Object#hashCode() */ @Override public int hashCode() { if (this.getConcept() == null && this.getConceptName() == null && this.getWord() != null && this.getTransientWeight() == null) return super.hashCode(); int hash = 5; if (this.getConcept() != null && this.getConcept().getConceptId() != null) hash = 31 * getConcept().hashCode() + hash; if (this.getConceptName() != null && this.getConceptName().getConceptNameId() != null) hash = 31 * getConceptName().hashCode() + hash; if (this.getWord() != null) hash = 31 * getWord().hashCode() + hash; if (this.getTransientWeight() != null) hash = 31 * getTransientWeight().hashCode() + hash; return hash; } }