package org.infinispan.query.test;
import java.io.Serializable;
import java.util.Date;
import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.DateBridge;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.FilterCacheModeType;
import org.hibernate.search.annotations.FullTextFilterDef;
import org.hibernate.search.annotations.FullTextFilterDefs;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.Resolution;
import org.hibernate.search.annotations.SortableField;
import org.hibernate.search.annotations.Store;
import org.infinispan.marshall.core.ExternalPojo;
/**
* @author Navin Surtani
*/
@Indexed(index = "person")
@FullTextFilterDefs({
@FullTextFilterDef(name = "personFilter", impl = PersonBlurbFilterFactory.class, cache = FilterCacheModeType.INSTANCE_AND_DOCIDSETRESULTS),
@FullTextFilterDef(name = "personAgeFilter", impl = PersonAgeFilterFactory.class, cache = FilterCacheModeType.INSTANCE_AND_DOCIDSETRESULTS)
})
public class Person implements Serializable, ExternalPojo {
@Field(store = Store.YES)
private String name;
@Field(store = Store.YES)
private String blurb;
@Field(store = Store.YES, analyze = Analyze.NO)
@SortableField
private int age;
@Field(store = Store.YES, analyze = Analyze.NO)
@DateBridge(resolution = Resolution.DAY)
private Date dateOfGraduation;
private String nonSearchableField;
private static final long serialVersionUID = 8251606115293644545L;
public Person() {
}
public Person(String name, String blurb, int age) {
this.name = name;
this.blurb = blurb;
this.age = age;
}
public Person(String name, String blurb, int age, Date dateOfGraduation) {
this.name = name;
this.blurb = blurb;
this.age = age;
this.dateOfGraduation = dateOfGraduation;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBlurb() {
return blurb;
}
public void setBlurb(String blurb) {
this.blurb = blurb;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getNonSearchableField() {
return nonSearchableField;
}
public void setNonSearchableField(String nonSearchableField) {
this.nonSearchableField = nonSearchableField;
}
public Date getDateOfGraduation() {
return dateOfGraduation;
}
public void setDateOfGraduation(Date dateOfGraduation) {
this.dateOfGraduation = dateOfGraduation;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
if (age != person.age) return false;
if (blurb != null ? !blurb.equals(person.blurb) : person.blurb != null) return false;
if (name != null ? !name.equals(person.name) : person.name != null) return false;
if (dateOfGraduation != null ? !dateOfGraduation.equals(person.dateOfGraduation) : person.dateOfGraduation != null) return false;
return true;
}
@Override
public int hashCode() {
int result;
result = (name != null ? name.hashCode() : 0);
result = 31 * result + (blurb != null ? blurb.hashCode() : 0);
result = 31 * result + (dateOfGraduation != null ? dateOfGraduation.hashCode() : 0);
result = 31 * result + age;
return result;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", blurb='" + blurb + '\'' +
", age=" + age +
", dateOfGraduation=" + dateOfGraduation +
'}';
}
}