/*
- * Copyright (C) 2015 Roland Haeder
+ * Copyright (C) 2016 Roland Häder
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
import java.io.Serializable;
import java.util.Calendar;
+import java.util.Locale;
import org.mxchange.jcontacts.contact.Contact;
+import org.mxchange.jusercore.model.user.profilemodes.ProfileMode;
import org.mxchange.jusercore.model.user.status.UserAccountStatus;
/**
- * A customer interface
+ * A user POPJI
* <p>
- * @author Roland Haeder<roland@mxchange.org>
+ * @author Roland Häder<roland@mxchange.org>
*/
public interface User extends Serializable {
/**
- * Copies all attributes from other customer object to this
+ * Copies all attributes from other user object to this
* <p>
- * @param customer Source instance
+ * @param userSource Source instance
*/
- public void copyAll (final User customer);
+ void copyAll (final User userSource);
/**
- * Getter for contact instance
+ * Getter for account status
* <p>
- * @return Contact id number
+ * @return Account status
*/
- public Contact getUserContact ();
+ UserAccountStatus getUserAccountStatus ();
/**
- * Setter for contact instance
+ * Setter for account status
* <p>
- * @param contact Contact instance
+ * @param userStatus Account status
*/
- public void setUserContact (final Contact contact);
+ void setUserAccountStatus (final UserAccountStatus userStatus);
/**
- * Getter for account status
+ * Getter for confirmation key
* <p>
- * @return Account status
+ * @return Confirmation key
*/
- public UserAccountStatus getUserAccountStatus ();
+ String getUserConfirmKey ();
/**
- * Setter for account status
+ * Setter for confirmation key
* <p>
- * @param customerStatus Account status
+ * @param userConfirmKey Confirmation key
*/
- public void setUserAccountStatus (final UserAccountStatus customerStatus);
+ void setUserConfirmKey (final String userConfirmKey);
/**
- * Getter for confirmation key
+ * Getter for contact instance
* <p>
- * @return Confirmation key
+ * @return Contact id number
*/
- public String getUserConfirmKey ();
+ Contact getUserContact ();
/**
- * Setter for confirmation key
+ * Setter for contact instance
* <p>
- * @param customerConfirmKey Confirmation key
+ * @param contact Contact instance
*/
- public void setUserConfirmKey (final String customerConfirmKey);
+ void setUserContact (final Contact contact);
/**
* Getter for "created" timestamp
* <p>
* @return "created" timestamp
*/
- public Calendar getUserCreated ();
+ Calendar getUserCreated ();
/**
* Setter for "created" timestamp
* <p>
- * @param customerCreated "created" timestamp
+ * @param userCreated "created" timestamp
+ */
+ void setUserCreated (final Calendar userCreated);
+
+ /**
+ * Getter for encrypted password
+ * <p>
+ * @return Encrypted password
+ */
+ String getUserEncryptedPassword ();
+
+ /**
+ * Setter for password hash
+ * <p>
+ * @param userEncryptedPassword Encrypted password
*/
- public void setUserCreated (final Calendar customerCreated);
+ void setUserEncryptedPassword (final String userEncryptedPassword);
/**
* Getter for customer id number
* <p>
* @return User id number
*/
- public Long getUserId ();
+ Long getUserId ();
/**
* Settte for customer id number
* <p>
* @param customerId User id number
*/
- public void setUserId (final Long customerId);
+ void setUserId (final Long customerId);
/**
* Getter for "locked" timestamp
* <p>
* @return "locked" timestamp
*/
- public Calendar getUserLocked ();
+ Calendar getUserLastLocked ();
/**
* Getter for "locked" timestamp
* <p>
- * @param customerLocked "locked" timestamp
+ * @param userLocked "locked" timestamp
*/
- public void setUserLocked (final Calendar customerLocked);
+ void setUserLastLocked (final Calendar userLocked);
/**
- * Getter for customer number
+ * Getter for reason of last locked
* <p>
- * @return User number
+ * @return Reason of last locked
*/
- public String getUserName ();
+ String getUserLastLockedReason ();
/**
- * Setter for customer number
+ * Setter for reason of last locked
* <p>
- * @param customerNumber User number
+ * @param lastLockedReason Reason of last locked
*/
- public void setUserName (final String customerNumber);
+ void setUserLastLockedReason (final String lastLockedReason);
/**
- * Getter for encrypted password
+ * Getter for user name
* <p>
- * @return Encrypted password
+ * @return User name
*/
- public String getUserEncryptedPassword ();
+ String getUserName ();
/**
- * Setter for password hash
+ * Setter for user name
* <p>
- * @param userEncryptedPassword Encrypted password
+ * @param userName User name
*/
- public void setUserEncryptedPassword (final String userEncryptedPassword);
+ void setUserName (final String userName);
+
+ /**
+ * Getter for public user profile flag
+ * <p>
+ * @return Whether the user has a public profile
+ */
+ ProfileMode getUserProfileMode ();
+
+ /**
+ * Setter for public user profile flag
+ * <p>
+ * @param userPublicProfile Whether the user has a public profile
+ */
+ void setUserProfileMode (final ProfileMode userPublicProfile);
+
+ /**
+ * Getter for updated timestamp
+ * <p>
+ * @return Updated timestamp
+ */
+ Calendar getUserUpdated ();
+
+ /**
+ * Setter for updated timestamp
+ * <p>
+ * @param userUpdated Updated timestamp
+ */
+ void setUserUpdated (final Calendar userUpdated);
+
+ /**
+ * Getter for user's locale
+ * <p>
+ * @return User's locale
+ */
+ Locale getUserLocale ();
+
+ /**
+ * Setteror user's locale
+ * <p>
+ * @param userLocale User's locale
+ */
+ void setUserLocale (final Locale userLocale);
+
+ /**
+ * Getter for flag if user needs to change password
+ * <p>
+ * @return Flag if user needs to change password
+ */
+ Boolean getUserMustChangePassword ();
+
+ /**
+ * Setter for flag if user needs to change password
+ * <p>
+ * @param userMustChangePassword Flag if user needs to change password
+ */
+ void setUserMustChangePassword (final Boolean userMustChangePassword);
+
+ @Override
+ boolean equals (final Object object);
+
+ @Override
+ int hashCode ();
+
}