001package org.apache.archiva.redback.users.jpa.model; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import javax.persistence.CollectionTable; 023import javax.persistence.Column; 024import javax.persistence.ElementCollection; 025import javax.persistence.Entity; 026import javax.persistence.FetchType; 027import javax.persistence.Id; 028import javax.persistence.JoinColumn; 029import javax.persistence.OrderColumn; 030import javax.persistence.Table; 031import java.util.ArrayList; 032import java.util.Date; 033import java.util.List; 034 035/** 036 * Created by martin on 20.09.16. 037 */ 038@Entity 039@Table(name="JDOUSER") 040public class JpaUser implements org.apache.archiva.redback.users.User { 041 042 @Id 043 @Column(name="USERNAME") 044 private String username; 045 @Column(name="FULL_NAME") 046 private String fullName; 047 @Column(name="EMAIL") 048 private String email; 049 @Column(name="ENCODED_PASSWORD") 050 private String encodedPassword; 051 @Column(name="LAST_PASSWORD_CHANGE") 052 private Date lastPasswordChange; 053 @ElementCollection(fetch = FetchType.EAGER) 054 @OrderColumn(name="INTEGER_IDX", nullable = false) 055 @Column(name="STRING_ELE", nullable = false) 056 @CollectionTable(name="JDOUSER_PREVIOUSENCODEDPASSWORDS", 057 joinColumns = @JoinColumn(name = "USERNAME_OID", nullable = false, referencedColumnName = "USERNAME") 058 ) 059 private List<String> previousEncodedPasswords = new ArrayList<String>(); 060 @Column(name="PERMANENT", nullable = false) 061 private Boolean permanent = false; 062 @Column(name="LOCKED", nullable = false) 063 private Boolean locked = false; 064 @Column(name="PASSWORD_CHANGE_REQUIRED", nullable = false) 065 private Boolean passwordChangeRequired = false; 066 @Column(name="VALIDATED", nullable = false) 067 private Boolean validated = false; 068 @Column(name="COUNT_FAILED_LOGIN_ATTEMPTS",nullable = false) 069 private int countFailedLoginAttempts = 0; 070 @Column(name="ACCOUNT_CREATION_DATE") 071 private Date accountCreationDate; 072 @Column(name="LAST_LOGIN_DATE") 073 private Date lastLoginDate; 074 @Column(name="USER_PASSWORD") 075 private String rawPassword; 076 077 078 @Override 079 public String getUsername() { 080 return username; 081 } 082 083 @Override 084 public void setUsername(String name) { 085 this.username = name; 086 } 087 088 @Override 089 public String getFullName() { 090 return fullName; 091 } 092 093 @Override 094 public void setFullName(String name) { 095 this.fullName = name; 096 } 097 098 @Override 099 public String getEmail() { 100 return email; 101 } 102 103 @Override 104 public void setEmail(String address) { 105 this.email = address; 106 } 107 108 @Override 109 public String getPassword() { 110 return rawPassword; 111 } 112 113 @Override 114 public void setPassword(String rawPassword) { 115 this.rawPassword = rawPassword; 116 } 117 118 @Override 119 public String getEncodedPassword() { 120 return encodedPassword; 121 } 122 123 @Override 124 public void setEncodedPassword(String encodedPassword) { 125 this.encodedPassword = encodedPassword; 126 } 127 128 @Override 129 public Date getLastPasswordChange() { 130 return lastPasswordChange; 131 } 132 133 @Override 134 public void setLastPasswordChange(Date passwordChangeDate) { 135 this.lastPasswordChange = passwordChangeDate; 136 } 137 138 @Override 139 public List<String> getPreviousEncodedPasswords() { 140 if (previousEncodedPasswords==null) { 141 setPreviousEncodedPasswords(new ArrayList<String>()); 142 } 143 assert previousEncodedPasswords != null; 144 return previousEncodedPasswords; 145 } 146 147 @Override 148 public void setPreviousEncodedPasswords(List<String> encodedPasswordList) { 149 if (previousEncodedPasswords==null) { 150 previousEncodedPasswords = new ArrayList<String>(); 151 } 152 previousEncodedPasswords.clear(); 153 previousEncodedPasswords.addAll(encodedPasswordList); 154 } 155 156 @Override 157 public void addPreviousEncodedPassword(String encodedPassword) { 158 if (previousEncodedPasswords==null) { 159 previousEncodedPasswords = new ArrayList<String>(); 160 } 161 previousEncodedPasswords.add(encodedPassword); 162 } 163 164 @Override 165 public boolean isPermanent() { 166 return permanent; 167 } 168 169 @Override 170 public void setPermanent(boolean permanent) { 171 this.permanent = permanent; 172 } 173 174 @Override 175 public boolean isLocked() { 176 return locked; 177 } 178 179 @Override 180 public void setLocked(boolean locked) { 181 this.locked = locked; 182 } 183 184 @Override 185 public boolean isPasswordChangeRequired() { 186 return passwordChangeRequired; 187 } 188 189 @Override 190 public void setPasswordChangeRequired(boolean changeRequired) { 191 this.passwordChangeRequired = changeRequired; 192 } 193 194 @Override 195 public boolean isValidated() { 196 return validated; 197 } 198 199 @Override 200 public void setValidated(boolean valid) { 201 this.validated = valid; 202 } 203 204 @Override 205 public int getCountFailedLoginAttempts() { 206 return countFailedLoginAttempts; 207 } 208 209 @Override 210 public void setCountFailedLoginAttempts(int count) { 211 this.countFailedLoginAttempts = count; 212 } 213 214 @Override 215 public Date getAccountCreationDate() { 216 return accountCreationDate; 217 } 218 219 @Override 220 public void setAccountCreationDate(Date date) { 221 this.accountCreationDate = date; 222 } 223 224 @Override 225 public Date getLastLoginDate() { 226 return lastLoginDate; 227 } 228 229 @Override 230 public void setLastLoginDate(Date date) { 231 this.lastLoginDate = date; 232 } 233 234 @Override 235 public String getUserManagerId() { 236 return "jpa"; 237 } 238 239 240 @Override 241 public boolean equals(Object o) { 242 if (this == o) return true; 243 if (o == null || getClass() != o.getClass()) return false; 244 245 JpaUser jpaUser = (JpaUser) o; 246 247 return username.equals(jpaUser.username); 248 249 } 250 251 @Override 252 public int hashCode() { 253 return username.hashCode(); 254 } 255}