/** * 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; } }