newInstance method for User
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / common / User.java
index b00b8abd6d4e4c05fb41a9732c758f439d56083e..92f34cc56a1f4a43de43902ebea580f03d237b76 100644 (file)
@@ -9,9 +9,9 @@
 \r
 package eu.etaxonomy.cdm.model.common;\r
 \r
+import java.util.Collection;\r
 import java.util.HashSet;\r
 import java.util.Set;\r
-import java.util.TreeSet;\r
 \r
 import javax.persistence.Entity;\r
 import javax.persistence.FetchType;\r
@@ -35,8 +35,14 @@ import org.hibernate.annotations.CascadeType;
 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
+\r
+import org.hibernate.search.annotations.Field;\r
+import org.hibernate.search.annotations.Index;\r
+import org.hibernate.search.annotations.Indexed;\r
+import org.hibernate.search.annotations.IndexedEmbedded;\r
+import org.springframework.security.core.GrantedAuthority;\r
+import org.springframework.security.core.userdetails.UserDetails;\r
 \r
 import eu.etaxonomy.cdm.model.agent.Person;\r
 \r
@@ -55,6 +61,7 @@ import eu.etaxonomy.cdm.model.agent.Person;
 })\r
 @XmlRootElement(name = "User")\r
 @Entity\r
+@Indexed(index = "eu.etaxonomy.cdm.model.common.User")\r
 @Audited\r
 @Table(name = "UserAccount")\r
 public class User extends CdmBase implements UserDetails {\r
@@ -62,15 +69,41 @@ public class User extends CdmBase implements UserDetails {
        @SuppressWarnings(value="unused")\r
        private static final Logger logger = Logger.getLogger(User.class);\r
        \r
+       protected User(){\r
+               super();\r
+       }\r
+       \r
        public static User NewInstance(String username, String pwd){\r
                User user = new User();\r
                user.setUsername(username);\r
                user.setPassword(pwd);\r
+               \r
+               user.setAccountNonExpired(true);\r
+               user.setAccountNonLocked(true);\r
+               user.setCredentialsNonExpired(true);\r
+               user.setEnabled(true);\r
+               \r
+               return user;\r
+       }\r
+       \r
+       public static User NewInstance(String personTitle, String username, String pwd){\r
+               User user = new User();\r
+               user.setUsername(username);\r
+               user.setPassword(pwd);\r
+               \r
+               user.setAccountNonExpired(true);\r
+               user.setAccountNonLocked(true);\r
+               user.setCredentialsNonExpired(true);\r
+               user.setEnabled(true);\r
+               Person userPerson = Person.NewTitledInstance(personTitle);\r
+               user.setPerson(userPerson);\r
+               \r
                return user;\r
        }\r
        \r
        @XmlElement(name = "Username")\r
        @NaturalId\r
+       @Field(index = Index.UN_TOKENIZED)\r
        protected String username;\r
        \r
        /**\r
@@ -96,6 +129,7 @@ public class User extends CdmBase implements UserDetails {
        @XmlIDREF\r
        @XmlSchemaType(name = "IDREF")\r
        @ManyToMany(fetch = FetchType.LAZY)\r
+       @IndexedEmbedded(depth = 1)\r
        @NotAudited\r
        protected Set<Group> groups = new HashSet<Group>();\r
        \r
@@ -116,24 +150,23 @@ public class User extends CdmBase implements UserDetails {
        @XmlSchemaType(name = "IDREF")\r
        @OneToOne(fetch = FetchType.LAZY)\r
        @Cascade({CascadeType.SAVE_UPDATE})\r
+       @IndexedEmbedded(depth = 1)\r
        protected Person person;\r
        \r
        @XmlTransient\r
        @Transient\r
-       private GrantedAuthority[] authorities;\r
+       private Set<GrantedAuthority> authorities;\r
        \r
        private void initAuthorities() {\r
-               Set<GrantedAuthority> allAuthorities = new TreeSet<GrantedAuthority>();\r
-               allAuthorities.addAll(grantedAuthorities);\r
+               authorities = new HashSet<GrantedAuthority>();\r
+               authorities.addAll(grantedAuthorities);\r
                for(Group group : groups) {\r
-                       allAuthorities.addAll(group.getGrantedAuthorities());\r
+                       authorities.addAll(group.getGrantedAuthorities());\r
                }\r
-               \r
-               authorities = allAuthorities.toArray(new GrantedAuthority[allAuthorities.size()]);\r
        }\r
        \r
        @Transient\r
-       public GrantedAuthority[] getAuthorities() {\r
+       public Collection<GrantedAuthority> getAuthorities() {\r
                if(authorities == null) initAuthorities();\r
                return authorities;\r
        }\r
@@ -212,6 +245,7 @@ public class User extends CdmBase implements UserDetails {
                return groups;\r
        }\r
        \r
+       \r
        public Person getPerson() {\r
                return person;\r
        }\r