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}