From 50fefc73d1ad8e2301d0f8fb77c0fd1ee0b5760b Mon Sep 17 00:00:00 2001
From: Roland Haeder <roland@mxchange.org>
Date: Fri, 9 Oct 2015 21:33:57 +0200
Subject: [PATCH] Continued: - added constructor with address book name - added
 Exception AddressbookNameAlreadyUsedException - added new business methods
 createAddressbook() and isAddressbookNameUsed()

---
 .../AddressbookNameAlreadyUsedException.java  | 38 +++++++++++++++++++
 .../AddressbookSessionBeanRemote.java         | 25 +++++++++++-
 .../model/addressbook/UserAddressbook.java    |  8 ++++
 3 files changed, 70 insertions(+), 1 deletion(-)
 create mode 100644 src/org/mxchange/addressbook/exceptions/AddressbookNameAlreadyUsedException.java

diff --git a/src/org/mxchange/addressbook/exceptions/AddressbookNameAlreadyUsedException.java b/src/org/mxchange/addressbook/exceptions/AddressbookNameAlreadyUsedException.java
new file mode 100644
index 00000000..cb8f4d9e
--- /dev/null
+++ b/src/org/mxchange/addressbook/exceptions/AddressbookNameAlreadyUsedException.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2015 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.addressbook.exceptions;
+
+import java.text.MessageFormat;
+import org.mxchange.addressbook.model.addressbook.Addressbook;
+
+/**
+ * An exception thrown when the user has already used the name.
+ * <p>
+ * @author Roland Haeder
+ */
+public class AddressbookNameAlreadyUsedException extends Exception {
+
+	/**
+	 * 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
+	}
+
+}
diff --git a/src/org/mxchange/addressbook/model/addressbook/AddressbookSessionBeanRemote.java b/src/org/mxchange/addressbook/model/addressbook/AddressbookSessionBeanRemote.java
index b8f3c43e..3ec1bcc8 100644
--- a/src/org/mxchange/addressbook/model/addressbook/AddressbookSessionBeanRemote.java
+++ b/src/org/mxchange/addressbook/model/addressbook/AddressbookSessionBeanRemote.java
@@ -19,6 +19,7 @@ package org.mxchange.addressbook.model.addressbook;
 import java.io.Serializable;
 import java.util.List;
 import javax.ejb.Remote;
+import org.mxchange.addressbook.exceptions.AddressbookNameAlreadyUsedException;
 import org.mxchange.jusercore.model.user.User;
 
 /**
@@ -33,7 +34,29 @@ public interface AddressbookSessionBeanRemote extends Serializable {
 	 * Some "getter" for a list of address books the logged-in user has created
 	 * <p>
 	 * @param loggedInUser Logged-in user
+	 * <p>
 	 * @return List of all address books
 	 */
-	public List<Addressbook> getUsersList (final User loggedInUser);
+	public List<Addressbook> getUsersList(final User loggedInUser);
+
+	/**
+	 * Creates given address book by persisting it. A User instance must be set,
+	 * else an exception is thrown.
+	 * <p>
+	 * @param addressbook Address book instance to create
+	 * <p>
+	 * @return Updated address book instance
+	 * <p>
+	 * @throws org.mxchange.addressbook.exceptions.AddressbookNameAlreadyUsedException If the address book's name has already been used by the user.
+	 */
+	public Addressbook createAddressbook(final Addressbook addressbook) throws AddressbookNameAlreadyUsedException;
+
+	/**
+	 * Checks if the given address book's name is already used by the user.
+	 * <p>
+	 * @param addressbook Address bok instance to check
+	 * <p>
+	 * @return Whether the name has already been used by the user
+	 */
+	public boolean isAddressbookNameUsed(final Addressbook addressbook);
 }
diff --git a/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java b/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java
index 730e9498..05dda5ad 100644
--- a/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java
+++ b/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java
@@ -94,6 +94,14 @@ public class UserAddressbook implements Addressbook, Comparable<Addressbook> {
 	@Column (name = "addressbook_name", length = 50, nullable = false)
 	private String addressbookName;
 
+	/**
+	 * Public constructor with address book name
+	 * @param addressbookName Address book name
+	 */
+	public UserAddressbook(final String addressbookName) {
+		this.addressbookName = addressbookName;
+	}
+
 	@Override
 	public int compareTo (final Addressbook addressbook) {
 		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-- 
2.39.5