Extension.value -> LOB,
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / common / User.java
index f0f6d07f1dcacd3de7341d6c247c3e3234d7d5c2..b00b8abd6d4e4c05fb41a9732c758f439d56083e 100644 (file)
@@ -1,3 +1,12 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
 package eu.etaxonomy.cdm.model.common;\r
 \r
 import java.util.HashSet;\r
@@ -7,41 +16,110 @@ import java.util.TreeSet;
 import javax.persistence.Entity;\r
 import javax.persistence.FetchType;\r
 import javax.persistence.ManyToMany;\r
+import javax.persistence.OneToOne;\r
+import javax.persistence.Table;\r
 import javax.persistence.Transient;\r
-\r
+import javax.xml.bind.annotation.XmlAccessType;\r
+import javax.xml.bind.annotation.XmlAccessorType;\r
+import javax.xml.bind.annotation.XmlElement;\r
+import javax.xml.bind.annotation.XmlElementWrapper;\r
+import javax.xml.bind.annotation.XmlIDREF;\r
+import javax.xml.bind.annotation.XmlRootElement;\r
+import javax.xml.bind.annotation.XmlSchemaType;\r
+import javax.xml.bind.annotation.XmlTransient;\r
+import javax.xml.bind.annotation.XmlType;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.annotations.Cascade;\r
+import org.hibernate.annotations.CascadeType;\r
 import org.hibernate.annotations.NaturalId;\r
+import org.hibernate.envers.Audited;\r
+import org.hibernate.envers.NotAudited;\r
 import org.springframework.security.GrantedAuthority;\r
 import org.springframework.security.userdetails.UserDetails;\r
 \r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+\r
+@XmlAccessorType(XmlAccessType.FIELD)\r
+@XmlType(name = "User", propOrder = {\r
+    "username",\r
+    "password",\r
+    "emailAddress",\r
+    "grantedAuthorities",\r
+    "groups",\r
+    "enabled",\r
+    "accountNonExpired",\r
+    "credentialsNonExpired",\r
+    "accountNonLocked",\r
+    "person"    \r
+})\r
+@XmlRootElement(name = "User")\r
 @Entity\r
+@Audited\r
+@Table(name = "UserAccount")\r
 public class User extends CdmBase implements UserDetails {\r
-\r
-       /**\r
-        * \r
-        */\r
        private static final long serialVersionUID = 6582191171369439163L;\r
-\r
+       @SuppressWarnings(value="unused")\r
+       private static final Logger logger = Logger.getLogger(User.class);\r
+       \r
+       public static User NewInstance(String username, String pwd){\r
+               User user = new User();\r
+               user.setUsername(username);\r
+               user.setPassword(pwd);\r
+               return user;\r
+       }\r
+       \r
+       @XmlElement(name = "Username")\r
+       @NaturalId\r
        protected String username;\r
        \r
        /**\r
         * a salted, MD5 encoded hash of the plaintext password\r
         */\r
+       @XmlElement(name = "Password")\r
+       @NotAudited\r
        protected String password;\r
        \r
+       @XmlElement(name = "EmailAddress")\r
        protected String emailAddress;\r
        \r
-       protected Set <GrantedAuthority> grantedAuthorities = new HashSet<GrantedAuthority>();\r
+       @XmlElementWrapper(name = "GrantedAuthorities")\r
+       @XmlElement(name = "GrantedAuthority", type = GrantedAuthorityImpl.class)\r
+       @XmlIDREF\r
+       @XmlSchemaType(name = "IDREF")\r
+       @ManyToMany(fetch = FetchType.LAZY, targetEntity = GrantedAuthorityImpl.class)\r
+       @NotAudited\r
+       protected Set<GrantedAuthority> grantedAuthorities = new HashSet<GrantedAuthority>();\r
        \r
+       @XmlElementWrapper(name = "Groups")\r
+       @XmlElement(name = "Group")\r
+       @XmlIDREF\r
+       @XmlSchemaType(name = "IDREF")\r
+       @ManyToMany(fetch = FetchType.LAZY)\r
+       @NotAudited\r
        protected Set<Group> groups = new HashSet<Group>();\r
        \r
+       @XmlElement(name = "Enabled")\r
        protected boolean enabled;\r
        \r
+       @XmlElement(name = "AccountNonExpired")\r
        protected boolean accountNonExpired;\r
-       \r
+\r
+       @XmlElement(name = "CredentialsNonExpired")\r
        protected boolean credentialsNonExpired;\r
        \r
+       @XmlElement(name = "AccountNonLocked")\r
        protected boolean accountNonLocked;     \r
        \r
+       @XmlElement(name = "Person")\r
+       @XmlIDREF\r
+       @XmlSchemaType(name = "IDREF")\r
+       @OneToOne(fetch = FetchType.LAZY)\r
+       @Cascade({CascadeType.SAVE_UPDATE})\r
+       protected Person person;\r
+       \r
+       @XmlTransient\r
+       @Transient\r
        private GrantedAuthority[] authorities;\r
        \r
        private void initAuthorities() {\r
@@ -64,7 +142,6 @@ public class User extends CdmBase implements UserDetails {
                return password;\r
        }\r
 \r
-       @NaturalId\r
        public String getUsername() {\r
                return username;\r
        }\r
@@ -93,7 +170,6 @@ public class User extends CdmBase implements UserDetails {
                this.emailAddress = emailAddress;\r
        }\r
 \r
-       @ManyToMany(fetch = FetchType.LAZY, targetEntity = GrantedAuthorityImpl.class)\r
        public Set<GrantedAuthority> getGrantedAuthorities() {\r
                return grantedAuthorities;\r
        }\r
@@ -132,8 +208,15 @@ public class User extends CdmBase implements UserDetails {
                initAuthorities();\r
        }\r
        \r
-       @ManyToMany(fetch = FetchType.LAZY)\r
        public Set<Group> getGroups() {\r
                return groups;\r
        }\r
+       \r
+       public Person getPerson() {\r
+               return person;\r
+       }\r
+       \r
+       public void setPerson(Person person) {\r
+               this.person = person;\r
+       }\r
 }\r