X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2Forg%2Fmxchange%2Faddressbook%2Fmodel%2Faddressbook%2FUserAddressbook.java;h=2ddd1cb1bf66cbc6c2aea258bcf51800645767f8;hb=e0313e717508afb54bfceb807611864489344b70;hp=b2d8ee4e36e4fbd0eba91e3aaf1cfde9520909e4;hpb=68b81ac2a90af4ca3733bc6148eca4c62018fc37;p=addressbook-lib.git diff --git a/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java b/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java index b2d8ee4..2ddd1cb 100644 --- a/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java +++ b/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java @@ -17,6 +17,7 @@ package org.mxchange.addressbook.model.addressbook; import java.util.Calendar; +import java.util.Objects; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; @@ -27,6 +28,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Temporal; @@ -42,6 +45,13 @@ import org.mxchange.jusercore.model.user.User; */ @Entity (name = "addressbooks") @Table (name = "addressbooks") +@NamedQueries ( + { + @NamedQuery (name = "AllUsersAddressbooks", query = "SELECT a FROM addressbooks AS a WHERE a.addressbookUser = :param ORDER BY a.addressbookId ASC"), + @NamedQuery (name = "SearchUserAddressbookName", query = "SELECT a FROM addressbooks AS a WHERE a.addressbookUser = :user AND LOWER(a.addressbookName) LIKE LOWER(:name)"), + @NamedQuery (name = "FindAddressbookById", query = "SELECT a FROM addressbooks AS a WHERE a.addressbookId = :id") + } +) public class UserAddressbook implements Addressbook, Comparable { /** @@ -49,6 +59,14 @@ public class UserAddressbook implements Addressbook, Comparable { */ private static final long serialVersionUID = 176_573_148_678_169L; + /** + * When this address book has been created + */ + @Basic (optional = false) + @Temporal (value = TemporalType.TIMESTAMP) + @Column (name = "addressbook_created", nullable = false, updatable = false) + private Calendar addressbookCreated; + /** * Id number */ @@ -58,19 +76,11 @@ public class UserAddressbook implements Addressbook, Comparable { private Long addressbookId; /** - * Connection to "users" table - */ - @JoinColumn (name = "addressbook_user_id", nullable = false) - @OneToOne (targetEntity = LoginUser.class, optional = false, cascade = CascadeType.ALL) - private User addressbookUser; - - /** - * When this address book has been created + * Name for this address book */ @Basic (optional = false) - @Temporal (TemporalType.TIMESTAMP) - @Column (name = "addressbook_created", nullable = false, updatable = false) - private Calendar addressbookCreated; + @Column (name = "addressbook_name", length = 50, nullable = false) + private String addressbookName; /** * Adress book status @@ -81,17 +91,65 @@ public class UserAddressbook implements Addressbook, Comparable { private AddressbokStatus addressbookStatus; /** - * Name for this address book + * Connection to "users" table */ - @Basic (optional = false) - @Column (name = "addressbook_name", length = 50, nullable = false) - private String addressbookName; + @JoinColumn (name = "addressbook_user_id", nullable = false) + @OneToOne (targetEntity = LoginUser.class, optional = false, cascade = CascadeType.ALL) + private User addressbookUser; + + /** + * Public constructor with address book name + *

+ * @param addressbookName Address book name + */ + public UserAddressbook (final String addressbookName) { + // Call default constructor + this(); + + // Set name + this.addressbookName = addressbookName; + } + + /** + * Default protected constructor + */ + protected UserAddressbook () { + } @Override public int compareTo (final Addressbook addressbook) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + @Override + public boolean equals (final Object object) { + if (object == null) { + return false; + } else if (getClass() != object.getClass()) { + return false; + } + + final Addressbook other = (Addressbook) object; + + if (!Objects.equals(this.getAddressbookName(), other.getAddressbookName())) { + return false; + } else if (!Objects.equals(this.getAddressbookUser(), other.getAddressbookUser())) { + return false; + } + + return true; + } + + @Override + public Calendar getAddressbookCreated () { + return this.addressbookCreated; + } + + @Override + public void setAddressbookCreated (final Calendar addressbookCreated) { + this.addressbookCreated = addressbookCreated; + } + @Override public Long getAddressbookId () { return this.addressbookId; @@ -102,4 +160,41 @@ public class UserAddressbook implements Addressbook, Comparable { this.addressbookId = addressbookId; } + @Override + public String getAddressbookName () { + return this.addressbookName; + } + + @Override + public void setAddressbookName (final String addressbookName) { + this.addressbookName = addressbookName; + } + + @Override + public AddressbokStatus getAddressbookStatus () { + return this.addressbookStatus; + } + + @Override + public void setAddressbookStatus (final AddressbokStatus addressbookStatus) { + this.addressbookStatus = addressbookStatus; + } + + @Override + public User getAddressbookUser () { + return this.addressbookUser; + } + + @Override + public void setAddressbookUser (final User addressbookUser) { + this.addressbookUser = addressbookUser; + } + + @Override + public int hashCode () { + int hash = 7; + hash = 59 * hash + Objects.hashCode(this.getAddressbookName()); + hash = 59 * hash + Objects.hashCode(this.getAddressbookUser()); + return hash; + } }