package jetbrains.mps.ide.findusages.model;
/*Generated by MPS */
import java.util.List;
import jetbrains.mps.util.Pair;
import java.util.ArrayList;
import java.util.Arrays;
public class SearchResult<T> {
protected T myObject;
protected Object myPathObject;
protected List<Pair<CategoryKind, String>> myCategories = new ArrayList<Pair<CategoryKind, String>>();
public SearchResult() {
}
public SearchResult(SearchResult<T> src) {
this(src.getObject(), src.getPathObject(), src.getCategories());
}
public SearchResult(T object, String category) {
this(object, object, new Pair<CategoryKind, String>(CategoryKind.DEFAULT_CATEGORY_KIND, category));
}
public SearchResult(T object, Object pathObject, String category) {
this(object, pathObject, new Pair<CategoryKind, String>(CategoryKind.DEFAULT_CATEGORY_KIND, category));
}
public SearchResult(T object, Object pathObject, List<Pair<CategoryKind, String>> categories) {
myObject = object;
myPathObject = pathObject;
myCategories = categories;
}
public SearchResult(T object, Object pathObject, Pair<CategoryKind, String>... categories) {
this(object, pathObject, Arrays.asList(categories));
}
public T getObject() {
return myObject;
}
public Object getPathObject() {
return myPathObject;
}
public String getCategory() {
if (myCategories.size() == 0) {
return null;
} else {
return myCategories.get(0).o2;
}
}
public String getCategoryForKind(CategoryKind categoryKind) {
for (Pair<CategoryKind, String> kindNamePair : myCategories) {
if (kindNamePair.o1.equals(categoryKind)) {
return kindNamePair.o2;
}
}
return null;
}
public List<Pair<CategoryKind, String>> getCategories() {
return myCategories;
}
public int hashCode() {
return myCategories.hashCode() * 37 + myObject.hashCode() * 17;
}
public boolean equals(Object o) {
if (!((o instanceof SearchResult))) {
return false;
}
SearchResult searchResult = (SearchResult) o;
if (!(myObject.equals(searchResult.myObject))) {
return false;
}
if (!(myCategories.equals(searchResult.myCategories))) {
return false;
}
return true;
}
}