/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.test.engine; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.OneToMany; import org.hibernate.search.annotations.CacheFromIndex; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.FieldBridge; import org.hibernate.search.annotations.Fields; import org.hibernate.search.annotations.Indexed; import org.hibernate.search.annotations.IndexedEmbedded; import org.hibernate.search.annotations.NumericField; import org.hibernate.search.annotations.NumericFields; import org.hibernate.search.annotations.Store; import static org.hibernate.search.annotations.FieldCacheType.CLASS; import static org.hibernate.search.annotations.FieldCacheType.ID; /** * @author Sanne Grinovero (C) 2011 Red Hat Inc. * @author Gustavo Fernandes */ @Entity @Indexed(index = "numeric_field_test") @CacheFromIndex({ CLASS, ID }) public class Location { @Id @DocumentId @Field(name = "overriddenFieldName") @NumericField(forField = "overriddenFieldName") private int id; public int getId() { return id; } @IndexedEmbedded private Country country; @Field(name = "myCounter") private Long counter; @Field(store = Store.YES) private double latitude; @Field(store = Store.YES) private Double longitude; @Field private Integer ranking; @Field @NumericField @FieldBridge(impl = BigDecimalNumericFieldBridge.class) private BigDecimal visibleStars; @Field(store = Store.YES) @FieldBridge(impl = CoordinatesPairFieldBridge.class) private final String coordinatePair = "1;2"; @Field private String description; @OneToMany(mappedBy = "location", cascade = { CascadeType.ALL }) @IndexedEmbedded private final Collection<PinPoint> pinPoints = new ArrayList<PinPoint>(); @Fields({ @Field(name = "strMultiple"), @Field }) @NumericFields({ @NumericField(forField = "strMultiple") }) private Double multiple; @Field(store = Store.YES) @NumericField private short importance; @Field(store = Store.YES) @NumericField private Short fallbackImportance; @Field(store = Store.YES) @NumericField private byte popularity; @Field(store = Store.YES) @NumericField private Byte fallbackPopularity; public Location() { } public Location(int id, Long counter, double latitude, Double longitude, Integer ranking, String description, Double multiple, Country country, BigDecimal visibleStars, short importance, byte popularity) { this.id = id; this.counter = counter; this.longitude = longitude; this.latitude = latitude; this.ranking = ranking; this.description = description; this.multiple = multiple; this.country = country; this.visibleStars = visibleStars; this.importance = importance; this.fallbackImportance = importance; this.popularity = popularity; this.fallbackPopularity = popularity; } public void addPinPoints(PinPoint... pinPoints) { for ( int i = 0; i < pinPoints.length; i++ ) { pinPoints[i].setLocation( this ); this.pinPoints.add( pinPoints[i] ); } } public String getDescription() { return description; } }