/**
* Copyright (c) 2015 the original author or authors.
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
*
*/
package org.springframework.data.aerospike.repository;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import org.springframework.data.aerospike.mapping.Field;
/**
*
*
* @author Peter Milne
* @author Jean Mercier
*
*/
public class Person extends Contact implements Comparable<Person> {
public enum Sex {
MALE, FEMALE;
}
private String firstname;
private HashMap<?,?> myHashMap;
private String lastname;
private String email;
private Integer age;
private Sex sex;
private LocalDateTime createdAt;
List<String> skills;
//@DBRef(lazy = true)
private Address address;
@Field(value = "ShipAddresses")
private Set<Address> shippingAddresses;
User creator;
//User coworker;
//List<User> fans;
//ArrayList<User> realFans;
Credentials credentials;
public Person() {
this(null, null, null);
}
/**
* @param id
* @param firstname
* @param lastname
*/
public Person(String id, String firstname, String lastname) {
this(id, firstname, lastname, null);
}
/**
* @param id
* @param firstname
* @param lastname
* @param age
*/
public Person(String id, String firstname, String lastname, Integer age) {
this(id, firstname, lastname, age, Sex.MALE);
}
/**
* @param id
* @param firstname
* @param lastname
* @param age
* @param sex
*/
public Person(String id, String firstname, String lastname, Integer age, Sex sex) {
super();
this.id = id;
this.firstname = firstname;
this.lastname = lastname;
this.age = age;
this.sex = sex;
this.email = (firstname == null ? "none" : firstname.toLowerCase()) + "@dmband.com";
this.createdAt = LocalDateTime.now();
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((address == null) ? 0 : address.hashCode());
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((creator == null) ? 0 : creator.hashCode());
result = prime * result
+ ((credentials == null) ? 0 : credentials.hashCode());
result = prime * result + ((email == null) ? 0 : email.hashCode());
result = prime * result
+ ((firstname == null) ? 0 : firstname.hashCode());
result = prime * result
+ ((lastname == null) ? 0 : lastname.hashCode());
result = prime * result + ((sex == null) ? 0 : sex.hashCode());
result = prime * result + ((shippingAddresses == null) ? 0
: shippingAddresses.hashCode());
result = prime * result + ((skills == null) ? 0 : skills.hashCode());
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (address == null) {
if (other.address != null)
return false;
} else if (!address.equals(other.address))
return false;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (creator == null) {
if (other.creator != null)
return false;
} else if (!creator.equals(other.creator))
return false;
if (credentials == null) {
if (other.credentials != null)
return false;
} else if (!credentials.equals(other.credentials))
return false;
if (email == null) {
if (other.email != null)
return false;
} else if (!email.equals(other.email))
return false;
if (firstname == null) {
if (other.firstname != null)
return false;
} else if (!firstname.equals(other.firstname))
return false;
if (lastname == null) {
if (other.lastname != null)
return false;
} else if (!lastname.equals(other.lastname))
return false;
if (sex != other.sex)
return false;
if (shippingAddresses == null) {
if (other.shippingAddresses != null)
return false;
} else if (!shippingAddresses.equals(other.shippingAddresses))
return false;
if (skills == null) {
if (other.skills != null)
return false;
} else if (!skills.equals(other.skills))
return false;
return true;
}
/* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Person another) {
return this.lastname.compareTo(another.lastname);
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Sex getSex() {
return sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
public LocalDateTime getCreatedAt() {
return createdAt;
}
public void setCreatedAt(LocalDateTime createdAt) {
this.createdAt = createdAt;
}
public List<String> getSkills() {
return skills;
}
public void setSkills(List<String> skills) {
this.skills = skills;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Set<Address> getShippingAddresses() {
return shippingAddresses;
}
public void setShippingAddresses(Set<Address> shippingAddresses) {
this.shippingAddresses = shippingAddresses;
}
public User getCreator() {
return creator;
}
public void setCreator(User creator) {
this.creator = creator;
}
// public User getCoworker() {
// return coworker;
// }
//
//
// public void setCoworker(User coworker) {
// this.coworker = coworker;
// }
// public List<User> getFans() {
// return fans;
// }
//
//
// public void setFans(List<User> fans) {
// this.fans = fans;
// }
//
//
// public ArrayList<User> getRealFans() {
// return realFans;
// }
//
//
// public void setRealFans(ArrayList<User> realFans) {
// this.realFans = realFans;
// }
//
//
// public Credentials getCredentials() {
// return credentials;
// }
//
//
// public void setCredentials(Credentials credentials) {
// this.credentials = credentials;
// }
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Person [firstname=" + firstname + ", lastname=" + lastname
+ ", email=" + email + ", age=" + age + ", sex=" + sex
+ ", createdAt=" + createdAt + ", skills=" + skills
+ ", address=" + address + ", shippingAddresses="
+ shippingAddresses + ", creator=" + creator + "]";
}
/**
* @return the myHashMap
*/
public HashMap<?,?> getMyHashMap() {
return myHashMap;
}
/**
* @param myHashMap the myHashMap to set
*/
public void setMyHashMap(HashMap<?,?> myHashMap) {
this.myHashMap = myHashMap;
}
}