From: Roland Häder Date: Fri, 13 May 2016 13:04:31 +0000 (+0200) Subject: added named query SearchUserByConfirmKey X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=1407affbce706ae2cbafc7c36279564286254687;p=juser-activity-core.git added named query SearchUserByConfirmKey --- diff --git a/src/org/mxchange/jusercore/model/user/LoginUser.java b/src/org/mxchange/jusercore/model/user/LoginUser.java index 434fb26..9fb464f 100644 --- a/src/org/mxchange/jusercore/model/user/LoginUser.java +++ b/src/org/mxchange/jusercore/model/user/LoginUser.java @@ -1,331 +1,332 @@ -/* - * Copyright (C) 2016 Roland Haeder - * - * 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.mxchange.jusercore.model.user; - -import java.util.Calendar; -import java.util.Objects; -import javax.persistence.Basic; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Index; -import javax.persistence.JoinColumn; -import javax.persistence.Lob; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import org.mxchange.jcontacts.contact.Contact; -import org.mxchange.jcontacts.contact.UserContact; -import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; -import org.mxchange.jusercore.model.user.status.UserAccountStatus; - -/** - * A generic user entity class - *

- * @author Roland Haeder - */ -@Entity (name = "users") -@Table ( - name = "users", - indexes = { - @Index ( - name = "confirmation_key", - unique = true, - columnList = "user_confirm_key" - ), - @Index ( - name = "user_name", - unique = true, - columnList = "user_name" - ) - } -) -@NamedQueries ( - { - @NamedQuery (name = "AllUserNames", query = "SELECT DISTINCT u.userName FROM users AS u ORDER BY u.userId ASC"), - @NamedQuery (name = "AllEmailAddresses", query = "SELECT DISTINCT c.contactEmailAddress FROM contacts AS c INNER JOIN users AS u ON u.userContact = c ORDER BY c.contactId ASC"), - @NamedQuery (name = "SearchUserByName", query = "SELECT u FROM users AS u WHERE LOWER(u.userName) LIKE LOWER(:param)"), - @NamedQuery (name = "SearchUserById", query = "SELECT u FROM users AS u WHERE u.userId = :id"), - @NamedQuery (name = "SearchUserByEmailAddress", query = "SELECT u FROM users AS u INNER JOIN contacts AS c ON u.userContact = c WHERE LOWER(c.contactEmailAddress) LIKE LOWER(:param)"), - @NamedQuery (name = "SearchAllUsersExcept", query = "SELECT u FROM users AS u WHERE u != :user ORDER BY u.userId ASC"), - @NamedQuery (name = "AllUsers", query = "SELECT u FROM users AS u ORDER BY u.userId ASC"), - @NamedQuery (name = "AllPublicUsers", query = "SELECT u FROM users AS u WHERE u.userAccountStatus = :status AND u.userProfileMode = :mode ORDER BY u.userId ASC"), - @NamedQuery (name = "AllMemberPublicUsers", query = "SELECT u FROM users AS u WHERE u.userAccountStatus = :status AND u.userProfileMode IN (:public, :members) ORDER BY u.userId ASC") - } -) -@SuppressWarnings ("PersistenceUnitPresent") -public class LoginUser implements User { - - /** - * Serial number - */ - private static final long serialVersionUID = 4_328_454_581_751L; - - /** - * Account status - */ - @Basic (optional = false) - @Column (name = "user_account_status", nullable = false) - @Enumerated (value = EnumType.STRING) - private UserAccountStatus userAccountStatus; - - /** - * Confirmation key - */ - @Column (name = "user_confirm_key", length = 50) - private String userConfirmKey; - - /** - * Id number from "contacts" table - */ - @JoinColumn (name = "user_contact_id", referencedColumnName = "contact_id", nullable = false, updatable = false, unique = true) - @OneToOne (targetEntity = UserContact.class, cascade = CascadeType.ALL, optional = false) - private Contact userContact; - - /** - * "created" timestamp - */ - @Basic (optional = false) - @Temporal (TemporalType.TIMESTAMP) - @Column (name = "user_created", nullable = false) - private Calendar userCreated; - - /** - * Encrypted password - */ - @Basic (optional = false) - @Column (name = "user_encrypted_password", nullable = false) - private String userEncryptedPassword; - - /** - * User id - */ - @Id - @Column (name = "user_id", nullable = false, length = 20, updatable = false) - @GeneratedValue (strategy = GenerationType.IDENTITY) - private Long userId; - - /** - * Last "locked" timestamp - */ - @Temporal (TemporalType.TIMESTAMP) - @Column (name = "user_last_locked_timestamp") - private Calendar userLastLocked; - - /** - * Last locked reason - */ - @Lob - @Column (name = "user_last_locked_reason") - private String userLastLockedReason; - - /** - * User name - */ - @Basic (optional = false) - @Column (name = "user_name", nullable = false, length = 20) - private String userName; - - /** - * Profile mode of this user - */ - @Basic (optional = false) - @Enumerated (EnumType.STRING) - @Column (name = "user_profile_mode", nullable = false) - private ProfileMode userProfileMode; - - /** - * When this user has been updated - */ - @Temporal (TemporalType.TIMESTAMP) - @Column (name = "user_updated") - private Calendar userUpdated; - - /** - * Default constructor - */ - public LoginUser () { - // Default is invisible - this.userProfileMode = ProfileMode.INVISIBLE; - } - - @Override - public void copyAll (final User user) { - // Is contact set? - if (user.getUserContact() instanceof Contact) { - // Copy also contact data - this.getUserContact().copyAll(user.getUserContact()); - } - - // Copy other data - this.setUserConfirmKey(user.getUserConfirmKey()); - this.setUserName(user.getUserName()); - this.setUserEncryptedPassword(user.getUserEncryptedPassword()); - this.setUserAccountStatus(user.getUserAccountStatus()); - this.setUserCreated(user.getUserCreated()); - this.setUserLastLocked(user.getUserLastLocked()); - this.setUserUpdated(user.getUserUpdated()); - this.setUserProfileMode(user.getUserProfileMode()); - } - - @Override - public boolean equals (final Object object) { - if (null == object) { - return false; - } else if (this.getClass() != object.getClass()) { - return false; - } - - final User other = (User) object; - - return ((Objects.equals(this.getUserName(), other.getUserName())) && - (Objects.equals(this.getUserId(), other.getUserId()))); - } - - @Override - public UserAccountStatus getUserAccountStatus () { - return this.userAccountStatus; - } - - @Override - public void setUserAccountStatus (final UserAccountStatus userAccountStatus) { - this.userAccountStatus = userAccountStatus; - } - - @Override - public String getUserConfirmKey () { - return this.userConfirmKey; - } - - @Override - public void setUserConfirmKey (final String userConfirmKey) { - this.userConfirmKey = userConfirmKey; - } - - @Override - public Contact getUserContact () { - return this.userContact; - } - - @Override - public void setUserContact (final Contact userContact) { - this.userContact = userContact; - } - - @Override - @SuppressWarnings ("ReturnOfDateField") - public Calendar getUserCreated () { - return this.userCreated; - } - - @Override - @SuppressWarnings ("AssignmentToDateFieldFromParameter") - public void setUserCreated (final Calendar userCreated) { - this.userCreated = userCreated; - } - - @Override - public String getUserEncryptedPassword () { - return this.userEncryptedPassword; - } - - @Override - public void setUserEncryptedPassword (final String userEncryptedPassword) { - this.userEncryptedPassword = userEncryptedPassword; - } - - @Override - public Long getUserId () { - return this.userId; - } - - @Override - public void setUserId (final Long userId) { - this.userId = userId; - } - - @Override - @SuppressWarnings ("ReturnOfDateField") - public Calendar getUserLastLocked () { - return this.userLastLocked; - } - - @Override - @SuppressWarnings ("AssignmentToDateFieldFromParameter") - public void setUserLastLocked (final Calendar userLastLocked) { - this.userLastLocked = userLastLocked; - } - - @Override - public String getUserLastLockedReason () { - return this.userLastLockedReason; - } - - @Override - public void setUserLastLockedReason (final String userLastLockedReason) { - this.userLastLockedReason = userLastLockedReason; - } - - @Override - public String getUserName () { - return this.userName; - } - - @Override - public void setUserName (final String userName) { - this.userName = userName; - } - - @Override - public ProfileMode getUserProfileMode () { - return this.userProfileMode; - } - - @Override - public void setUserProfileMode (final ProfileMode userProfileMode) { - this.userProfileMode = userProfileMode; - } - - @Override - @SuppressWarnings ("ReturnOfDateField") - public Calendar getUserUpdated () { - return this.userUpdated; - } - - @Override - @SuppressWarnings ("AssignmentToDateFieldFromParameter") - public void setUserUpdated (final Calendar userUpdated) { - this.userUpdated = userUpdated; - } - - @Override - public int hashCode () { - int hash = 5; - hash = 83 * hash + Objects.hashCode(this.getUserName()); - hash = 83 * hash + Objects.hashCode(this.getUserId()); - return hash; - } - -} +/* + * Copyright (C) 2016 Roland Haeder + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jusercore.model.user; + +import java.util.Calendar; +import java.util.Objects; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Index; +import javax.persistence.JoinColumn; +import javax.persistence.Lob; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcontacts.contact.UserContact; +import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; +import org.mxchange.jusercore.model.user.status.UserAccountStatus; + +/** + * A generic user entity class + *

+ * @author Roland Haeder + */ +@Entity (name = "users") +@Table ( + name = "users", + indexes = { + @Index ( + name = "confirmation_key", + unique = true, + columnList = "user_confirm_key" + ), + @Index ( + name = "user_name", + unique = true, + columnList = "user_name" + ) + } +) +@NamedQueries ( + { + @NamedQuery (name = "AllUserNames", query = "SELECT DISTINCT u.userName FROM users AS u ORDER BY u.userId ASC"), + @NamedQuery (name = "AllEmailAddresses", query = "SELECT DISTINCT c.contactEmailAddress FROM contacts AS c INNER JOIN users AS u ON u.userContact = c ORDER BY c.contactId ASC"), + @NamedQuery (name = "SearchUserByName", query = "SELECT u FROM users AS u WHERE LOWER(u.userName) LIKE LOWER(:param)"), + @NamedQuery (name = "SearchUserById", query = "SELECT u FROM users AS u WHERE u.userId = :id"), + @NamedQuery (name = "SearchUserByEmailAddress", query = "SELECT u FROM users AS u INNER JOIN contacts AS c ON u.userContact = c WHERE LOWER(c.contactEmailAddress) LIKE LOWER(:param)"), + @NamedQuery (name = "SearchUserByConfirmKey", query = "SELECT u FROM users AS u WHERE u.userConfirmKey = :confirmKey"), + @NamedQuery (name = "SearchAllUsersExcept", query = "SELECT u FROM users AS u WHERE u != :user ORDER BY u.userId ASC"), + @NamedQuery (name = "AllUsers", query = "SELECT u FROM users AS u ORDER BY u.userId ASC"), + @NamedQuery (name = "AllPublicUsers", query = "SELECT u FROM users AS u WHERE u.userAccountStatus = :status AND u.userProfileMode = :mode ORDER BY u.userId ASC"), + @NamedQuery (name = "AllMemberPublicUsers", query = "SELECT u FROM users AS u WHERE u.userAccountStatus = :status AND u.userProfileMode IN (:public, :members) ORDER BY u.userId ASC") + } +) +@SuppressWarnings ("PersistenceUnitPresent") +public class LoginUser implements User { + + /** + * Serial number + */ + private static final long serialVersionUID = 4_328_454_581_751L; + + /** + * Account status + */ + @Basic (optional = false) + @Column (name = "user_account_status", nullable = false) + @Enumerated (value = EnumType.STRING) + private UserAccountStatus userAccountStatus; + + /** + * Confirmation key + */ + @Column (name = "user_confirm_key", length = 50) + private String userConfirmKey; + + /** + * Id number from "contacts" table + */ + @JoinColumn (name = "user_contact_id", referencedColumnName = "contact_id", nullable = false, updatable = false, unique = true) + @OneToOne (targetEntity = UserContact.class, cascade = CascadeType.ALL, optional = false) + private Contact userContact; + + /** + * "created" timestamp + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "user_created", nullable = false) + private Calendar userCreated; + + /** + * Encrypted password + */ + @Basic (optional = false) + @Column (name = "user_encrypted_password", nullable = false) + private String userEncryptedPassword; + + /** + * User id + */ + @Id + @Column (name = "user_id", nullable = false, length = 20, updatable = false) + @GeneratedValue (strategy = GenerationType.IDENTITY) + private Long userId; + + /** + * Last "locked" timestamp + */ + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "user_last_locked_timestamp") + private Calendar userLastLocked; + + /** + * Last locked reason + */ + @Lob + @Column (name = "user_last_locked_reason") + private String userLastLockedReason; + + /** + * User name + */ + @Basic (optional = false) + @Column (name = "user_name", nullable = false, length = 20) + private String userName; + + /** + * Profile mode of this user + */ + @Basic (optional = false) + @Enumerated (EnumType.STRING) + @Column (name = "user_profile_mode", nullable = false) + private ProfileMode userProfileMode; + + /** + * When this user has been updated + */ + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "user_updated") + private Calendar userUpdated; + + /** + * Default constructor + */ + public LoginUser () { + // Default is invisible + this.userProfileMode = ProfileMode.INVISIBLE; + } + + @Override + public void copyAll (final User user) { + // Is contact set? + if (user.getUserContact() instanceof Contact) { + // Copy also contact data + this.getUserContact().copyAll(user.getUserContact()); + } + + // Copy other data + this.setUserConfirmKey(user.getUserConfirmKey()); + this.setUserName(user.getUserName()); + this.setUserEncryptedPassword(user.getUserEncryptedPassword()); + this.setUserAccountStatus(user.getUserAccountStatus()); + this.setUserCreated(user.getUserCreated()); + this.setUserLastLocked(user.getUserLastLocked()); + this.setUserUpdated(user.getUserUpdated()); + this.setUserProfileMode(user.getUserProfileMode()); + } + + @Override + public boolean equals (final Object object) { + if (null == object) { + return false; + } else if (this.getClass() != object.getClass()) { + return false; + } + + final User other = (User) object; + + return ((Objects.equals(this.getUserName(), other.getUserName())) && + (Objects.equals(this.getUserId(), other.getUserId()))); + } + + @Override + public UserAccountStatus getUserAccountStatus () { + return this.userAccountStatus; + } + + @Override + public void setUserAccountStatus (final UserAccountStatus userAccountStatus) { + this.userAccountStatus = userAccountStatus; + } + + @Override + public String getUserConfirmKey () { + return this.userConfirmKey; + } + + @Override + public void setUserConfirmKey (final String userConfirmKey) { + this.userConfirmKey = userConfirmKey; + } + + @Override + public Contact getUserContact () { + return this.userContact; + } + + @Override + public void setUserContact (final Contact userContact) { + this.userContact = userContact; + } + + @Override + @SuppressWarnings ("ReturnOfDateField") + public Calendar getUserCreated () { + return this.userCreated; + } + + @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") + public void setUserCreated (final Calendar userCreated) { + this.userCreated = userCreated; + } + + @Override + public String getUserEncryptedPassword () { + return this.userEncryptedPassword; + } + + @Override + public void setUserEncryptedPassword (final String userEncryptedPassword) { + this.userEncryptedPassword = userEncryptedPassword; + } + + @Override + public Long getUserId () { + return this.userId; + } + + @Override + public void setUserId (final Long userId) { + this.userId = userId; + } + + @Override + @SuppressWarnings ("ReturnOfDateField") + public Calendar getUserLastLocked () { + return this.userLastLocked; + } + + @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") + public void setUserLastLocked (final Calendar userLastLocked) { + this.userLastLocked = userLastLocked; + } + + @Override + public String getUserLastLockedReason () { + return this.userLastLockedReason; + } + + @Override + public void setUserLastLockedReason (final String userLastLockedReason) { + this.userLastLockedReason = userLastLockedReason; + } + + @Override + public String getUserName () { + return this.userName; + } + + @Override + public void setUserName (final String userName) { + this.userName = userName; + } + + @Override + public ProfileMode getUserProfileMode () { + return this.userProfileMode; + } + + @Override + public void setUserProfileMode (final ProfileMode userProfileMode) { + this.userProfileMode = userProfileMode; + } + + @Override + @SuppressWarnings ("ReturnOfDateField") + public Calendar getUserUpdated () { + return this.userUpdated; + } + + @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") + public void setUserUpdated (final Calendar userUpdated) { + this.userUpdated = userUpdated; + } + + @Override + public int hashCode () { + int hash = 5; + hash = 83 * hash + Objects.hashCode(this.getUserName()); + hash = 83 * hash + Objects.hashCode(this.getUserId()); + return hash; + } + +}