package org.lightadmin.demo.model; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import org.hibernate.annotations.Type; import org.hibernate.validator.constraints.NotEmpty; import org.joda.time.DateTime; import org.joda.time.LocalDate; import org.lightadmin.api.config.annotation.FileReference; import org.springframework.util.Assert; @Entity public class Customer extends AbstractEntity { @Column(length = 64) @NotEmpty private String firstname = "John Doe"; @Column(length = 64) @NotEmpty private String lastname; @Embedded @Column(unique = true) private EmailAddress emailAddress; @Column(name = "REG_DATE") @Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDate") private LocalDate registrationDate; @Column(name = "REG_DATE_TIME") @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime") private DateTime registrationDateTime; @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumn(name = "CUSTOMER_ID") private Set<Address> addresses; @ManyToMany @JoinTable(name = "customer_discount", joinColumns = @JoinColumn(name = "customer_id", referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "discount_program_id", referencedColumnName = "ID") ) private Set<DiscountProgram> discountPrograms; @Column(name = "AVATAR_FILE_URL") @FileReference(baseDirectory = "/Users/max/Desktop/lightadmin-demo") @FileReference.Constraints(value = "png", limit = 2) private String avatar; public Customer( String firstname, String lastname ) { Assert.hasText( firstname ); Assert.hasText( lastname ); this.firstname = firstname; this.lastname = lastname; } public Customer() { } public void add( Address address ) { Assert.notNull( address ); this.addresses.add( address ); } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } public LocalDate getRegistrationDate() { return registrationDate; } public void setRegistrationDate(LocalDate registrationDate) { this.registrationDate = registrationDate; } public String getFirstname() { return firstname; } public void setFirstname( final String firstname ) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname( final String lastname ) { this.lastname = lastname; } public EmailAddress getEmailAddress() { return emailAddress; } public void setEmailAddress( final EmailAddress emailAddress ) { this.emailAddress = emailAddress; } public Set<Address> getAddresses() { return addresses; } public void setAddresses( final Set<Address> addresses ) { this.addresses = addresses; } public Set<DiscountProgram> getDiscountPrograms() { return discountPrograms; } public void setDiscountPrograms( final Set<DiscountProgram> discountPrograms ) { this.discountPrograms = discountPrograms; } public DateTime getRegistrationDateTime() { return registrationDateTime; } public void setRegistrationDateTime(DateTime registrationDateTime) { this.registrationDateTime = registrationDateTime; } }