X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2Forg%2Fmxchange%2Faddressbook%2Fmodel%2Faddressbook%2Fshared%2FAddressbookShare.java;h=be4b1fe5e83a20bd5e8b524d5dfc5b7c57226634;hb=abbcdc7834bb9926c166123af2bde49c909969c0;hp=8777d9135b58fd9012122998cfab858a94385e03;hpb=85dfaa739579a63b610c48467352af43e12e6e76;p=addressbook-lib.git diff --git a/src/org/mxchange/addressbook/model/addressbook/shared/AddressbookShare.java b/src/org/mxchange/addressbook/model/addressbook/shared/AddressbookShare.java index 8777d91..be4b1fe 100644 --- a/src/org/mxchange/addressbook/model/addressbook/shared/AddressbookShare.java +++ b/src/org/mxchange/addressbook/model/addressbook/shared/AddressbookShare.java @@ -16,7 +16,11 @@ */ package org.mxchange.addressbook.model.addressbook.shared; +import java.text.MessageFormat; +import java.util.Calendar; +import java.util.GregorianCalendar; import java.util.Objects; +import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -24,8 +28,12 @@ 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; +import javax.persistence.TemporalType; import org.mxchange.addressbook.model.addressbook.Addressbook; import org.mxchange.addressbook.model.addressbook.UserAddressbook; import org.mxchange.jusercore.model.user.LoginUser; @@ -38,6 +46,18 @@ import org.mxchange.jusercore.model.user.User; */ @Entity (name = "addressbook_shares") @Table (name = "addressbook_shares") +@NamedQueries ( + { + @NamedQuery ( + name = "SearchUserSharedAddressbooks", + query = "SELECT s FROM addressbook_shares AS s WHERE s.shareUserOwner = :user ORDER BY s.shareId ASC" + ), + @NamedQuery ( + name = "SearchShareeAddressbookShare", + query = "SELECT s FROM addressbook_shares AS s WHERE s.shareAddressbook = :addressbook AND s.shareUserSharee = :sharee" + ) + } +) public class AddressbookShare implements ShareableAddressbook, Comparable { /** @@ -57,23 +77,80 @@ public class AddressbookShare implements ShareableAddressbook, Comparable + * @param addressbook Address book instance + * @param sharee User sharee instance + */ + public AddressbookShare (final Addressbook addressbook, final User sharee) { + // Call protected constructor + this(); + + // Check all conditions + if (null == sharee) { + // Throw NPE + throw new NullPointerException("sharee is null"); //NOI18N + } else if (sharee.getUserId() == null) { + // Throw NPE again + throw new NullPointerException("sharee.userId is null"); //NOI18N + } else if (sharee.getUserId() < 1) { + // Invalid id number + throw new IllegalStateException(MessageFormat.format("sharee.userId={0} is invalid", sharee.getUserId())); //NOI18N + } else if (null == addressbook) { + // Throw NPE again + throw new NullPointerException("addressbook is null"); //NOI18N + } else if (addressbook.getAddressbookId() == null) { + // Throw NPE again + throw new NullPointerException("addressbook.addressbookId is null"); //NOI18N + } else if (addressbook.getAddressbookId() < 1) { + // Invalid id number + throw new IllegalArgumentException(MessageFormat.format("addressbook.addressbookId={0} is invalid.", addressbook.getAddressbookId())); //NOI18N + } else if (Objects.equals(addressbook.getAddressbookUser(), sharee)) { + // Sharing with yourself! + throw new IllegalStateException("User tries to share with himself."); //NOI18N + } + + // Set all instances + this.shareAddressbook = addressbook; + this.shareUserOwner = addressbook.getAddressbookUser(); + this.shareUserSharee = sharee; + this.shareCreated = new GregorianCalendar(); + } + @Override public int compareTo (final ShareableAddressbook share) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. @@ -110,6 +187,16 @@ public class AddressbookShare implements ShareableAddressbook, Comparable