]> git.mxchange.org Git - addressbook-lib.git/blobdiff - src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java
Continued:
[addressbook-lib.git] / src / org / mxchange / addressbook / model / addressbook / UserAddressbook.java
index b2d8ee4e36e4fbd0eba91e3aaf1cfde9520909e4..2ddd1cb1bf66cbc6c2aea258bcf51800645767f8 100644 (file)
@@ -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<Addressbook> {
 
        /**
@@ -49,6 +59,14 @@ public class UserAddressbook implements Addressbook, Comparable<Addressbook> {
         */
        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<Addressbook> {
        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<Addressbook> {
        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
+        * <p>
+        * @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<Addressbook> {
                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;
+       }
 }