/** * */ package net.agef.jobexchange.domain; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Transient; //import org.acegisecurity.GrantedAuthority; //import org.acegisecurity.userdetails.UserDetails; import org.apache.tapestry5.beaneditor.DataType; import org.apache.tapestry5.beaneditor.Validate; import org.hibernate.annotations.NaturalId; import org.springframework.security.GrantedAuthority; import org.springframework.security.userdetails.UserDetails; /** * @author Administrator * */ @Entity public class LoginUser extends AbstractEntity implements UserDetails { static final long serialVersionUID = 1; private String password; private String username; private AddressEnum addresses; private TitleEnum title; private String familyName; private String givenName; private String fathersName; private String emailBusiness; private String internet; private Address loginUserAddress; private boolean accountNonExpired = true; private boolean accountNonLocked = true; private boolean credentialsNonExpired = true; private boolean enabled = true; private Collection<LoginUserRole> grantedAuthorities = new HashSet<LoginUserRole>(); private List<JobImpl> providedJobOffers = new ArrayList<JobImpl>(); private List<User> providedOrganisations = new ArrayList<User>(); @Transient public GrantedAuthority[] getAuthorities() { final Collection<LoginUserRole> grantedAuthorities = getGrantedAuthorities(); return (GrantedAuthority[]) grantedAuthorities.toArray( new GrantedAuthority[grantedAuthorities.size()]); } @Validate("required") @NaturalId public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Validate("required") public String getPassword() { return password; } @DataType(value="password") public void setPassword(String password) { this.password = password; } /** * @return the addresses */ @Validate("required") //@Enumerated(EnumType.STRING) public AddressEnum getAddresses() { return addresses; } /** * @param addresses the addresses to set */ public void setAddresses(AddressEnum addresses) { this.addresses = addresses; } /** * @return the title */ public TitleEnum getTitle() { return title; } /** * @param title the title to set */ public void setTitle(TitleEnum title) { this.title = title; } /** * @return the familyName */ @Validate("required") public String getFamilyName() { return familyName; } /** * @param familyName the familyName to set */ public void setFamilyName(String familyName) { this.familyName = familyName; } /** * @return the givenName */ @Validate("required") public String getGivenName() { return givenName; } /** * @param givenName the givenName to set */ public void setGivenName(String givenName) { this.givenName = givenName; } /** * @return the fathersName */ public String getFathersName() { return fathersName; } /** * @param fathersName the fathersName to set */ public void setFathersName(String fathersName) { this.fathersName = fathersName; } /** * @return the emailBusiness */ @Validate("required,email") public String getEmailBusiness() { return emailBusiness; } /** * @param emailBusiness the emailBusiness to set */ public void setEmailBusiness(String emailBusiness) { this.emailBusiness = emailBusiness; } /** * @return the internet */ public String getInternet() { return internet; } /** * @param internet the internet to set */ public void setInternet(String internet) { this.internet = internet; } /** * @return the loginUserAddress */ @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name="addressLoginUser_fk") public Address getLoginUserAddress() { return loginUserAddress; } /** * @param loginUserAddress the loginUserAddress to set */ public void setLoginUserAddress(Address loginUserAddress) { this.loginUserAddress = loginUserAddress; } public boolean isAccountNonExpired() { return accountNonExpired; } public boolean isAccountNonLocked() { return accountNonLocked; } public boolean isCredentialsNonExpired() { return credentialsNonExpired; } public boolean isEnabled() { return enabled; } public String toString() { return username; } // public void addRole(String role) { // final LoginUserRole authority = new LoginUserRole(); // authority.setAuthority(role); // getGrantedAuthorities().add(authority); // } public void addRole(LoginUserRole role) { getGrantedAuthorities().add(role); } public void setAccountNonExpired(boolean accountNonExpired) { this.accountNonExpired = accountNonExpired; } public void setAccountNonLocked(boolean accountNonLocked) { this.accountNonLocked = accountNonLocked; } public void setCredentialsNonExpired(boolean credentialsNonExpired) { this.credentialsNonExpired = credentialsNonExpired; } public void setEnabled(boolean enabled) { this.enabled = enabled; } @ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE}) public Collection<LoginUserRole> getGrantedAuthorities() { return grantedAuthorities; } public void setGrantedAuthorities(Collection<LoginUserRole> grantedAuthorities) { this.grantedAuthorities = grantedAuthorities; } /** * @return the providedJobOffers */ @OneToMany(mappedBy="getjobsLoginUser", cascade={CascadeType.REMOVE}) public List<JobImpl> getProvidedJobOffers() { return providedJobOffers; } /** * @param providedJobOffers the providedJobOffers to set */ public void setProvidedJobOffers(List<JobImpl> providedJobOffers) { this.providedJobOffers = providedJobOffers; } /** * @return the providesOrganisations */ @OneToMany(mappedBy="relatedLoginUser", cascade={CascadeType.REMOVE}) public List<User> getProvidedOrganisations() { return providedOrganisations; } /** * @param providesOrganisations the providesOrganisations to set */ public void setProvidedOrganisations(List<User> providedOrganisations) { this.providedOrganisations = providedOrganisations; } }