package sagan.search.support;
import java.util.ArrayList;
import java.util.List;
class SearchFacet {
private String path;
private String name;
private int count;
private List<SearchFacet> facets;
private List<SearchFacet> headerFacets = new ArrayList<>();
public SearchFacet(String path, String name, int count) {
this(path, name, count, new ArrayList<>());
}
public SearchFacet(String path, String name, int count, List<SearchFacet> facets) {
this.path = path;
this.name = name;
this.count = count;
this.facets = facets;
}
public String getPath() {
return path;
}
public String getName() {
return name;
}
public String getFullPath() {
if (path.equals("")) {
return name;
}
return path + "/" + name;
}
public int getCount() {
return count;
}
public List<SearchFacet> getFacets() {
return facets;
}
public boolean hasFacets() {
return facets.size() > 0;
}
public String getLinkText() {
return String.format("%s (%d)", name, count);
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
SearchFacet that = (SearchFacet) o;
if (count != that.count)
return false;
if (!facets.equals(that.facets))
return false;
if (!name.equals(that.name))
return false;
if (!path.equals(that.path))
return false;
return true;
}
@Override
public int hashCode() {
int result = path.hashCode();
result = 31 * result + name.hashCode();
result = 31 * result + count;
result = 31 * result + facets.hashCode();
return result;
}
@Override
public String toString() {
return "SearchFacet{" + "path='" + path + '\'' + ", name='" + name + '\'' + ", count=" + count + ", facets="
+ facets + '}';
}
public List<SearchFacet> getHeaderFacets() {
return headerFacets;
}
public void addHeaderFacet(SearchFacet headerFacet) {
headerFacets.add(headerFacet);
}
public boolean hasHeaderFacets() {
return !headerFacets.isEmpty();
}
}