javadoc.splitindex=true
javadoc.use=true
javadoc.version=true
-javadoc.windowtitle=JAddressbookCore
+javadoc.windowtitle=Addressbook Model
jnlp.codebase.type=no.codebase
jnlp.descriptor=application
jnlp.enabled=false
--- /dev/null
+/*
+ * 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
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jaddressbook.events.addressbook;
+
+import org.mxchange.jaddressbook.model.addressbook.Addressbook;
+
+/**
+ * An event fired when an address book has been loaded
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public class AddressbookLoadedEvent implements ObservableAddressbookLoadedEvent {
+
+ /**
+ * Serial number
+ */
+ private static final long serialVersionUID = 48_305_823_537_427_713L;
+
+ /**
+ * Adress book instance causing this event
+ */
+ private final Addressbook addressbook;
+
+ /**
+ * Constructor with address book instance
+ * <p>
+ * @param addressbook Address book instance
+ */
+ public AddressbookLoadedEvent (final Addressbook addressbook) {
+ this.addressbook = addressbook;
+ }
+
+ @Override
+ public Addressbook getAddressbook () {
+ return this.addressbook;
+ }
+}
--- /dev/null
+/*
+ * 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
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jaddressbook.events.addressbook;
+
+import java.io.Serializable;
+import org.mxchange.jaddressbook.model.addressbook.Addressbook;
+
+/**
+ * An interface for an event if an address book has been loaded
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public interface ObservableAddressbookLoadedEvent extends Serializable {
+
+ /**
+ * Getter for address book instance
+ * <p>
+ * @return Address book instance
+ */
+ Addressbook getAddressbook ();
+}
--- /dev/null
+/*
+ * 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
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jaddressbook.exceptions;
+
+import java.text.MessageFormat;
+import org.mxchange.jaddressbook.model.addressbook.Addressbook;
+
+/**
+ * An exception thrown when the user has already used the name.
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public class AddressbookNameAlreadyUsedException extends Exception {
+
+ /**
+ * Serial number
+ */
+ private static final long serialVersionUID = 58_169_748_928_767_381L;
+
+ /**
+ * Constructor with address book instance
+ * <p>
+ * @param addressbook Address book instance
+ */
+ public AddressbookNameAlreadyUsedException (final Addressbook addressbook) {
+ super(MessageFormat.format("User {0} has already used the name {1}.", addressbook.getAddressbookUser(), addressbook.getAddressbookName())); //NOI18N
+ }
+
+}
--- /dev/null
+/*
+ * 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
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jaddressbook.exceptions;
+
+import java.text.MessageFormat;
+
+/**
+ * An exception thrown when the address book's id number is not valid, so no
+ * address book can be found.
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public class AddressbookNotFoundException extends Exception {
+
+ /**
+ * Serial number
+ */
+ private static final long serialVersionUID = 14_986_976_417_658_920L;
+
+ /**
+ * Creates an exception with given id number that could not be found.
+ * <p>
+ * @param addressbookId Address book id number
+ */
+ public AddressbookNotFoundException (final Long addressbookId) {
+ super(MessageFormat.format("Address book with id number {0} does not exist.", addressbookId));
+ }
+
+}
--- /dev/null
+/*
+ * 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
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jaddressbook.model.addressbook;
+
+import java.io.Serializable;
+import java.util.Calendar;
+import org.mxchange.jaddressbook.model.addressbook.status.AddressbokStatus;
+import org.mxchange.jusercore.model.user.User;
+
+/**
+ * A POJI for addressbooks
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public interface Addressbook extends Serializable {
+
+ /**
+ * Getter for id number
+ * <p>
+ * @return Id number
+ */
+ Long getAddressbookId ();
+
+ /**
+ * Setter for id number
+ * <p>
+ * @param addressbookId Id number
+ */
+ void setAddressbookId (final Long addressbookId);
+
+ /**
+ * Getter for addressbook creation timestamp
+ * <p>
+ * @return Addressbook creation timestamp
+ */
+ Calendar getAddressbookCreated ();
+
+ /**
+ * Setter for addressbook creation timestamp
+ * <p>
+ * @param addressbookCreated Addressbook creation timestamp
+ */
+ void setAddressbookCreated (final Calendar addressbookCreated);
+
+ /**
+ * Getter for addressbook's name
+ * <p>
+ * @return Addressbook's name
+ */
+ String getAddressbookName ();
+
+ /**
+ * Setter for addressbook's name
+ * <p>
+ * @param addressbookName Addressbook's name
+ */
+ void setAddressbookName (final String addressbookName);
+
+ /**
+ * Getter for addressbook status
+ * <p>
+ * @return Addressbook status
+ */
+ AddressbokStatus getAddressbookStatus ();
+
+ /**
+ * Setter for addressbook status
+ * <p>
+ * @param addressbookStatus Addressbook status
+ */
+ void setAddressbookStatus (final AddressbokStatus addressbookStatus);
+
+ /**
+ * Getter for addressbook's user (owner)
+ * <p>
+ * @return Addressbook's user (owner)
+ */
+ User getAddressbookUser ();
+
+ /**
+ * Setter for addressbook's user (owner)
+ * <p>
+ * @param addressbookUser Addressbook's user (owner)
+ */
+ void setAddressbookUser (final User addressbookUser);
+
+ /**
+ * Getter for last locked timestamp
+ * <p>
+ * @return Last locked timestamp
+ */
+ Calendar getAddressbookLastLocked ();
+
+ /**
+ * Setter for last locked timestamp
+ * <p>
+ * @param addressbookLastLocked Last locked timestamp
+ */
+ void setAddressbookLastLocked (final Calendar addressbookLastLocked);
+
+ /**
+ * Getter for last locked reason
+ * <p>
+ * @return Last locked reason
+ */
+ String getAddressbookLastLockedReason ();
+
+ /**
+ * Getter for last locked reason
+ * <p>
+ * @param addressbookLastLockedReason Last locked reason
+ */
+ void setAddressbookLastLockedReason (final String addressbookLastLockedReason);
+
+ @Override
+ boolean equals (final Object object);
+
+ @Override
+ int hashCode ();
+
+}
--- /dev/null
+/*
+ * 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
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jaddressbook.model.addressbook;
+
+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.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 javax.persistence.Transient;
+import org.mxchange.jaddressbook.model.addressbook.status.AddressbokStatus;
+import org.mxchange.jusercore.model.user.LoginUser;
+import org.mxchange.jusercore.model.user.User;
+
+/**
+ * A POJO for user addressbooks
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@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 = "SearchAddressbookById", query = "SELECT a FROM addressbooks AS a WHERE a.addressbookId = :id")
+ }
+)
+@SuppressWarnings ("PersistenceUnitPresent")
+public class UserAddressbook implements Addressbook {
+
+ /**
+ * Serial number
+ */
+ @Transient
+ 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
+ */
+ @Id
+ @GeneratedValue (strategy = GenerationType.IDENTITY)
+ @Column (name = "addressbook_id", nullable = false, updatable = false)
+ private Long addressbookId;
+
+ /**
+ * Last locked timestamp
+ */
+ @Temporal (TemporalType.TIMESTAMP)
+ @Column (name = "addressbook_last_locked")
+ private Calendar addressbookLastLocked;
+
+ /**
+ * Last locked timestamp
+ */
+ @Lob
+ @Column (name = "addressbook_last_locked_reason")
+ private String addressbookLastLockedReason;
+
+ /**
+ * Name for this address book
+ */
+ @Basic (optional = false)
+ @Column (name = "addressbook_name", length = 50, nullable = false)
+ private String addressbookName;
+
+ /**
+ * Adress book status
+ */
+ @Basic (optional = false)
+ @Enumerated (EnumType.STRING)
+ @Column (name = "addressbook_status", nullable = false, length = 10)
+ private AddressbokStatus addressbookStatus;
+
+ /**
+ * Connection to "users" table
+ */
+ @JoinColumn (name = "addressbook_user_id", nullable = false)
+ @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
+ private User addressbookUser;
+
+ /**
+ * Public constructor with address book name
+ * <p>
+ * @param addressbookName Address book name
+ * @param addressbookUser User instance
+ */
+ public UserAddressbook (final String addressbookName, final User addressbookUser) {
+ // Call default constructor
+ this();
+
+ // Set name and user instance
+ this.addressbookName = addressbookName;
+ this.addressbookUser = addressbookUser;
+ }
+
+ /**
+ * Default constructor
+ */
+ public UserAddressbook () {
+ // Set status to UNLOCKED
+ this.addressbookStatus = AddressbokStatus.UNLOCKED;
+ }
+
+ @Override
+ public boolean equals (final Object object) {
+ if (null == object) {
+ return false;
+ } else if (this.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 int hashCode () {
+ int hash = 7;
+ hash = 59 * hash + Objects.hashCode(this.getAddressbookName());
+ hash = 59 * hash + Objects.hashCode(this.getAddressbookUser());
+ return hash;
+ }
+
+ @Override
+ public Calendar getAddressbookCreated () {
+ return this.addressbookCreated;
+ }
+
+ @Override
+ public void setAddressbookCreated (final Calendar addressbookCreated) {
+ this.addressbookCreated = addressbookCreated;
+ }
+
+ @Override
+ public Long getAddressbookId () {
+ return this.addressbookId;
+ }
+
+ @Override
+ public void setAddressbookId (final Long addressbookId) {
+ this.addressbookId = addressbookId;
+ }
+
+ @Override
+ public Calendar getAddressbookLastLocked () {
+ return this.addressbookLastLocked;
+ }
+
+ @Override
+ public void setAddressbookLastLocked (final Calendar addressbookLastLocked) {
+ this.addressbookLastLocked = addressbookLastLocked;
+ }
+
+ @Override
+ public String getAddressbookLastLockedReason () {
+ return this.addressbookLastLockedReason;
+ }
+
+ @Override
+ public void setAddressbookLastLockedReason (final String addressbookLastLockedReason) {
+ this.addressbookLastLockedReason = addressbookLastLockedReason;
+ }
+
+ @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;
+ }
+
+}
--- /dev/null
+/*
+ * 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
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jaddressbook.model.addressbook.entry;
+
+import java.io.Serializable;
+import java.util.Calendar;
+import org.mxchange.jaddressbook.model.addressbook.Addressbook;
+import org.mxchange.jcontacts.contact.Contact;
+import org.mxchange.jcontactsbusiness.BusinessContact;
+
+/**
+ * A POJI for addressbook entries
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public interface AddressbookEntry extends Serializable {
+
+ /**
+ * Getter for id number
+ * <p>
+ * @return Id number
+ */
+ Long getAddressbookEntryId ();
+
+ /**
+ * Setter for id number
+ * <p>
+ * @param addressbookEntryId Id number
+ */
+ void setAddressbookEntryId (final Long addressbookEntryId);
+
+ /**
+ * Getter for business contact
+ * <p>
+ * @return Business contact
+ */
+ BusinessContact getAddressbookEntryBusinessContact ();
+
+ /**
+ * Setter for business contact
+ * <p>
+ * @param addressbookEntryBusinessContact Business contact
+ */
+ void setAddressbookEntryBusinessContact (final BusinessContact addressbookEntryBusinessContact);
+
+ /**
+ * Getter for entry created timestamp
+ * <p>
+ * @return Entry created timestamp
+ */
+ Calendar getAddressbookEntryCreated ();
+
+ /**
+ * Setter for entry created timestamp
+ * <p>
+ * @param addressbookEntryCreated Entry created timestamp
+ */
+ void setAddressbookEntryCreated (final Calendar addressbookEntryCreated);
+
+ /**
+ * Getter for private contact
+ * <p>
+ * @return Private contact
+ */
+ Contact getAddressbookEntryPrivateContact ();
+
+ /**
+ * Setter for private contact
+ * <p>
+ * @param addressbookEntryPrivateContact Private contact
+ */
+ void setAddressbookEntryPrivateContact (final Contact addressbookEntryPrivateContact);
+
+ /**
+ * Getter for address book
+ * <p>
+ * @return Address book
+ */
+ Addressbook getAddressbookId ();
+
+ /**
+ * Setter for address book
+ * <p>
+ * @param addressbookId Address book
+ */
+ void setAddressbookId (final Addressbook addressbookId);
+
+ @Override
+ boolean equals (final Object object);
+
+ @Override
+ int hashCode ();
+
+}
--- /dev/null
+/*
+ * 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
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jaddressbook.model.addressbook.entry;
+
+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.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 javax.persistence.Transient;
+import org.mxchange.jaddressbook.model.addressbook.Addressbook;
+import org.mxchange.jaddressbook.model.addressbook.UserAddressbook;
+import org.mxchange.jcontacts.contact.Contact;
+import org.mxchange.jcontacts.contact.UserContact;
+import org.mxchange.jcontactsbusiness.BusinessContact;
+import org.mxchange.jcontactsbusiness.CompanyContact;
+
+/**
+ * A POJO for address book entries
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@Entity (name = "addressbook_entries")
+@Table (name = "addressbook_entries")
+@NamedQueries (
+ @NamedQuery (
+ name = "SearchUsersAddressbookEntries",
+ query = "SELECT e FROM addressbook_entries AS e INNER JOIN addressbooks AS a ON e.addressbookId = a WHERE e.addressbookId = :addressbook AND a.addressbookUser = :owner ORDER BY e.addressbookEntryId ASC")
+)
+@SuppressWarnings ("PersistenceUnitPresent")
+public class UserAddressbookEntry implements AddressbookEntry {
+
+ /**
+ * Serial number
+ */
+ @Transient
+ private static final long serialVersionUID = 178_581_768_581_960L;
+
+ /**
+ * Connection to table "business_contacts" (commercial contacts)
+ */
+ @JoinColumn (name = "entry_business_contact_id", updatable = false)
+ @OneToOne (targetEntity = CompanyContact.class, cascade = CascadeType.REFRESH)
+ private BusinessContact addressbookEntryBusinessContact;
+
+ /**
+ * When this address book entry has been created
+ */
+ @Basic (optional = false)
+ @Temporal (TemporalType.TIMESTAMP)
+ @Column (name = "entry_created", nullable = false, updatable = false)
+ private Calendar addressbookEntryCreated;
+
+ /**
+ * Id number
+ */
+ @Id
+ @GeneratedValue (strategy = GenerationType.IDENTITY)
+ @Column (name = "entry_id", nullable = false, updatable = false)
+ private Long addressbookEntryId;
+
+ /**
+ * Connection to table "contacts" (private contacts)
+ */
+ @JoinColumn (name = "entry_private_contact_id", updatable = false)
+ @OneToOne (targetEntity = UserContact.class, cascade = CascadeType.REFRESH)
+ private Contact addressbookEntryPrivateContact;
+
+ /**
+ * Connection to table "addressbooks"
+ */
+ @JoinColumn (name = "entry_addressbook_id", nullable = false, updatable = false)
+ @OneToOne (targetEntity = UserAddressbook.class, cascade = CascadeType.REFRESH, optional = false)
+ private Addressbook addressbookId;
+
+ @Override
+ public boolean equals (final Object object) {
+ if (null == object) {
+ return false;
+ } else if (this.getClass() != object.getClass()) {
+ return false;
+ }
+
+ final AddressbookEntry other = (AddressbookEntry) object;
+
+ if (!Objects.equals(this.getAddressbookEntryBusinessContact(), other.getAddressbookEntryBusinessContact())) {
+ return false;
+ } else if (!Objects.equals(this.getAddressbookEntryPrivateContact(), other.getAddressbookEntryPrivateContact())) {
+ return false;
+ } else if (!Objects.equals(this.getAddressbookId(), other.getAddressbookId())) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode () {
+ int hash = 3;
+
+ hash = 19 * hash + Objects.hashCode(this.getAddressbookEntryBusinessContact());
+ hash = 19 * hash + Objects.hashCode(this.getAddressbookEntryPrivateContact());
+ hash = 19 * hash + Objects.hashCode(this.getAddressbookId());
+
+ return hash;
+ }
+
+ @Override
+ public BusinessContact getAddressbookEntryBusinessContact () {
+ return this.addressbookEntryBusinessContact;
+ }
+
+ @Override
+ public void setAddressbookEntryBusinessContact (final BusinessContact addressbookEntryBusinessContact) {
+ this.addressbookEntryBusinessContact = addressbookEntryBusinessContact;
+ }
+
+ @Override
+ @SuppressWarnings ("ReturnOfDateField")
+ public Calendar getAddressbookEntryCreated () {
+ return this.addressbookEntryCreated;
+ }
+
+ @Override
+ @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+ public void setAddressbookEntryCreated (final Calendar addressbookEntryCreated) {
+ this.addressbookEntryCreated = addressbookEntryCreated;
+ }
+
+ @Override
+ public Long getAddressbookEntryId () {
+ return this.addressbookEntryId;
+ }
+
+ @Override
+ public void setAddressbookEntryId (final Long addressbookEntryId) {
+ this.addressbookEntryId = addressbookEntryId;
+ }
+
+ @Override
+ public Contact getAddressbookEntryPrivateContact () {
+ return this.addressbookEntryPrivateContact;
+ }
+
+ @Override
+ public void setAddressbookEntryPrivateContact (final Contact addressbookEntryPrivateContact) {
+ this.addressbookEntryPrivateContact = addressbookEntryPrivateContact;
+ }
+
+ @Override
+ public Addressbook getAddressbookId () {
+ return this.addressbookId;
+ }
+
+ @Override
+ public void setAddressbookId (final Addressbook addressbookId) {
+ this.addressbookId = addressbookId;
+ }
+
+}
--- /dev/null
+/*
+ * 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
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jaddressbook.model.addressbook.status;
+
+import java.io.Serializable;
+
+/**
+ * An enumeration for the addressbook status
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public enum AddressbokStatus implements Serializable {
+
+ /**
+ * When the addressbook is unlocked
+ */
+ UNLOCKED("ADDRESSBOOK_STATUS_UNLOCKED"), //NOI18N
+
+ /**
+ * When the addressbook is locked by administrator
+ */
+ LOCKED("ADDRESSBOOK_STATUS_LOCKED"); //NOI18N
+
+ /**
+ * Message key
+ */
+ private final String messageKey;
+
+ /**
+ * Constructor
+ * <p>
+ * @param messageKey Message key for this enum
+ */
+ private AddressbokStatus (final String messageKey) {
+ this.messageKey = messageKey;
+ }
+
+ /**
+ * Getter for message key
+ * <p>
+ * @return Message key
+ */
+ public String getMessageKey () {
+ return this.messageKey;
+ }
+
+}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.events.addressbook;
-
-import org.mxchange.jaddressbookcore.model.addressbook.Addressbook;
-
-/**
- * An event fired when an address book has been loaded
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public class AddressbookLoadedEvent implements ObservableAddressbookLoadedEvent {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 48_305_823_537_427_713L;
-
- /**
- * Adress book instance causing this event
- */
- private final Addressbook addressbook;
-
- /**
- * Constructor with address book instance
- * <p>
- * @param addressbook Address book instance
- */
- public AddressbookLoadedEvent (final Addressbook addressbook) {
- this.addressbook = addressbook;
- }
-
- @Override
- public Addressbook getAddressbook () {
- return this.addressbook;
- }
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.events.addressbook;
-
-import java.io.Serializable;
-import org.mxchange.jaddressbookcore.model.addressbook.Addressbook;
-
-/**
- * An interface for an event if an address book has been loaded
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public interface ObservableAddressbookLoadedEvent extends Serializable {
-
- /**
- * Getter for address book instance
- * <p>
- * @return Address book instance
- */
- Addressbook getAddressbook ();
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.events.sharing;
-
-import org.mxchange.jaddressbookcore.events.sharing.type.SharingType;
-import org.mxchange.jaddressbookcore.model.addressbook.shared.ShareableAddressbook;
-
-/**
- * An event fired when a user ends sharing address books
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public class EndedAddressbookSharingEvent implements ObservableAddressbookSharingEvent {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 152_896_748_186_018_497L;
-
- /**
- * Shared address book entry
- */
- private final ShareableAddressbook shareableAddressbook;
-
- /**
- * Constructor with address book share entry
- * <p>
- * @param share Address book share entry
- */
- public EndedAddressbookSharingEvent (final ShareableAddressbook share) {
- this.shareableAddressbook = share;
- }
-
- @Override
- public ShareableAddressbook getShareableAddressbook () {
- return this.shareableAddressbook;
- }
-
- @Override
- public SharingType getSharingType () {
- // Started sharing
- return SharingType.ENDED;
- }
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.events.sharing;
-
-import java.io.Serializable;
-import org.mxchange.jaddressbookcore.events.sharing.type.SharingType;
-import org.mxchange.jaddressbookcore.model.addressbook.shared.ShareableAddressbook;
-
-/**
- * An interface for address book sharing events
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public interface ObservableAddressbookSharingEvent extends Serializable {
-
- /**
- * Getter for address book share instance
- * <p>
- * @return Address book share instance
- */
- ShareableAddressbook getShareableAddressbook ();
-
- /**
- * Getter for sharing type enum
- * <p>
- * @return Sharing type enum
- */
- SharingType getSharingType ();
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.events.sharing;
-
-import org.mxchange.jaddressbookcore.events.sharing.type.SharingType;
-import org.mxchange.jaddressbookcore.model.addressbook.shared.ShareableAddressbook;
-
-/**
- * An event fired when a user starts sharing address books
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public class StartedAddressbookSharingEvent implements ObservableAddressbookSharingEvent {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 152_896_748_186_018_497L;
-
- /**
- * Shared address book entry
- */
- private final ShareableAddressbook shareableAddressbook;
-
- /**
- * Constructor with address book share entry
- * <p>
- * @param share Address book share entry
- */
- public StartedAddressbookSharingEvent (final ShareableAddressbook share) {
- this.shareableAddressbook = share;
- }
-
- @Override
- public ShareableAddressbook getShareableAddressbook () {
- return this.shareableAddressbook;
- }
-
- @Override
- public SharingType getSharingType () {
- // Started sharing
- return SharingType.STARTED;
- }
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.events.sharing.type;
-
-/**
- * An enumeration for sharing types
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public enum SharingType {
-
- /**
- * Sharing has been started
- */
- STARTED,
-
- /**
- * Sharing has been ended
- */
- ENDED;
-
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.exceptions;
-
-import java.text.MessageFormat;
-import org.mxchange.jaddressbookcore.model.addressbook.Addressbook;
-
-/**
- * An exception thrown when the user has already used the name.
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public class AddressbookNameAlreadyUsedException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 58_169_748_928_767_381L;
-
- /**
- * Constructor with address book instance
- * <p>
- * @param addressbook Address book instance
- */
- public AddressbookNameAlreadyUsedException (final Addressbook addressbook) {
- super(MessageFormat.format("User {0} has already used the name {1}.", addressbook.getAddressbookUser(), addressbook.getAddressbookName())); //NOI18N
- }
-
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.exceptions;
-
-import java.text.MessageFormat;
-
-/**
- * An exception thrown when the address book's id number is not valid, so no
- * address book can be found.
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public class AddressbookNotFoundException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 14_986_976_417_658_920L;
-
- /**
- * Creates an exception with given id number that could not be found.
- * <p>
- * @param addressbookId Address book id number
- */
- public AddressbookNotFoundException (final Long addressbookId) {
- super(MessageFormat.format("Address book with id number {0} does not exist.", addressbookId));
- }
-
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.exceptions;
-
-import java.text.MessageFormat;
-import org.mxchange.jaddressbookcore.model.addressbook.Addressbook;
-import org.mxchange.jusercore.model.user.User;
-
-/**
- * An exception thrown whent the address book is already shared with given user
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public class UserAlreadySharingAddressbookException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 58_528_177_571_976_034L;
-
- /**
- * Constructor with address book being already shared with sharee
- * <p>
- * @param addressbook Address book instance
- * @param sharee User instance the address book is being shared with
- */
- public UserAlreadySharingAddressbookException (final Addressbook addressbook, final User sharee) {
- super(MessageFormat.format("Address book id {0} owned by user {1} is already shared with user {2}", addressbook.getAddressbookId(), addressbook.getAddressbookUser().getUserId(), sharee.getUserId()));
- }
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.model.addressbook;
-
-import java.io.Serializable;
-import java.util.Calendar;
-import org.mxchange.jaddressbookcore.model.addressbook.status.AddressbokStatus;
-import org.mxchange.jusercore.model.user.User;
-
-/**
- * A POJI for addressbooks
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public interface Addressbook extends Serializable {
-
- /**
- * Getter for id number
- * <p>
- * @return Id number
- */
- Long getAddressbookId ();
-
- /**
- * Setter for id number
- * <p>
- * @param addressbookId Id number
- */
- void setAddressbookId (final Long addressbookId);
-
- /**
- * Getter for addressbook creation timestamp
- * <p>
- * @return Addressbook creation timestamp
- */
- Calendar getAddressbookCreated ();
-
- /**
- * Setter for addressbook creation timestamp
- * <p>
- * @param addressbookCreated Addressbook creation timestamp
- */
- void setAddressbookCreated (final Calendar addressbookCreated);
-
- /**
- * Getter for addressbook's name
- * <p>
- * @return Addressbook's name
- */
- String getAddressbookName ();
-
- /**
- * Setter for addressbook's name
- * <p>
- * @param addressbookName Addressbook's name
- */
- void setAddressbookName (final String addressbookName);
-
- /**
- * Getter for addressbook status
- * <p>
- * @return Addressbook status
- */
- AddressbokStatus getAddressbookStatus ();
-
- /**
- * Setter for addressbook status
- * <p>
- * @param addressbookStatus Addressbook status
- */
- void setAddressbookStatus (final AddressbokStatus addressbookStatus);
-
- /**
- * Getter for addressbook's user (owner)
- * <p>
- * @return Addressbook's user (owner)
- */
- User getAddressbookUser ();
-
- /**
- * Setter for addressbook's user (owner)
- * <p>
- * @param addressbookUser Addressbook's user (owner)
- */
- void setAddressbookUser (final User addressbookUser);
-
- /**
- * Getter for last locked timestamp
- * <p>
- * @return Last locked timestamp
- */
- Calendar getAddressbookLastLocked ();
-
- /**
- * Setter for last locked timestamp
- * <p>
- * @param addressbookLastLocked Last locked timestamp
- */
- void setAddressbookLastLocked (final Calendar addressbookLastLocked);
-
- /**
- * Getter for last locked reason
- * <p>
- * @return Last locked reason
- */
- String getAddressbookLastLockedReason ();
-
- /**
- * Getter for last locked reason
- * <p>
- * @param addressbookLastLockedReason Last locked reason
- */
- void setAddressbookLastLockedReason (final String addressbookLastLockedReason);
-
- @Override
- boolean equals (final Object object);
-
- @Override
- int hashCode ();
-
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.model.addressbook;
-
-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.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 javax.persistence.Transient;
-import org.mxchange.jaddressbookcore.model.addressbook.status.AddressbokStatus;
-import org.mxchange.jusercore.model.user.LoginUser;
-import org.mxchange.jusercore.model.user.User;
-
-/**
- * A POJO for user addressbooks
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-@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 = "SearchAddressbookById", query = "SELECT a FROM addressbooks AS a WHERE a.addressbookId = :id")
- }
-)
-@SuppressWarnings ("PersistenceUnitPresent")
-public class UserAddressbook implements Addressbook {
-
- /**
- * Serial number
- */
- @Transient
- 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
- */
- @Id
- @GeneratedValue (strategy = GenerationType.IDENTITY)
- @Column (name = "addressbook_id", nullable = false, updatable = false)
- private Long addressbookId;
-
- /**
- * Last locked timestamp
- */
- @Temporal (TemporalType.TIMESTAMP)
- @Column (name = "addressbook_last_locked")
- private Calendar addressbookLastLocked;
-
- /**
- * Last locked timestamp
- */
- @Lob
- @Column (name = "addressbook_last_locked_reason")
- private String addressbookLastLockedReason;
-
- /**
- * Name for this address book
- */
- @Basic (optional = false)
- @Column (name = "addressbook_name", length = 50, nullable = false)
- private String addressbookName;
-
- /**
- * Adress book status
- */
- @Basic (optional = false)
- @Enumerated (EnumType.STRING)
- @Column (name = "addressbook_status", nullable = false, length = 10)
- private AddressbokStatus addressbookStatus;
-
- /**
- * Connection to "users" table
- */
- @JoinColumn (name = "addressbook_user_id", nullable = false)
- @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
- private User addressbookUser;
-
- /**
- * Public constructor with address book name
- * <p>
- * @param addressbookName Address book name
- * @param addressbookUser User instance
- */
- public UserAddressbook (final String addressbookName, final User addressbookUser) {
- // Call default constructor
- this();
-
- // Set name and user instance
- this.addressbookName = addressbookName;
- this.addressbookUser = addressbookUser;
- }
-
- /**
- * Default constructor
- */
- public UserAddressbook () {
- // Set status to UNLOCKED
- this.addressbookStatus = AddressbokStatus.UNLOCKED;
- }
-
- @Override
- public boolean equals (final Object object) {
- if (null == object) {
- return false;
- } else if (this.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 int hashCode () {
- int hash = 7;
- hash = 59 * hash + Objects.hashCode(this.getAddressbookName());
- hash = 59 * hash + Objects.hashCode(this.getAddressbookUser());
- return hash;
- }
-
- @Override
- public Calendar getAddressbookCreated () {
- return this.addressbookCreated;
- }
-
- @Override
- public void setAddressbookCreated (final Calendar addressbookCreated) {
- this.addressbookCreated = addressbookCreated;
- }
-
- @Override
- public Long getAddressbookId () {
- return this.addressbookId;
- }
-
- @Override
- public void setAddressbookId (final Long addressbookId) {
- this.addressbookId = addressbookId;
- }
-
- @Override
- public Calendar getAddressbookLastLocked () {
- return this.addressbookLastLocked;
- }
-
- @Override
- public void setAddressbookLastLocked (final Calendar addressbookLastLocked) {
- this.addressbookLastLocked = addressbookLastLocked;
- }
-
- @Override
- public String getAddressbookLastLockedReason () {
- return this.addressbookLastLockedReason;
- }
-
- @Override
- public void setAddressbookLastLockedReason (final String addressbookLastLockedReason) {
- this.addressbookLastLockedReason = addressbookLastLockedReason;
- }
-
- @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;
- }
-
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.model.addressbook.entry;
-
-import java.io.Serializable;
-import java.util.Calendar;
-import org.mxchange.jaddressbookcore.model.addressbook.Addressbook;
-import org.mxchange.jcontacts.contact.Contact;
-import org.mxchange.jcontactsbusiness.BusinessContact;
-
-/**
- * A POJI for addressbook entries
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public interface AddressbookEntry extends Serializable {
-
- /**
- * Getter for id number
- * <p>
- * @return Id number
- */
- Long getAddressbookEntryId ();
-
- /**
- * Setter for id number
- * <p>
- * @param addressbookEntryId Id number
- */
- void setAddressbookEntryId (final Long addressbookEntryId);
-
- /**
- * Getter for business contact
- * <p>
- * @return Business contact
- */
- BusinessContact getAddressbookEntryBusinessContact ();
-
- /**
- * Setter for business contact
- * <p>
- * @param addressbookEntryBusinessContact Business contact
- */
- void setAddressbookEntryBusinessContact (final BusinessContact addressbookEntryBusinessContact);
-
- /**
- * Getter for entry created timestamp
- * <p>
- * @return Entry created timestamp
- */
- Calendar getAddressbookEntryCreated ();
-
- /**
- * Setter for entry created timestamp
- * <p>
- * @param addressbookEntryCreated Entry created timestamp
- */
- void setAddressbookEntryCreated (final Calendar addressbookEntryCreated);
-
- /**
- * Getter for private contact
- * <p>
- * @return Private contact
- */
- Contact getAddressbookEntryPrivateContact ();
-
- /**
- * Setter for private contact
- * <p>
- * @param addressbookEntryPrivateContact Private contact
- */
- void setAddressbookEntryPrivateContact (final Contact addressbookEntryPrivateContact);
-
- /**
- * Getter for address book
- * <p>
- * @return Address book
- */
- Addressbook getAddressbookId ();
-
- /**
- * Setter for address book
- * <p>
- * @param addressbookId Address book
- */
- void setAddressbookId (final Addressbook addressbookId);
-
- @Override
- boolean equals (final Object object);
-
- @Override
- int hashCode ();
-
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.model.addressbook.entry;
-
-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.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 javax.persistence.Transient;
-import org.mxchange.jaddressbookcore.model.addressbook.Addressbook;
-import org.mxchange.jaddressbookcore.model.addressbook.UserAddressbook;
-import org.mxchange.jcontacts.contact.Contact;
-import org.mxchange.jcontacts.contact.UserContact;
-import org.mxchange.jcontactsbusiness.BusinessContact;
-import org.mxchange.jcontactsbusiness.CompanyContact;
-
-/**
- * A POJO for address book entries
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-@Entity (name = "addressbook_entries")
-@Table (name = "addressbook_entries")
-@NamedQueries (
- @NamedQuery (
- name = "SearchUsersAddressbookEntries",
- query = "SELECT e FROM addressbook_entries AS e INNER JOIN addressbooks AS a ON e.addressbookId = a WHERE e.addressbookId = :addressbook AND a.addressbookUser = :owner ORDER BY e.addressbookEntryId ASC")
-)
-@SuppressWarnings ("PersistenceUnitPresent")
-public class UserAddressbookEntry implements AddressbookEntry {
-
- /**
- * Serial number
- */
- @Transient
- private static final long serialVersionUID = 178_581_768_581_960L;
-
- /**
- * Connection to table "business_contacts" (commercial contacts)
- */
- @JoinColumn (name = "entry_business_contact_id", updatable = false)
- @OneToOne (targetEntity = CompanyContact.class, cascade = CascadeType.REFRESH)
- private BusinessContact addressbookEntryBusinessContact;
-
- /**
- * When this address book entry has been created
- */
- @Basic (optional = false)
- @Temporal (TemporalType.TIMESTAMP)
- @Column (name = "entry_created", nullable = false, updatable = false)
- private Calendar addressbookEntryCreated;
-
- /**
- * Id number
- */
- @Id
- @GeneratedValue (strategy = GenerationType.IDENTITY)
- @Column (name = "entry_id", nullable = false, updatable = false)
- private Long addressbookEntryId;
-
- /**
- * Connection to table "contacts" (private contacts)
- */
- @JoinColumn (name = "entry_private_contact_id", updatable = false)
- @OneToOne (targetEntity = UserContact.class, cascade = CascadeType.REFRESH)
- private Contact addressbookEntryPrivateContact;
-
- /**
- * Connection to table "addressbooks"
- */
- @JoinColumn (name = "entry_addressbook_id", nullable = false, updatable = false)
- @OneToOne (targetEntity = UserAddressbook.class, cascade = CascadeType.REFRESH, optional = false)
- private Addressbook addressbookId;
-
- @Override
- public boolean equals (final Object object) {
- if (null == object) {
- return false;
- } else if (this.getClass() != object.getClass()) {
- return false;
- }
-
- final AddressbookEntry other = (AddressbookEntry) object;
-
- if (!Objects.equals(this.getAddressbookEntryBusinessContact(), other.getAddressbookEntryBusinessContact())) {
- return false;
- } else if (!Objects.equals(this.getAddressbookEntryPrivateContact(), other.getAddressbookEntryPrivateContact())) {
- return false;
- } else if (!Objects.equals(this.getAddressbookId(), other.getAddressbookId())) {
- return false;
- }
-
- return true;
- }
-
- @Override
- public int hashCode () {
- int hash = 3;
-
- hash = 19 * hash + Objects.hashCode(this.getAddressbookEntryBusinessContact());
- hash = 19 * hash + Objects.hashCode(this.getAddressbookEntryPrivateContact());
- hash = 19 * hash + Objects.hashCode(this.getAddressbookId());
-
- return hash;
- }
-
- @Override
- public BusinessContact getAddressbookEntryBusinessContact () {
- return this.addressbookEntryBusinessContact;
- }
-
- @Override
- public void setAddressbookEntryBusinessContact (final BusinessContact addressbookEntryBusinessContact) {
- this.addressbookEntryBusinessContact = addressbookEntryBusinessContact;
- }
-
- @Override
- @SuppressWarnings ("ReturnOfDateField")
- public Calendar getAddressbookEntryCreated () {
- return this.addressbookEntryCreated;
- }
-
- @Override
- @SuppressWarnings ("AssignmentToDateFieldFromParameter")
- public void setAddressbookEntryCreated (final Calendar addressbookEntryCreated) {
- this.addressbookEntryCreated = addressbookEntryCreated;
- }
-
- @Override
- public Long getAddressbookEntryId () {
- return this.addressbookEntryId;
- }
-
- @Override
- public void setAddressbookEntryId (final Long addressbookEntryId) {
- this.addressbookEntryId = addressbookEntryId;
- }
-
- @Override
- public Contact getAddressbookEntryPrivateContact () {
- return this.addressbookEntryPrivateContact;
- }
-
- @Override
- public void setAddressbookEntryPrivateContact (final Contact addressbookEntryPrivateContact) {
- this.addressbookEntryPrivateContact = addressbookEntryPrivateContact;
- }
-
- @Override
- public Addressbook getAddressbookId () {
- return this.addressbookId;
- }
-
- @Override
- public void setAddressbookId (final Addressbook addressbookId) {
- this.addressbookId = addressbookId;
- }
-
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.model.addressbook.shared;
-
-import java.text.MessageFormat;
-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.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 javax.persistence.Transient;
-import org.mxchange.jaddressbookcore.model.addressbook.Addressbook;
-import org.mxchange.jaddressbookcore.model.addressbook.UserAddressbook;
-import org.mxchange.jusercore.model.user.LoginUser;
-import org.mxchange.jusercore.model.user.User;
-
-/**
- * A POJO for sharing address books with other users
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-@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"
- )
- }
-)
-@SuppressWarnings ("PersistenceUnitPresent")
-public class AddressbookShare implements ShareableAddressbook {
-
- /**
- * Serial number
- */
- @Transient
- private static final long serialVersionUID = 167_889_678_177_691_690L;
-
- /**
- * Address book this share is for
- */
- @JoinColumn (name = "share_addressbook_id", nullable = false, updatable = false)
- @OneToOne (targetEntity = UserAddressbook.class, cascade = CascadeType.REFRESH, optional = false)
- private Addressbook shareAddressbook;
-
- /**
- * When this share has been created
- */
- @Basic (optional = false)
- @Temporal (TemporalType.TIMESTAMP)
- @Column (name = "share_created", nullable = false, updatable = false)
- private Calendar shareCreated;
-
- /**
- * Id number
- */
- @Id
- @GeneratedValue (strategy = GenerationType.IDENTITY)
- @Column (name = "share_id", nullable = false, updatable = false)
- private Long shareId;
-
- /**
- * User who is owning the share
- */
- @JoinColumn (name = "share_owner_id", nullable = false, updatable = false)
- @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
- private User shareUserOwner;
-
- /**
- * User the address book is shared with
- */
- @JoinColumn (name = "share_sharee_id", nullable = false, updatable = false)
- @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
- private User shareUserSharee;
-
- /**
- * Default constructor
- */
- public AddressbookShare () {
- }
-
- /**
- * Constructor with address book and sharee instance. Both parameters must
- * not be null, their id numbers must be set and the adress book's user
- * instance must be set and have a valid id set.
- * <p>
- * @param addressbook Address book instance
- * @param sharee User sharee instance
- */
- public AddressbookShare (final Addressbook addressbook, final User sharee) {
- // Call default 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;
- }
-
- @Override
- public boolean equals (final Object object) {
- if (null == object) {
- return false;
- } else if (this.getClass() != object.getClass()) {
- return false;
- }
-
- final ShareableAddressbook other = (ShareableAddressbook) object;
-
- if (!Objects.equals(this.getShareAddressbook(), other.getShareAddressbook())) {
- return false;
- } else if (!Objects.equals(this.getShareUserOwner(), other.getShareUserOwner())) {
- return false;
- } else if (!Objects.equals(this.getShareUserOwner(), other.getShareUserOwner())) {
- return false;
- }
-
- return Objects.equals(this.getShareUserSharee(), other.getShareUserSharee());
- }
-
- @Override
- public int hashCode () {
- int hash = 7;
- hash = 19 * hash + Objects.hashCode(this.getShareAddressbook());
- hash = 19 * hash + Objects.hashCode(this.getShareUserOwner());
- hash = 19 * hash + Objects.hashCode(this.getShareUserSharee());
- return hash;
- }
-
- @Override
- public Addressbook getShareAddressbook () {
- return this.shareAddressbook;
- }
-
- @Override
- public void setShareAddressbook (final Addressbook shareAddressbook) {
- this.shareAddressbook = shareAddressbook;
- }
-
- @Override
- @SuppressWarnings ("ReturnOfDateField")
- public Calendar getShareCreated () {
- return this.shareCreated;
- }
-
- @Override
- @SuppressWarnings ("AssignmentToDateFieldFromParameter")
- public void setShareCreated (final Calendar shareCreated) {
- this.shareCreated = shareCreated;
- }
-
- @Override
- public Long getShareId () {
- return this.shareId;
- }
-
- @Override
- public void setShareId (final Long shareId) {
- this.shareId = shareId;
- }
-
- @Override
- public User getShareUserOwner () {
- return this.shareUserOwner;
- }
-
- @Override
- public void setShareUserOwner (final User shareUserOwner) {
- this.shareUserOwner = shareUserOwner;
- }
-
- @Override
- public User getShareUserSharee () {
- return this.shareUserSharee;
- }
-
- @Override
- public void setShareUserSharee (final User shareUserSharee) {
- this.shareUserSharee = shareUserSharee;
- }
-
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.model.addressbook.shared;
-
-import java.io.Serializable;
-import java.util.Calendar;
-import org.mxchange.jaddressbookcore.model.addressbook.Addressbook;
-import org.mxchange.jusercore.model.user.User;
-
-/**
- * A POJI for shared address books
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public interface ShareableAddressbook extends Serializable {
-
- /**
- * Getter for shared address book instance
- * <p>
- * @return Shared address book instance
- */
- Addressbook getShareAddressbook ();
-
- /**
- * Setter for shared address book instance
- * <p>
- * @param shareAddressbook Shared address book instance
- */
- void setShareAddressbook (final Addressbook shareAddressbook);
-
- /**
- * Getter for id number
- * <p>
- * @return Id number
- */
- Long getShareId ();
-
- /**
- * Setter for id number
- * <p>
- * @param shareId Id number
- */
- void setShareId (final Long shareId);
-
- /**
- * Getter for address book owner instance
- * <p>
- * @return Address book owner instance
- */
- User getShareUserOwner ();
-
- /**
- * Setter for address book owner instance
- * <p>
- * @param shareUserOwner Address book owner instance
- */
- void setShareUserOwner (final User shareUserOwner);
-
- /**
- * Getter for address book sharee instance
- * <p>
- * @return Address book sharee instance
- */
- User getShareUserSharee ();
-
- /**
- * Setter for address book sharee instance
- * <p>
- * @param shareUserSharer Address book sharee instance
- */
- void setShareUserSharee (final User shareUserSharer);
-
- /**
- * Getter for share creation timestamp
- * <p>
- * @return Share creation timestamp
- */
- Calendar getShareCreated ();
-
- /**
- * Setter for share creation timestamp
- * <p>
- * @param shareCreated Share creation timestamp
- */
- void setShareCreated (final Calendar shareCreated);
-
- @Override
- boolean equals (final Object object);
-
- @Override
- int hashCode ();
-}
+++ /dev/null
-/*
- * 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
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jaddressbookcore.model.addressbook.status;
-
-import java.io.Serializable;
-
-/**
- * An enumeration for the addressbook status
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public enum AddressbokStatus implements Serializable {
-
- /**
- * When the addressbook is unlocked
- */
- UNLOCKED("ADDRESSBOOK_STATUS_UNLOCKED"), //NOI18N
-
- /**
- * When the addressbook is locked by administrator
- */
- LOCKED("ADDRESSBOOK_STATUS_LOCKED"); //NOI18N
-
- /**
- * Message key
- */
- private final String messageKey;
-
- /**
- * Constructor
- * <p>
- * @param messageKey Message key for this enum
- */
- private AddressbokStatus (final String messageKey) {
- this.messageKey = messageKey;
- }
-
- /**
- * Getter for message key
- * <p>
- * @return Message key
- */
- public String getMessageKey () {
- return this.messageKey;
- }
-
-}