/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2010, Red Hat, Inc. and/or its affiliates or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat, Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.hibernate.search.test.embedded.doubleinsert;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Type;
import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.IndexedEmbedded;
import org.hibernate.search.annotations.Store;
@Entity
@Indexed
@Table(name = "T_ADDRESS")
public class Address implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "A_ADDRESS_ID")
@DocumentId
private long id;
@Column(name = "A_ADDRESS1")
@Field(store = Store.YES)
private String address1;
@Column(name = "A_ADDRESS2")
@Field(store = Store.YES)
private String address2;
@Column(name = "A_TOWN")
@Field(store = Store.YES)
private String town;
@Column(name = "A_COUNTY")
@Field(store = Store.YES)
private String county;
@Column(name = "A_COUNTRY")
@Field(store = Store.YES)
private String country;
@Column(name = "A_POSTCODE")
@Field(store = Store.YES)
private String postcode;
@Column(name = "A_ACTIVE")
@Type(type = "boolean")
private boolean active;
@Column(name = "A_CREATEDON")
@Type(type = "java.util.Date")
private Date createdOn;
@Column(name = "A_LASTUPDATEDON")
@Type(type = "java.util.Date")
private Date lastUpdatedOn;
@ManyToOne
@JoinColumn(name = "C_CONTACT_ID")
@IndexedEmbedded
private Contact contact;
public Address(String address1, String address2, String town,
String county, String country, String postcode, boolean active, Contact contact) {
super();
this.address1 = address1;
this.address2 = address2;
this.town = town;
this.county = county;
this.country = country;
this.postcode = postcode;
this.active = active;
this.contact = contact;
}
public Address() {
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getAddress1() {
return address1;
}
public void setAddress1(String address1) {
this.address1 = address1;
}
public String getAddress2() {
if ( null == this.address2 || "".equals( this.address2 ) ) {
return "N/A";
}
return address2;
}
public void setAddress2(String address2) {
this.address2 = address2;
}
public String getTown() {
return town;
}
public void setTown(String town) {
this.town = town;
}
public String getCounty() {
if ( null == this.county || "".equals( this.county ) ) {
return "N/A";
}
return county;
}
public void setCounty(String county) {
this.county = county;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getPostcode() {
return postcode;
}
public void setPostcode(String postcode) {
this.postcode = postcode;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public Date getCreatedOn() {
return createdOn;
}
public void setCreatedOn(Date createdOn) {
this.createdOn = createdOn;
}
public Date getLastUpdatedOn() {
return lastUpdatedOn;
}
public void setLastUpdatedOn(Date lastUpdatedOn) {
this.lastUpdatedOn = lastUpdatedOn;
}
public Contact getContact() {
return contact;
}
public void setContact(Contact contact) {
this.contact = contact;
}
public boolean equals(Object object) {
if ( !( object instanceof Address ) ) {
return false;
}
Address that = (Address) object;
if ( !equals( this.getAddress1(), that.getAddress1() ) ) {
return false;
}
if ( !equals( this.getAddress2(), that.getAddress2() ) ) {
return false;
}
if ( !equals( this.getCounty(), that.getCounty() ) ) {
return false;
}
if ( !equals( this.getTown(), that.getTown() ) ) {
return false;
}
if ( !equals( this.getPostcode(), that.getPostcode() ) ) {
return false;
}
return equals( this.getContact(), that.getContact() );
// EqualsBuilder equalsBuilder = new EqualsBuilder();
// return equalsBuilder.append(new Object[]{this.getAddress1(), this.getAddress2(), this.getCounty(), this.getTown(), this.getPostcode(), this.contact}, new Object[]{address.getAddress1(), address.getAddress2(), address.getCounty(), address.getTown(), address.getPostcode(), address.getContact()}).isEquals();
}
private boolean equals(Object o1, Object o2) {
if ( o1 == o2 ) {
return true;
}
if ( o1 == null || o2 == null ) {
return false;
}
return o1.equals( o2 );
}
private int hashCode(Object o) {
return o == null ? 0 : o.hashCode();
}
public int hashCode() {
int a = 13;
a = a * 23 + hashCode( this.getAddress1() );
a = a * 23 + hashCode( this.getAddress2() );
a = a * 23 + hashCode( this.getCounty() );
a = a * 23 + hashCode( this.getTown() );
a = a * 23 + hashCode( this.getPostcode() );
a = a * 23 + hashCode( this.getContact() );
return a;
// return new HashCodeBuilder().append(new Object[]{this.getAddress1(), this.getAddress2(), this.getCounty(), this.getTown(), this.getPostcode(), this.getContact()}).hashCode();
}
public String toString() {
StringBuilder buf = new StringBuilder();
displayAddress( buf, this );
return buf.toString();
}
private void displayAddress(StringBuilder buf, Address address) {
// buf.append(Constants.TAB + Constants.TAB + "Address 1: " + address.getAddress1() + Constants.NEW_LINE);
// buf.append(Constants.TAB + Constants.TAB +"Address 2: " + address.getAddress2() + Constants.NEW_LINE);
// buf.append(Constants.TAB + Constants.TAB +"Town: " + address.getTown() + Constants.NEW_LINE);
// buf.append(Constants.TAB + Constants.TAB +"County: " + address.getCounty() + Constants.NEW_LINE);
// buf.append(Constants.TAB + Constants.TAB +"Postcode: " + address.getPostcode() + Constants.NEW_LINE);
// buf.append(Constants.TAB + Constants.TAB +"Country: " + address.getCountry() + Constants.NEW_LINE);
// buf.append(Constants.TAB + Constants.TAB +"Is current: " + (address.isActive()? "Yes" : "No") + Constants.NEW_LINE);
// buf.append(Constants.NEW_LINE);
}
public boolean isValidPostcode() {
return false;
}
}