package org.infinispan.query.dsl.embedded.testdomain.hsearch; import java.io.Serializable; import java.time.Instant; import java.util.List; import java.util.Set; import org.hibernate.search.annotations.Analyze; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.FieldBridge; import org.hibernate.search.annotations.Index; import org.hibernate.search.annotations.Indexed; import org.hibernate.search.annotations.IndexedEmbedded; import org.hibernate.search.annotations.NumericField; import org.hibernate.search.annotations.SortableField; import org.hibernate.search.annotations.Store; import org.hibernate.search.bridge.builtin.impl.BuiltinIterableBridge; import org.infinispan.marshall.core.ExternalPojo; import org.infinispan.query.dsl.embedded.testdomain.Address; import org.infinispan.query.dsl.embedded.testdomain.User; /** * @author anistor@redhat.com * @since 7.0 */ @Indexed public class UserHS extends UserBase { @Field(store = Store.YES, analyze = Analyze.NO) @SortableField private int id; @Field(store = Store.YES, analyze = Analyze.NO) @FieldBridge(impl = BuiltinIterableBridge.class) private Set<Integer> accountIds; @Field(store = Store.YES, analyze = Analyze.NO, indexNullAs = Field.DEFAULT_NULL_TOKEN) @SortableField private String surname; @Field(store = Store.YES, analyze = Analyze.NO, indexNullAs = "-1") @NumericField @SortableField private Integer age; // yes, not the birth date :) @Field(store = Store.YES, analyze = Analyze.NO) private Gender gender; @IndexedEmbedded(targetElement = AddressHS.class, indexNullAs = Field.DEFAULT_NULL_TOKEN) private List<Address> addresses; @Field(analyze = Analyze.NO, store = Store.YES, index = Index.YES) private Instant creationDate = Instant.parse("2011-12-03T10:15:30Z"); //@Field(analyze = Analyze.NO, store = Store.YES, index = Index.NO) private Instant passwordExpirationDate = Instant.parse("2011-12-03T10:15:30Z"); /** * This is not indexed! */ private String notes; public int getId() { return id; } public void setId(int id) { this.id = id; } public Set<Integer> getAccountIds() { return accountIds; } public void setAccountIds(Set<Integer> accountIds) { this.accountIds = accountIds; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Gender getGender() { return gender; } public void setGender(Gender gender) { this.gender = gender; } public List<Address> getAddresses() { return addresses; } public void setAddresses(List<Address> addresses) { this.addresses = addresses; } @Override public String getNotes() { return notes; } @Override public void setNotes(String notes) { this.notes = notes; } @Override public Instant getCreationDate() { return creationDate; } @Override public void setCreationDate(Instant creationDate) { this.creationDate = creationDate; } @Override public Instant getPasswordExpirationDate() { return passwordExpirationDate; } @Override public void setPasswordExpirationDate(Instant passwordExpirationDate) { this.passwordExpirationDate = passwordExpirationDate; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; UserHS other = (UserHS) o; if (age != null ? !age.equals(other.age) : other.age != null) return false; if (id != other.id) return false; if (accountIds != null ? !accountIds.equals(other.accountIds) : other.accountIds != null) return false; if (addresses != null ? !addresses.equals(other.addresses) : other.addresses != null) return false; if (gender != other.gender) return false; if (name != null ? !name.equals(other.name) : other.name != null) return false; if (surname != null ? !surname.equals(other.surname) : other.surname != null) return false; if (notes != null ? !notes.equals(other.notes) : other.notes != null) return false; if (creationDate != null ? !creationDate.equals(other.creationDate) : other.creationDate != null) return false; if (passwordExpirationDate != null ? !passwordExpirationDate.equals(other.passwordExpirationDate) : other.passwordExpirationDate != null) return false; return true; } @Override public int hashCode() { int result = id; result = 31 * result + (accountIds != null ? accountIds.hashCode() : 0); result = 31 * result + (name != null ? name.hashCode() : 0); result = 31 * result + (surname != null ? surname.hashCode() : 0); result = 31 * result + (age != null ? age : 0); result = 31 * result + (gender != null ? gender.hashCode() : 0); result = 31 * result + (addresses != null ? addresses.hashCode() : 0); result = 31 * result + (notes != null ? notes.hashCode() : 0); result = 31 * result + (creationDate != null ? creationDate.hashCode() : 0); result = 31 * result + (passwordExpirationDate != null ? passwordExpirationDate.hashCode() : 0); return result; } @Override public String toString() { return "UserHS{" + "id=" + id + ", name='" + name + '\'' + ", surname='" + surname + '\'' + ", accountIds=" + accountIds + ", addresses=" + addresses + ", age=" + age + ", gender=" + gender + ", notes=" + notes + ", creationDate=" + creationDate + ", passwordExpirationDate=" + passwordExpirationDate + '}'; } } /** * Parent class for UserHS to demonstrate inheritance of indexed attributes. */ abstract class UserBase implements User, Serializable, ExternalPojo { @Field(store = Store.YES, analyze = Analyze.NO) @SortableField protected String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }