/**
* This file is part of Faktotum.
*
*
* Faktotum is free software: you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Faktotum 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 Faktotum.
*
* If not, see <http://www.gnu.org/licenses/>.
*/
package de.romankreisel.faktotum.datamodel;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
import org.eclipse.persistence.annotations.Index;
@Entity(name = "Bundesbruder")
public class BundesbruderEntity extends FaktotumEntity {
public enum Permission {
SYSTEM_ADMINISTRATION, MEMBERSHIP_ADMINISTRATION, STUDENT_MEMBERSHIP_ADMINISTRATION
}
@ElementCollection(targetClass = Permission.class)
@Enumerated(EnumType.STRING)
@CollectionTable(name = "permissions")
@Column(name = "permission")
private List<Permission> permissions = new ArrayList<>();
@Temporal(TemporalType.DATE)
@Past
private Date birthDate;
private int firstActiveSemester;
@Column(columnDefinition = "TEXT")
private String firstName;
private boolean founderMember = false;
@Column(columnDefinition = "TEXT")
@Index(columnNames = { "alias", "aliasAppendix" }, unique = true)
private String alias;
@NotNull
private Integer aliasAppendix = 1;
private int lastActiveSemester;
@Column(columnDefinition = "TEXT")
private String lastName;
@Column(columnDefinition = "TEXT")
private String birthName;
@ManyToOne(fetch = FetchType.LAZY)
private BundesbruderEntity leibBursche;
@Column(columnDefinition = "TEXT")
@Pattern(regexp = "(^$|[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)")
private String mailAddress;
private String parentPhoneNumber;
private String phoneNumber;
private String mobileNumber;
private String faxNumber;
@ManyToOne
private MemberStatusEntity memberStatus;
@Lob
@Basic(fetch = FetchType.LAZY)
private Byte[] pictureOriginal;
@Lob
@Basic(fetch = FetchType.LAZY)
private Byte[] picture;
@Lob
@Basic(fetch = FetchType.LAZY)
private Byte[] pictureThumbnail;
@Embedded
private PostalAddress postalAddress = new PostalAddress();
@Temporal(TemporalType.TIMESTAMP)
private Date lastLogin;
@OneToMany(fetch = FetchType.LAZY, orphanRemoval = true, cascade = CascadeType.REMOVE)
private Set<SessionEntity> sessions = new HashSet<>();
/*
* private String street; private String postalCode; private String city;
* private String Country;
*/
@AttributeOverrides({ @AttributeOverride(name = "street", column = @Column(name = "parentStreet")),
@AttributeOverride(name = "postalCode", column = @Column(name = "parentPostalCode")),
@AttributeOverride(name = "city", column = @Column(name = "parentCity")),
@AttributeOverride(name = "country", column = @Column(name = "parentCountry")) })
@Embedded
PostalAddress parentPostalAddress = new PostalAddress();
@Index(unique = true)
private String userName;
private String password;
@Column(columnDefinition = "TEXT")
private String internationalBankAccountNumber;
public String getAlias() {
return this.alias;
}
public Integer getAliasAppendix() {
return this.aliasAppendix;
}
public Date getBirthDate() {
return this.birthDate;
}
/**
* @return the birthName
*/
public String getBirthName() {
return this.birthName;
}
/**
* @return the faxNumber
*/
public String getFaxNumber() {
return this.faxNumber;
}
public int getFirstActiveSemester() {
return this.firstActiveSemester;
}
public String getFirstName() {
return this.firstName;
}
/**
* @return the internationalBankAccountNumber
*/
public String getInternationalBankAccountNumber() {
return this.internationalBankAccountNumber;
}
public int getLastActiveSemester() {
return this.lastActiveSemester;
}
/**
* @return the lastLogin
*/
public Date getLastLogin() {
return this.lastLogin;
}
public String getLastName() {
return this.lastName;
}
public BundesbruderEntity getLeibBursche() {
return this.leibBursche;
}
public String getMailAddress() {
return this.mailAddress;
}
public MemberStatusEntity getMemberStatus() {
return this.memberStatus;
}
/**
* @return the mobileNumber
*/
public String getMobileNumber() {
return this.mobileNumber;
}
/**
* @return the parentPhoneNumber
*/
public String getParentPhoneNumber() {
return this.parentPhoneNumber;
}
/**
* @return the parentPostalAddress
*/
public PostalAddress getParentPostalAddress() {
if (this.parentPostalAddress == null) {
this.parentPostalAddress = new PostalAddress();
}
return this.parentPostalAddress;
}
/**
* @return the password
*/
public String getPassword() {
return this.password;
}
/**
* @return the permissions
*/
public List<Permission> getPermissions() {
return this.permissions;
}
/**
* @return the phoneNumber
*/
public String getPhoneNumber() {
return this.phoneNumber;
}
public Byte[] getPicture() {
return this.picture;
}
/**
* @return the pictureOriginal
*/
public Byte[] getPictureOriginal() {
return this.pictureOriginal;
}
/**
* @return the pictureThumbnail
*/
public Byte[] getPictureThumbnail() {
return this.pictureThumbnail;
}
/**
* @return the postalAddress
*/
public PostalAddress getPostalAddress() {
if (this.postalAddress == null) {
this.postalAddress = new PostalAddress();
}
return this.postalAddress;
}
/**
* @return the sessions
*/
public Set<SessionEntity> getSessions() {
return this.sessions;
}
/**
* @return the userName
*/
public String getUserName() {
return this.userName;
}
public boolean isFounderMember() {
return this.founderMember;
}
public void setAlias(String alias) {
this.alias = alias;
}
public void setAliasAppendix(Integer aliasAppendix) {
this.aliasAppendix = aliasAppendix;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
/**
* @param birthName
* the birthName to set
*/
public void setBirthName(String birthName) {
this.birthName = birthName;
}
/**
* @param faxNumber
* the faxNumber to set
*/
public void setFaxNumber(String faxNumber) {
this.faxNumber = faxNumber;
}
public void setFirstActiveSemester(int firstActiveSemester) {
this.firstActiveSemester = firstActiveSemester;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setFounderMember(boolean founderMember) {
this.founderMember = founderMember;
}
/**
* @param internationalBankAccountNumber
* the internationalBankAccountNumber to set
*/
public void setInternationalBankAccountNumber(String internationalBankAccountNumber) {
this.internationalBankAccountNumber = internationalBankAccountNumber;
}
public void setLastActiveSemester(int lastActiveSemester) {
this.lastActiveSemester = lastActiveSemester;
}
/**
* @param lastLogin
* the lastLogin to set
*/
public void setLastLogin(Date lastLogin) {
this.lastLogin = lastLogin;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setLeibBursche(BundesbruderEntity leibBursche) {
this.leibBursche = leibBursche;
}
public void setMailAddress(String mailAddress) {
this.mailAddress = mailAddress;
}
public void setMemberStatus(MemberStatusEntity memberStatus) {
this.memberStatus = memberStatus;
}
/**
* @param mobileNumber
* the mobileNumber to set
*/
public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}
/**
* @param parentPhoneNumber
* the parentPhoneNumber to set
*/
public void setParentPhoneNumber(String parentPhoneNumber) {
this.parentPhoneNumber = parentPhoneNumber;
}
/**
* @param parentPostalAddress
* the parentPostalAddress to set
*/
public void setParentPostalAddress(PostalAddress parentPostalAddress) {
this.parentPostalAddress = parentPostalAddress;
}
/**
* @param password
* the password to set
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @param permissions
* the permissions to set
*/
public void setPermissions(List<Permission> permissions) {
this.permissions = permissions;
}
/**
* @param phoneNumber
* the phoneNumber to set
*/
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public void setPicture(Byte[] picture) {
this.picture = picture;
}
/**
* @param pictureOriginal
* the pictureOriginal to set
*/
public void setPictureOriginal(Byte[] pictureOriginal) {
this.pictureOriginal = pictureOriginal;
}
/**
* @param pictureThumbnail
* the pictureThumbnail to set
*/
public void setPictureThumbnail(Byte[] pictureThumbnail) {
this.pictureThumbnail = pictureThumbnail;
}
/**
* @param postalAddress
* the postalAddress to set
*/
public void setPostalAddress(PostalAddress postalAddress) {
this.postalAddress = postalAddress;
}
/**
* @param sessions
* the sessions to set
*/
public void setSessions(Set<SessionEntity> sessions) {
this.sessions = sessions;
}
/**
* @param userName
* the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
}