package your.package.name.here.models; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; import java.sql.Timestamp; import java.util.Calendar; import com.deugo.jersey.common.Messages; /* * To use //@GeneratedValue(strategy=GenerationType.IDENTITY) * then private static final String CREATE_TABLE_SQL = "create table " + CLIENT_TABLE_NAME + "(CLIENT_ID_PRIMARY_KEY int primary key not null AUTO_INCREMENT," * and id field type must be long not String */ @Entity @Table(name="CLIENT") public class Client { @Id @GeneratedValue(generator = "uuid") @GenericGenerator(name="uuid", strategy="uuid2") @Column(name="CLIENT_ID_PRIMARY_KEY") private String clientIdPrimarKey; @Column(name="FIRST_NAME") private String firstName; @Column(name="LAST_NAME") private String lastName; @Column(name="EMAIL_ADDRESS") private String emailAddress; @Column(name="PASSWORD") private String password; @Column(name="CREATION_TIME") private Timestamp creationTimestamp; @Column(name="LAST_UPDATE_TIME") private Timestamp lastUpdateTimestamp; @Column(name="LAST_ACCESSED_TIME") private Timestamp lastAccessedTimestamp; @Column(name="LANGUAGE") private String language; @Column(name="PHONE_NUMBER") private String phoneNumber; // https://dzone.com/tutorials/java/hibernate/hibernate-example/hibernate-mapping-one-to-one-using-annotations-1.html // http://howtodoinjava.com/hibernate/hibernate-one-to-one-mapping-using-annotations/ // http://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#associations-one-to-one @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name="OPTION_SETTING_FK") private OptionSetting optionSetting; public static final String ENGLISH = "en"; public static final String FRENCH = "fr"; public boolean isFrench () { return getLanguage().equals(FRENCH); } public String toString() { return getPhoneNumber(); } public Client() { Calendar calendar = Calendar.getInstance(); setFirstName(Messages.UNKNOWN); setLastName(Messages.UNKNOWN); setEmailAddress(Messages.UNKNOWN); setPassword(Messages.UNKNOWN); setPhoneNumber(Messages.UNKNOWN); setCreationTimestamp(new Timestamp(calendar.getTimeInMillis())); setLastUpdateTimestamp(new Timestamp(calendar.getTimeInMillis())); setLastAccessedTimestamp(new Timestamp(calendar.getTimeInMillis())); setLanguage(ENGLISH); setOptionSetting(new OptionSetting()); } public Timestamp getCreationTimestamp() { return creationTimestamp; } public void setCreationTimestamp(Timestamp creationTimestamp) { this.creationTimestamp = creationTimestamp; } public Timestamp getLastUpdateTimestamp() { return lastUpdateTimestamp; } public void setLastUpdateTimestamp(Timestamp lastUpdateTimestamp) { this.lastUpdateTimestamp = lastUpdateTimestamp; } public Timestamp getLastAccessedTimestamp() { return lastAccessedTimestamp; } public void setLastAccessedTimestamp(Timestamp lastAccessedTimestamp) { this.lastAccessedTimestamp = lastAccessedTimestamp; } public boolean equals(Client client) { return getClientIdPrimarKey() == (client.getClientIdPrimarKey()); } public String getClientIdPrimarKey() { return clientIdPrimarKey; } public void setClientIdPrimarKey(String clientIdPrimarKey) { this.clientIdPrimarKey = clientIdPrimarKey; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getFirstName() { return firstName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getLastName() { return lastName; } public String getFullName() { return getFirstName() + Messages.SPACE + getLastName(); } public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } public String getEmailAddress() { return emailAddress; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getPhoneNumber() { return phoneNumber; } public void updateFromClient(Client client) { setClientIdPrimarKey(client.getClientIdPrimarKey()); setFirstName(client.getFirstName()); setLastName(client.getLastName()); setEmailAddress(client.getEmailAddress()); setPassword(client.getPassword()); setPhoneNumber(client.getPhoneNumber()); setCreationTimestamp(client.getCreationTimestamp()); setLastUpdateTimestamp(client.getLastUpdateTimestamp()); setLastAccessedTimestamp(client.getLastAccessedTimestamp()); setLanguage(client.getLanguage()); } public Client copy() { Client client = new Client(); client.updateFromClient(this); return client; } public void setLanguage(String language) { this.language = language; } public String getLanguage() { return language; } public OptionSetting getOptionSetting() { return optionSetting; } public void setOptionSetting(OptionSetting optionSetting) { this.optionSetting = optionSetting; } }