2 * Copyright (C) 2016 Roland Haeder
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package org.mxchange.jusercore.model.user;
19 import java.io.Serializable;
20 import java.util.Calendar;
21 import java.util.Locale;
22 import org.mxchange.jcontacts.contact.Contact;
23 import org.mxchange.jusercore.model.user.profilemodes.ProfileMode;
24 import org.mxchange.jusercore.model.user.status.UserAccountStatus;
29 * @author Roland Haeder<roland@mxchange.org>
31 public interface User extends Serializable {
34 * Copies all attributes from other user object to this
36 * @param userSource Source instance
38 void copyAll (final User userSource);
41 * Getter for account status
43 * @return Account status
45 UserAccountStatus getUserAccountStatus ();
48 * Setter for account status
50 * @param userStatus Account status
52 void setUserAccountStatus (final UserAccountStatus userStatus);
55 * Getter for confirmation key
57 * @return Confirmation key
59 String getUserConfirmKey ();
62 * Setter for confirmation key
64 * @param userConfirmKey Confirmation key
66 void setUserConfirmKey (final String userConfirmKey);
69 * Getter for contact instance
71 * @return Contact id number
73 Contact getUserContact ();
76 * Setter for contact instance
78 * @param contact Contact instance
80 void setUserContact (final Contact contact);
83 * Getter for "created" timestamp
85 * @return "created" timestamp
87 Calendar getUserCreated ();
90 * Setter for "created" timestamp
92 * @param userCreated "created" timestamp
94 void setUserCreated (final Calendar userCreated);
97 * Getter for encrypted password
99 * @return Encrypted password
101 String getUserEncryptedPassword ();
104 * Setter for password hash
106 * @param userEncryptedPassword Encrypted password
108 void setUserEncryptedPassword (final String userEncryptedPassword);
111 * Getter for customer id number
113 * @return User id number
118 * Settte for customer id number
120 * @param customerId User id number
122 void setUserId (final Long customerId);
125 * Getter for "locked" timestamp
127 * @return "locked" timestamp
129 Calendar getUserLastLocked ();
132 * Getter for "locked" timestamp
134 * @param userLocked "locked" timestamp
136 void setUserLastLocked (final Calendar userLocked);
139 * Getter for reason of last locked
141 * @return Reason of last locked
143 String getUserLastLockedReason ();
146 * Setter for reason of last locked
148 * @param lastLockedReason Reason of last locked
150 void setUserLastLockedReason (final String lastLockedReason);
153 * Getter for user name
157 String getUserName ();
160 * Setter for user name
162 * @param userName User name
164 void setUserName (final String userName);
167 * Getter for public user profile flag
169 * @return Whether the user has a public profile
171 ProfileMode getUserProfileMode ();
174 * Setter for public user profile flag
176 * @param userPublicProfile Whether the user has a public profile
178 void setUserProfileMode (final ProfileMode userPublicProfile);
181 * Getter for updated timestamp
183 * @return Updated timestamp
185 Calendar getUserUpdated ();
188 * Setter for updated timestamp
190 * @param userUpdated Updated timestamp
192 void setUserUpdated (final Calendar userUpdated);
195 * Getter for user's locale
197 * @return User's locale
199 Locale getUserLocale ();
202 * Setteror user's locale
204 * @param userLocale User's locale
206 void setUserLocale (final Locale userLocale);
209 boolean equals (final Object object);