/* * OffenePflege * Copyright (C) 2011 Torsten Löhr * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License V2 as published by the Free Software Foundation * * This program 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 General * Public License for more details. * * You should have received a copy of the GNU General Public License along with this program; if not, write to * the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA * www.offene-pflege.de * ------------------------ * Auf deutsch (freie Übersetzung. Rechtlich gilt die englische Version) * Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, * wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, gemäß Version 2 der Lizenz. * * Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber * OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN * BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License. * * Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, * schreiben Sie an die Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA. */ package entity.system; import entity.files.*; import entity.reports.NReport; import entity.staff.Training2Users; import op.tools.SYSTools; import org.eclipse.persistence.annotations.OptimisticLocking; import org.eclipse.persistence.annotations.OptimisticLockingType; import javax.persistence.*; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; /** * @author tloehr */ @Entity @Table(name = "users") @OptimisticLocking(cascade = false, type = OptimisticLockingType.VERSION_COLUMN) public class Users implements Serializable, Comparable<Users> { private static final long serialVersionUID = 1L; @Id @Column(name = "UKennung") private String uid; @Version @Column(name = "version") private Long version; @Basic(optional = false) @Column(name = "Vorname") private String vorname; @Basic(optional = false) @Column(name = "Nachname") private String nachname; @Column(name = "Status") private Short status; @Basic(optional = false) @Column(name = "MD5PW") private String md5pw; @Column(name = "EMail") private String eMail; @Basic(optional = false) @Column(name = "mailconfirmed") private int mailConfirmed; @ManyToMany @JoinTable(name = "member", joinColumns = @JoinColumn(name = "UKennung"), inverseJoinColumns = @JoinColumn(name = "GKennung")) private Collection<Groups> groups; @OneToMany(cascade = CascadeType.ALL, mappedBy = "user") private Collection<SYSFiles> sysfilesCollection; @OneToMany(cascade = CascadeType.ALL, mappedBy = "user") private Collection<SYSINF2FILE> SYSINF2FILECollection; @OneToMany(cascade = CascadeType.ALL, mappedBy = "user") private Collection<SYSNR2FILE> SYSNR2FILECollection; @OneToMany(cascade = CascadeType.ALL, mappedBy = "user") private Collection<SYSPRE2FILE> SYSPRE2FILECollection; @OneToMany(cascade = CascadeType.ALL, mappedBy = "newBy") private Collection<NReport> NReport; @OneToMany(cascade = CascadeType.ALL, mappedBy = "editedBy") private Collection<NReport> korrigierteNReport; @OneToMany(cascade = CascadeType.ALL, mappedBy = "user") private Collection<SYSLogin> logins; public Collection<User2File> getAttachedFilesConnections() { return attachedFilesConnections; } @OneToMany(cascade = CascadeType.ALL, mappedBy = "user") private Collection<User2File> attachedFilesConnections; @OneToMany(cascade = CascadeType.ALL, mappedBy = "attendee") private Collection<Training2Users> attendedTrainings; public Users() { uid = null; groups = new ArrayList<Groups>(); status = UsersTools.STATUS_ACTIVE; mailConfirmed = UsersTools.MAIL_UNCONFIRMED; } public int getMailConfirmed() { return mailConfirmed; } public void setMailConfirmed(int mailConfirmed) { this.mailConfirmed = mailConfirmed; } public String getUID() { return uid; } public void setUID(String uid) { this.uid = uid; } public String getVorname() { return SYSTools.anonymizeName(vorname, SYSTools.INDEX_FIRSTNAME_FEMALE); } public void setVorname(String vorname) { this.vorname = vorname; } public String getName() { return SYSTools.anonymizeName(nachname, SYSTools.INDEX_LASTNAME); } public void setNachname(String nachname) { this.nachname = nachname; } public Short getStatus() { return status; } public void setStatus(Short status) { this.status = status; } public String getMd5pw() { return md5pw; } public void setMd5pw(String md5pw) { this.md5pw = md5pw; } public String getEMail() { return eMail; } public void setEMail(String eMail) { this.eMail = eMail; } // @Override // public int hashCode() { // int hash = 0; // hash += (uid != null ? uid.hashCode() : 0); // return hash; // } public Collection<Groups> getGroups() { return groups; } public void setGroups(Collection<Groups> groups) { this.groups = groups; } /** * gibt an, ob der betreffende User sich anmelden darf. * * @return true, wenn ja; false, sonst. */ public boolean isActive() { return status == UsersTools.STATUS_ACTIVE; } @Override public int compareTo(Users o) { return toString().compareTo(o.toString()); } // @Override // public boolean equals(Object object) { // // if (!(object instanceof Users)) { // return false; // } // Users other = (Users) object; // if ((this.uid == null && other.uid != null) || (this.uid != null && !this.uid.equals(other.uid))) { // return false; // } // return true; // } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Users users = (Users) o; if (eMail != null ? !eMail.equals(users.eMail) : users.eMail != null) return false; if (logins != null ? !logins.equals(users.logins) : users.logins != null) return false; if (md5pw != null ? !md5pw.equals(users.md5pw) : users.md5pw != null) return false; if (nachname != null ? !nachname.equals(users.nachname) : users.nachname != null) return false; if (status != null ? !status.equals(users.status) : users.status != null) return false; if (version != null ? !version.equals(users.version) : users.version != null) return false; if (vorname != null ? !vorname.equals(users.vorname) : users.vorname != null) return false; return true; } @Override public int hashCode() { int result = uid != null ? uid.hashCode() : 0; result = 31 * result + (version != null ? version.hashCode() : 0); result = 31 * result + (vorname != null ? vorname.hashCode() : 0); result = 31 * result + (nachname != null ? nachname.hashCode() : 0); result = 31 * result + (status != null ? status.hashCode() : 0); result = 31 * result + (md5pw != null ? md5pw.hashCode() : 0); result = 31 * result + (eMail != null ? eMail.hashCode() : 0); return result; } @Override public String toString() { return getFullname() + " [" + uid + "]"; } public String getFullname() { return getName() + ", " + getVorname(); } }