From 6cb59918984a02375351dfc260d90492d4a780d9 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Sat, 9 Apr 2016 13:12:47 +0200 Subject: [PATCH] Created generic customer core (model classes/interfaces, POJOs/POJIs) based on jshop-core --- build.xml | 6 +- nbproject/build-impl.xml | 10 +- nbproject/project.properties | 4 +- nbproject/project.xml | 2 +- .../CustomerAlreadyRegisteredException.java | 4 +- .../model/customer/Customer.java | 4 +- .../status/CustomerAccountStatus.java | 2 +- .../BasketItemAlreadyAddedException.java | 45 ---- .../CannotAddCategoryException.java | 41 --- .../exceptions/CannotAddProductException.java | 41 --- .../CategoryTitleAlreadyUsedException.java | 43 ---- .../ProductTitleAlreadyUsedException.java | 43 ---- .../model/basket/AddableBasketItem.java | 97 ------- .../jshopcore/model/basket/BaseBasket.java | 140 ---------- .../jshopcore/model/basket/Basket.java | 83 ------ .../jshopcore/model/basket/ShopBasket.java | 38 --- .../model/basket/items/BaseItem.java | 69 ----- .../model/basket/items/BasketItem.java | 163 ------------ .../jshopcore/model/category/Category.java | 76 ------ .../model/category/ProductCategory.java | 122 --------- .../model/customer/CustomerUtils.java | 147 ----------- .../model/customer/ShopCustomer.java | 239 ------------------ .../jshopcore/model/order/Orderable.java | 101 -------- .../jshopcore/model/order/ShopOrder.java | 137 ---------- .../model/order/items/OrderItem.java | 160 ------------ .../model/product/GenericProduct.java | 192 -------------- .../jshopcore/model/product/Product.java | 111 -------- .../jshopcore/wrapper/CheckoutWrapper.java | 71 ------ .../jshopcore/wrapper/WrapableCheckout.java | 58 ----- 29 files changed, 16 insertions(+), 2233 deletions(-) rename src/org/mxchange/{jshopcore => jcustomercore}/exceptions/CustomerAlreadyRegisteredException.java (93%) rename src/org/mxchange/{jshopcore => jcustomercore}/model/customer/Customer.java (96%) rename src/org/mxchange/{jshopcore => jcustomercore}/model/customer/status/CustomerAccountStatus.java (96%) delete mode 100644 src/org/mxchange/jshopcore/exceptions/BasketItemAlreadyAddedException.java delete mode 100644 src/org/mxchange/jshopcore/exceptions/CannotAddCategoryException.java delete mode 100644 src/org/mxchange/jshopcore/exceptions/CannotAddProductException.java delete mode 100644 src/org/mxchange/jshopcore/exceptions/CategoryTitleAlreadyUsedException.java delete mode 100644 src/org/mxchange/jshopcore/exceptions/ProductTitleAlreadyUsedException.java delete mode 100644 src/org/mxchange/jshopcore/model/basket/AddableBasketItem.java delete mode 100644 src/org/mxchange/jshopcore/model/basket/BaseBasket.java delete mode 100644 src/org/mxchange/jshopcore/model/basket/Basket.java delete mode 100644 src/org/mxchange/jshopcore/model/basket/ShopBasket.java delete mode 100644 src/org/mxchange/jshopcore/model/basket/items/BaseItem.java delete mode 100644 src/org/mxchange/jshopcore/model/basket/items/BasketItem.java delete mode 100644 src/org/mxchange/jshopcore/model/category/Category.java delete mode 100644 src/org/mxchange/jshopcore/model/category/ProductCategory.java delete mode 100644 src/org/mxchange/jshopcore/model/customer/CustomerUtils.java delete mode 100644 src/org/mxchange/jshopcore/model/customer/ShopCustomer.java delete mode 100644 src/org/mxchange/jshopcore/model/order/Orderable.java delete mode 100644 src/org/mxchange/jshopcore/model/order/ShopOrder.java delete mode 100644 src/org/mxchange/jshopcore/model/order/items/OrderItem.java delete mode 100644 src/org/mxchange/jshopcore/model/product/GenericProduct.java delete mode 100644 src/org/mxchange/jshopcore/model/product/Product.java delete mode 100644 src/org/mxchange/jshopcore/wrapper/CheckoutWrapper.java delete mode 100644 src/org/mxchange/jshopcore/wrapper/WrapableCheckout.java diff --git a/build.xml b/build.xml index c213c8a..ff835d0 100644 --- a/build.xml +++ b/build.xml @@ -7,8 +7,8 @@ - - Builds, tests, and runs the project jshop-core. + + Builds, tests, and runs the project jcustomer-core. - + @@ -468,7 +468,7 @@ is divided into following sections: - + @@ -619,7 +619,7 @@ is divided into following sections: - + @@ -911,7 +911,7 @@ is divided into following sections: - + @@ -1396,7 +1396,7 @@ is divided into following sections: - + diff --git a/nbproject/project.properties b/nbproject/project.properties index fda24af..c7f1952 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -3,7 +3,7 @@ annotation.processing.enabled.in.editor=true annotation.processing.processors.list= annotation.processing.run.all.processors=true annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output -application.title=jshop-core +application.title=jcustomer-core application.vendor=Roland Haeder auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml build.classes.dir=${build.dir}/classes @@ -26,7 +26,7 @@ debug.test.classpath=\ dist.archive.excludes= # This directory is removed when the project is cleaned: dist.dir=dist -dist.jar=${dist.dir}/jshop-core.jar +dist.jar=${dist.dir}/jcustomer-core.jar dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= diff --git a/nbproject/project.xml b/nbproject/project.xml index 5c51ec6..414d414 100644 --- a/nbproject/project.xml +++ b/nbproject/project.xml @@ -3,7 +3,7 @@ org.netbeans.modules.java.j2seproject - jshop-core + jcustomer-core diff --git a/src/org/mxchange/jshopcore/exceptions/CustomerAlreadyRegisteredException.java b/src/org/mxchange/jcustomercore/exceptions/CustomerAlreadyRegisteredException.java similarity index 93% rename from src/org/mxchange/jshopcore/exceptions/CustomerAlreadyRegisteredException.java rename to src/org/mxchange/jcustomercore/exceptions/CustomerAlreadyRegisteredException.java index 9c582d5..ff42b89 100644 --- a/src/org/mxchange/jshopcore/exceptions/CustomerAlreadyRegisteredException.java +++ b/src/org/mxchange/jcustomercore/exceptions/CustomerAlreadyRegisteredException.java @@ -14,10 +14,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.mxchange.jshopcore.exceptions; +package org.mxchange.jcustomercore.exceptions; import java.text.MessageFormat; -import org.mxchange.jshopcore.model.customer.Customer; +import org.mxchange.jcustomercore.model.customer.Customer; /** * An exception thrown when the customer is already registered diff --git a/src/org/mxchange/jshopcore/model/customer/Customer.java b/src/org/mxchange/jcustomercore/model/customer/Customer.java similarity index 96% rename from src/org/mxchange/jshopcore/model/customer/Customer.java rename to src/org/mxchange/jcustomercore/model/customer/Customer.java index d2bd2b3..804a208 100644 --- a/src/org/mxchange/jshopcore/model/customer/Customer.java +++ b/src/org/mxchange/jcustomercore/model/customer/Customer.java @@ -14,12 +14,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.mxchange.jshopcore.model.customer; +package org.mxchange.jcustomercore.model.customer; import java.io.Serializable; import java.util.Calendar; import org.mxchange.jcontacts.contact.Contact; -import org.mxchange.jshopcore.model.customer.status.CustomerAccountStatus; +import org.mxchange.jcustomercore.model.customer.status.CustomerAccountStatus; /** * A customer interface diff --git a/src/org/mxchange/jshopcore/model/customer/status/CustomerAccountStatus.java b/src/org/mxchange/jcustomercore/model/customer/status/CustomerAccountStatus.java similarity index 96% rename from src/org/mxchange/jshopcore/model/customer/status/CustomerAccountStatus.java rename to src/org/mxchange/jcustomercore/model/customer/status/CustomerAccountStatus.java index 1606ac5..2b34839 100644 --- a/src/org/mxchange/jshopcore/model/customer/status/CustomerAccountStatus.java +++ b/src/org/mxchange/jcustomercore/model/customer/status/CustomerAccountStatus.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.mxchange.jshopcore.model.customer.status; +package org.mxchange.jcustomercore.model.customer.status; import java.io.Serializable; diff --git a/src/org/mxchange/jshopcore/exceptions/BasketItemAlreadyAddedException.java b/src/org/mxchange/jshopcore/exceptions/BasketItemAlreadyAddedException.java deleted file mode 100644 index ae227f4..0000000 --- a/src/org/mxchange/jshopcore/exceptions/BasketItemAlreadyAddedException.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.exceptions; - -import java.text.MessageFormat; -import org.mxchange.jshopcore.model.basket.AddableBasketItem; - -/** - * An exception thrown when the given item is already added to the - * basketController. - *

- * @author Roland Haeder - */ -public class BasketItemAlreadyAddedException extends Exception { - - /** - * Serial number - */ - private static final long serialVersionUID = 64_828_391_485_785_167L; - - /** - * Constructor with item instance T - *

- * @param Any item that is or extends the interface - * @param item An instance of a T item - */ - public BasketItemAlreadyAddedException (final T item) { - // Create message and pass it along - super(MessageFormat.format("Item {0} has already been added. Did you miss to call isAdded()?", item)); - } -} diff --git a/src/org/mxchange/jshopcore/exceptions/CannotAddCategoryException.java b/src/org/mxchange/jshopcore/exceptions/CannotAddCategoryException.java deleted file mode 100644 index 896e4a4..0000000 --- a/src/org/mxchange/jshopcore/exceptions/CannotAddCategoryException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.exceptions; - -/** - * An exception thrown when the category cannot be added for a "low level" - * reason. - *

- * @author Roland Haeder - */ -public class CannotAddCategoryException extends Exception { - - /** - * Serial number - */ - private static final long serialVersionUID = 34_295_843_957_951L; - - /** - * Constructor with cause - *

- * @param cause Causing exception - */ - public CannotAddCategoryException (final Throwable cause) { - // Call super constructor - super(cause); - } -} diff --git a/src/org/mxchange/jshopcore/exceptions/CannotAddProductException.java b/src/org/mxchange/jshopcore/exceptions/CannotAddProductException.java deleted file mode 100644 index 0d8f98f..0000000 --- a/src/org/mxchange/jshopcore/exceptions/CannotAddProductException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.exceptions; - -/** - * An exception thrown when the product cannot be added for a "low level" - * reason. - *

- * @author Roland Haeder - */ -public class CannotAddProductException extends Exception { - - /** - * Serial number - */ - private static final long serialVersionUID = 48_574_857_485_748_175L; - - /** - * Constructor with cause - *

- * @param cause Causing exception - */ - public CannotAddProductException (final Throwable cause) { - // Call super constructor - super(cause); - } -} diff --git a/src/org/mxchange/jshopcore/exceptions/CategoryTitleAlreadyUsedException.java b/src/org/mxchange/jshopcore/exceptions/CategoryTitleAlreadyUsedException.java deleted file mode 100644 index f42bd63..0000000 --- a/src/org/mxchange/jshopcore/exceptions/CategoryTitleAlreadyUsedException.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.exceptions; - -import java.text.MessageFormat; -import org.mxchange.jshopcore.model.category.Category; - -/** - * An exception thrown when the given title is already used - *

- * @author Roland Haeder - */ -public class CategoryTitleAlreadyUsedException extends Exception { - - /** - * Serial number - */ - private static final long serialVersionUID = 53_751_434_673_262L; - - /** - * Constructor with HttpServletRequest instance - *

- * @param category Category instance - */ - public CategoryTitleAlreadyUsedException (final Category category) { - // Call super constructor - super(MessageFormat.format("Title {0} is already used.", category.getCategoryTitle())); //NOI18N - } -} diff --git a/src/org/mxchange/jshopcore/exceptions/ProductTitleAlreadyUsedException.java b/src/org/mxchange/jshopcore/exceptions/ProductTitleAlreadyUsedException.java deleted file mode 100644 index d3cd006..0000000 --- a/src/org/mxchange/jshopcore/exceptions/ProductTitleAlreadyUsedException.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.exceptions; - -import java.text.MessageFormat; -import org.mxchange.jshopcore.model.product.Product; - -/** - * An exception thrown when the given title is already used - *

- * @author Roland Haeder - */ -public class ProductTitleAlreadyUsedException extends Exception { - - /** - * Serial number - */ - private static final long serialVersionUID = 4_252_734_834_174L; - - /** - * Constructor with HttpServletRequest instance - *

- * @param product Product instance - */ - public ProductTitleAlreadyUsedException (final Product product) { - // Call super constructor - super(MessageFormat.format("Title {0} is already used.", product.getProductTitle())); //NOI18N - } -} diff --git a/src/org/mxchange/jshopcore/model/basket/AddableBasketItem.java b/src/org/mxchange/jshopcore/model/basket/AddableBasketItem.java deleted file mode 100644 index 512ca7b..0000000 --- a/src/org/mxchange/jshopcore/model/basket/AddableBasketItem.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.basket; - -import java.io.Serializable; -import org.mxchange.jshopcore.model.product.Product; - -/** - * An interface for addable basket items - *

- * @author Roland Haeder - */ -public interface AddableBasketItem extends Serializable { - - /** - * Getter for item amount - *

- * @return the amount - */ - Long getOrderedAmount (); - - /** - * Setter for item amount - *

- * @param amount the amount to set - */ - void setOrderedAmount (final Long amount); - - /** - * Getter for entry id (from database backend) - *

- * @return the id - */ - Long getItemId (); - - /** - * Setter for entry id (from database backend) - *

- * @param id the id to set - */ - void setItemId (final Long id); - - /** - * Getter for item type - *

- * @return the type - */ - String getItemType (); - - /** - * Setter for item type - *

- * @param type the type to set - */ - void setItemType (final String type); - - /** - * Getter for product instance - *

- * @return the product - */ - Product getItemProduct (); - - /** - * Setter for product instance - *

- * @param product the product to set - */ - void setItemProduct (final Product product); - - /** - * Determines whether the item has a Product instance set - *

- * @return Whether a Product instance is set - */ - boolean isProductType (); - - @Override - boolean equals (final Object object); - - @Override - int hashCode (); -} diff --git a/src/org/mxchange/jshopcore/model/basket/BaseBasket.java b/src/org/mxchange/jshopcore/model/basket/BaseBasket.java deleted file mode 100644 index 8f1a80b..0000000 --- a/src/org/mxchange/jshopcore/model/basket/BaseBasket.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.basket; - -import java.util.Deque; -import java.util.LinkedList; -import java.util.List; -import org.mxchange.jshopcore.exceptions.BasketItemAlreadyAddedException; - -/** - * A general basket class. This class does not store any properties, it only - * contains logic for handling the items (T). - *

- * @author Roland Haeder - * @param Any instance that implements AddableBasketItem - */ -public abstract class BaseBasket implements Basket { - - /** - * Serial number - */ - private static final long serialVersionUID = 782_396_762_230_845_717L; - - /** - * Ordered item list - */ - private final Deque deque; - - /** - * Protected constructor with session instance - */ - protected BaseBasket () { - // Init queue - this.deque = new LinkedList<>(); - } - - @Override - public void addItem (final T item) throws BasketItemAlreadyAddedException { - // item must not be null - if (null == item) { - // Then abort here - throw new NullPointerException("item is null"); //NOI18N - } else if (this.isAdded(item)) { - // Already been added - throw new BasketItemAlreadyAddedException(item); //NOI18N - } - - // Add it here - this.deque.add(item); - } - - @Override - public void clear () { - // Deligate to deque - this.deque.clear(); - } - - @Override - public List getAll () { - // Init map - List list = new LinkedList<>(); - - // Iterate over full item list - for (final T item : this.deque) { - // item should not be null - if (null == item) { - // Abort here - throw new NullPointerException("item is null"); //NOI18N - } - - // Add to map, use the item's id as key - list.add(item); - } - - // Return it - return list; - } - - @Override - public T getLast () { - // Deligate to list - return this.deque.getLast(); - } - - @Override - public int getLastNumRows () { - // Is the list empty? - assert this.isEmpty() : "deque is empty"; //NOI18N - - // It is size-1 - return (this.deque.size() - 1); - } - - @Override - public boolean isAdded (final T item) { - // item must not be null - if (null == item) { - // Then abort here - throw new NullPointerException("item is null"); //NOI18N - } - - // Get all items - List list = this.getAll(); - - // Default is not found - boolean isAdded = false; - - // Loop through list - for (final T i : list) { - // Compare id - if (i.equals(item)) { - // Okay, found it - isAdded = true; - break; - } - } - // Return it - return isAdded; - } - - @Override - public boolean isEmpty () { - // Deligate call to frontend - return this.deque.isEmpty(); - } -} diff --git a/src/org/mxchange/jshopcore/model/basket/Basket.java b/src/org/mxchange/jshopcore/model/basket/Basket.java deleted file mode 100644 index f575076..0000000 --- a/src/org/mxchange/jshopcore/model/basket/Basket.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.basket; - -import java.io.Serializable; -import java.util.List; -import org.mxchange.jshopcore.exceptions.BasketItemAlreadyAddedException; - -/** - * An interface for baskets - *

- * @author Roland Haeder - * @param Any addable basket items - */ -public interface Basket extends Serializable { - - /** - * Adds given item instance to this basket - *

- * @param item Item instance to add - *

- * @throws org.mxchange.jshopcore.exceptions.BasketItemAlreadyAddedException - * If the item instance has already been added - */ - void addItem (final T item) throws BasketItemAlreadyAddedException; - - /** - * Clears the basket instance - */ - void clear (); - - /** - * Some "getter" for all entries in this basket - *

- * @return Map on all basket items - */ - List getAll (); - - /** - * Getter for last entry - *

- * @return Last added item in basket - */ - T getLast (); - - /** - * Getter for last num rows - *

- * @return Last num rows - */ - int getLastNumRows (); - - /** - * Checks whether the given item has already been added by checking the - * item's id. - *

- * @param item Item instance to check - *

- * @return Whether the given item has been found - */ - boolean isAdded (final T item); - - /** - * Checks if the basket is empty - *

- * @return Whether the basket is empty - */ - boolean isEmpty (); -} diff --git a/src/org/mxchange/jshopcore/model/basket/ShopBasket.java b/src/org/mxchange/jshopcore/model/basket/ShopBasket.java deleted file mode 100644 index e864520..0000000 --- a/src/org/mxchange/jshopcore/model/basket/ShopBasket.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.basket; - -/** - * A basket for orderable items - *

- * @author Roland Haeder - */ -public class ShopBasket extends BaseBasket implements Basket { - - /** - * Serial number - */ - private static final long serialVersionUID = 4_384_123_923_163_957L; - - /** - * Default constructor to be able to throw exceptions from super constructor - */ - public ShopBasket () { - // Call super constructor - super(); - } -} diff --git a/src/org/mxchange/jshopcore/model/basket/items/BaseItem.java b/src/org/mxchange/jshopcore/model/basket/items/BaseItem.java deleted file mode 100644 index 198afad..0000000 --- a/src/org/mxchange/jshopcore/model/basket/items/BaseItem.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2016 KLC - * - * 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 . - */ -package org.mxchange.jshopcore.model.basket.items; - -import java.util.Objects; -import org.mxchange.jshopcore.model.basket.AddableBasketItem; -import org.mxchange.jshopcore.model.product.Product; - -/** - * An item (addedable to a basket) could respresent a product or a discount - * coupon. This depends on the type of the item. - *

- * @author Roland Haeder - */ -public abstract class BaseItem implements AddableBasketItem { - - /** - * Serial number - */ - private static final long serialVersionUID = 24_348_671_457_829_156L; - - @Override - public boolean equals (final Object object) { - // Is it same type? - if (!(object instanceof BaseItem)) { - // Not equal types - return false; - } else if (!(object instanceof AddableBasketItem)) { - // Not correct interface - return false; - } - - // Securely cast to wanted interface - AddableBasketItem item = (AddableBasketItem) object; - - // Item id and type must be the same - return ((Objects.equals(item.getItemProduct().getProductId(), this.getItemProduct().getProductId())) && - (Objects.equals(item.getItemType(), this.getItemType()))); - } - - @Override - public int hashCode () { - int hash = 5; - hash = 29 * hash + Objects.hashCode(this.getItemProduct().getProductId()); - hash = 29 * hash + Objects.hashCode(this.getItemType()); - return hash; - } - - @Override - public boolean isProductType () { - // Is the instance set? - return (this.getItemProduct() instanceof Product); - } - -} diff --git a/src/org/mxchange/jshopcore/model/basket/items/BasketItem.java b/src/org/mxchange/jshopcore/model/basket/items/BasketItem.java deleted file mode 100644 index 6acdca7..0000000 --- a/src/org/mxchange/jshopcore/model/basket/items/BasketItem.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.basket.items; - -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.OneToOne; -import javax.persistence.Table; -import org.mxchange.jshopcore.model.basket.AddableBasketItem; -import org.mxchange.jshopcore.model.product.GenericProduct; -import org.mxchange.jshopcore.model.product.Product; - -/** - * A general basket item - *

- * @author Roland Haeder - */ -@Entity (name = "basket_items") -@Table (name = "basket_items") -public class BasketItem extends BaseItem implements AddableBasketItem { - - /** - * Serial number - */ - private static final long serialVersionUID = 52_749_158_492_581_578L; - - /** - * Entry itemId (from database backend) - */ - @Id - @GeneratedValue (strategy = GenerationType.IDENTITY) - @Column (name = "item_id", nullable = false, updatable = false) - private Long itemId; - - /** - * Product instance - */ - @JoinColumn (name = "product_id", updatable = false) - @OneToOne (targetEntity = GenericProduct.class, cascade = CascadeType.REFRESH) - private Product itemProduct; - - /** - * Item type - */ - @Basic (optional = false) - @Column (name = "item_type", nullable = false, length = 20) - private String itemType; - - /** - * Item orderedAmount - */ - @Basic (optional = false) - @Column (name = "ordered_amount", nullable = false, length = 20) - private Long orderedAmount; - - /** - * Default constructor - */ - public BasketItem () { - } - - /** - * Constructor for an item from given Product instance - *

- * @param product Product instance - */ - public BasketItem (final Product product) { - // Call default constructor - this(); - - // itemProduct must not be null - if (null == product) { - // Abort here - throw new NullPointerException("product is null"); //NOI18N - } - - // Copy all neccessary values - this.itemType = "product"; //NOI18N - - // Copy instance - this.itemProduct = product; - } - - /** - * Constructor for an item from given Product instance and orderedAmount. - *

- * @param product Product instance - * @param amount Ordered orderedAmount - */ - public BasketItem (final Product product, final Long amount) { - // Other constructor - this(product); - - // orderedAmount must not be null - if (null == amount) { - // Abort here - throw new NullPointerException("amount is null"); //NOI18N - } - - // Set orderedAmount - this.orderedAmount = amount; - } - - @Override - public Long getItemId () { - return this.itemId; - } - - @Override - public void setItemId (final Long itemId) { - this.itemId = itemId; - } - - @Override - public Product getItemProduct () { - return this.itemProduct; - } - - @Override - public void setItemProduct (final Product itemProduct) { - this.itemProduct = itemProduct; - } - - @Override - public String getItemType () { - return this.itemType; - } - - @Override - public void setItemType (final String itemType) { - this.itemType = itemType; - } - - @Override - public Long getOrderedAmount () { - return this.orderedAmount; - } - - @Override - public void setOrderedAmount (final Long orderedAmount) { - this.orderedAmount = orderedAmount; - } -} diff --git a/src/org/mxchange/jshopcore/model/category/Category.java b/src/org/mxchange/jshopcore/model/category/Category.java deleted file mode 100644 index 64900bf..0000000 --- a/src/org/mxchange/jshopcore/model/category/Category.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.category; - -import java.io.Serializable; - -/** - * An interface for categories - *

- * @author Roland Haeder - */ -public interface Category extends Serializable { - - /** - * Copies all properties from other category to this - *

- * @param category Source category instance - */ - void copyAll (final Category category); - - /** - * Id number of category - *

- * @return the id - */ - Long getCategoryId (); - - /** - * Id number of category - *

- * @param id the id to set - */ - void setCategoryId (final Long id); - - /** - * Parent category - *

- * @return the parent category - */ - Category getParentCategory (); - - /** - * Parent category - *

- * @param parentCategory the parent category to set - */ - void setParentCategory (final Category parentCategory); - - /** - * Title of category - *

- * @return the title - */ - String getCategoryTitle (); - - /** - * Title of category - *

- * @param title the title to set - */ - void setCategoryTitle (final String title); -} diff --git a/src/org/mxchange/jshopcore/model/category/ProductCategory.java b/src/org/mxchange/jshopcore/model/category/ProductCategory.java deleted file mode 100644 index 37e5444..0000000 --- a/src/org/mxchange/jshopcore/model/category/ProductCategory.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.category; - -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.OneToOne; -import javax.persistence.Table; - -/** - * A product category - *

- * @author Roland Haeder - */ -@Entity (name = "category") -@Table (name = "category") -public class ProductCategory implements Category { - - /** - * Serial number - */ - private static final long serialVersionUID = 21_458_945_712_659L; - - /** - * Id number of category - */ - @Id - @GeneratedValue (strategy = GenerationType.IDENTITY) - @Column (name = "category_id", nullable = false) - private Long categoryId; - - /** - * Title of category - */ - @Basic (optional = false) - @Column (name = "category_title", length = 100, nullable = false, unique = true) - private String categoryTitle; - - /** - * Parent category - */ - @JoinColumn (name = "parent_id") - @OneToOne (targetEntity = ProductCategory.class, cascade = CascadeType.REFRESH) - private Category parentCategory; - - /** - * Constructor which accepts all database fields - *

- * @param categoryId Id number of database record - * @param categoryTitle Category categoryTitle - * @param parentCategory Parent category - */ - public ProductCategory (final Long categoryId, final String categoryTitle, final Category parentCategory) { - // Set all here - this.categoryId = categoryId; - this.categoryTitle = categoryTitle; - this.parentCategory = parentCategory; - } - - /** - * Default constructor - */ - public ProductCategory () { - } - - @Override - public void copyAll (final Category category) { - // Copy all data - this.setParentCategory(category.getParentCategory()); - this.setCategoryTitle(category.getCategoryTitle()); - } - - @Override - public Long getCategoryId () { - return this.categoryId; - } - - @Override - public void setCategoryId (final Long categoryId) { - this.categoryId = categoryId; - } - - @Override - public String getCategoryTitle () { - return this.categoryTitle; - } - - @Override - public void setCategoryTitle (final String categoryTitle) { - this.categoryTitle = categoryTitle; - } - - @Override - public Category getParentCategory () { - return this.parentCategory; - } - - @Override - public void setParentCategory (final Category parentCategory) { - this.parentCategory = parentCategory; - } -} diff --git a/src/org/mxchange/jshopcore/model/customer/CustomerUtils.java b/src/org/mxchange/jshopcore/model/customer/CustomerUtils.java deleted file mode 100644 index f62d873..0000000 --- a/src/org/mxchange/jshopcore/model/customer/CustomerUtils.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.customer; - -import java.sql.SQLException; -import javax.persistence.EntityManager; -import javax.persistence.EntityNotFoundException; -import org.apache.commons.codec.binary.Base64; -import org.apache.commons.codec.digest.Sha2Crypt; -import org.mxchange.jcore.BaseFrameworkSystem; -import org.mxchange.jshopcore.model.order.Orderable; -import org.mxchange.jshopcore.model.order.ShopOrder; - -/** - * An utilities class for customers - *

- * @author Roland Haeder - */ -public class CustomerUtils extends BaseFrameworkSystem { - - /** - * Generates an unique access key. - *

- * @param em Entity manager instance - * @param customer Customer instance - *

- * @return An unique access key - */ - public static String generateAccessKey (final EntityManager em, final Customer customer) { - // Trace message - // TODO: utils.getLogger().logTrace(MessageFormat.format("generateAccessKey: connection={0} - CALLED!", connection)); - - // em cannot be null - if (null == em) { - // Abort here - throw new NullPointerException("em is null"); //NOI18N - } else if (!em.isOpen()) { - // Not open - throw new IllegalStateException("Entity manager is closed."); - } - - // Generate fake order instance - Orderable orderable = null; - - // Generate access keyy - String accessKey = null; - - // Default is found - boolean isFound = true; - - // Is the number used? - while (isFound) { - // Both number parts - String randString = String.format("%s:%s:%s", Long.toHexString(Math.round(Math.random() * 1_000_000)), em, customer.getCustomerNumber()); - - // Generate access key, use SHA512 hashing and BASE64-encoding for strong key generation - accessKey = Base64.encodeBase64String(Sha2Crypt.sha512Crypt(randString.getBytes()).getBytes()).substring(0, 100); - - // Try this - try { - // Get reference - orderable = em.getReference(ShopOrder.class, accessKey); - } catch (final EntityNotFoundException ex) { - // Not found, so abort loop here - isFound = false; - } - } - - // Trace message - // TODO: utils.getLogger().logTrace(MessageFormat.format("generateAccessKey: accessKey={0} - EXIT!", accessKey)); - // Found one - return accessKey; - } - - /** - * Generates an unique customer number by checking is existence - *

- * @param em Entity manager instance - *

- * @return Generated customer number (not used before) - *

- * @throws java.sql.SQLException If any SQL error occured - */ - public static String generateCustomerNumber (final EntityManager em) throws SQLException { - // Trace message - // TODO: utils.getLogger().logTrace(MessageFormat.format("generateCustomerNumber: connection={0} - CALLED!", connection)); - - // em cannot be null - if (null == em) { - // Abort here - throw new NullPointerException("em is null"); //NOI18N - } else if (!em.isOpen()) { - // Not open - throw new IllegalStateException("Entity manager is closed."); - } - - // Generate number - String customerNumber = null; - - // Default is found - boolean isFound = true; - - // Is the number used? - while (isFound) { - // Both number parts - long part1 = Math.round(Math.random() * 100_000); - long part2 = Math.round(Math.random() * 1_000); - - // Generate new number - customerNumber = String.format("%s-%s", part1, part2); //NOI18N - - // Try it - try { - // Get instance - Customer customer = em.getReference(ShopCustomer.class, customerNumber); - } catch (final EntityNotFoundException ex) { - // Not found - isFound = false; - } - } - - // Trace message - // TODO: utils.getLogger().logTrace(MessageFormat.format("generateCustomerNumber: customerNumber={0} - EXIT!", customerNumber)); - // Found one - return customerNumber; - } - - /** - * No instance from this class - */ - private CustomerUtils () { - } -} diff --git a/src/org/mxchange/jshopcore/model/customer/ShopCustomer.java b/src/org/mxchange/jshopcore/model/customer/ShopCustomer.java deleted file mode 100644 index 0165309..0000000 --- a/src/org/mxchange/jshopcore/model/customer/ShopCustomer.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.customer; - -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.OneToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import org.mxchange.jcontacts.contact.Contact; -import org.mxchange.jcontacts.contact.UserContact; -import org.mxchange.jshopcore.model.customer.status.CustomerAccountStatus; - -/** - * A shop customer class. - *

- * @author Roland Haeder - */ -@Entity (name = "customer") -@Table (name = "customer") -public class ShopCustomer implements Customer { - - /** - * Serial number - */ - private static final long serialVersionUID = 4_328_454_581_751L; - - /** - * Id number from "contacts" table - */ - @JoinColumn (name = "contact_id", nullable = false, updatable = false, unique = true) - @OneToOne (targetEntity = UserContact.class, cascade = CascadeType.ALL, optional = false) - private Contact contact; - - /** - * Account status - */ - @Basic (optional = false) - @Column (name = "customer_account_status", nullable = false) - @Enumerated (EnumType.STRING) - private CustomerAccountStatus customerAccountStatus; - - /** - * Confirmation key - */ - @Column (name = "customer_confirm_key", length = 50) - private String customerConfirmKey; - - /** - * "created" timestamp - */ - @Basic (optional = false) - @Temporal (TemporalType.TIMESTAMP) - @Column (name = "customer_created", nullable = false) - private Calendar customerCreated; - - /** - * Customer id - */ - @Id - @Column (name = "customer_id", nullable = false, length = 20, updatable = false) - @GeneratedValue (strategy = GenerationType.IDENTITY) - private Long customerId; - - /** - * "locked" timestamp - */ - @Temporal (TemporalType.TIMESTAMP) - @Column (name = "customer_locked_timestamp") - private Calendar customerLocked; - - /** - * Customer number, this is different to the database entry customerId. - */ - @Column (name = "customer_number", nullable = false, length = 20) - private String customerNumber; - - /** - * Password hash - */ - @Column (name = "customer_password_hash") - private String customerPasswordHash; - - /** - * Default constructor - */ - public ShopCustomer () { - } - - @Override - public void copyAll (final Customer customer) { - // Copy also contact data - this.getContact().copyAll(customer.getContact()); - - // Copy other data - this.setCustomerConfirmKey(customer.getCustomerConfirmKey()); - this.setCustomerNumber(customer.getCustomerNumber()); - this.setCustomerPasswordHash(customer.getCustomerPasswordHash()); - this.setCustomerAccountStatus(customer.getCustomerAccountStatus()); - this.setCustomerCreated(customer.getCustomerCreated()); - this.setCustomerLocked(customer.getCustomerLocked()); - } - - @Override - public boolean equals (final Object object) { - if (this == object) { - return true; - } else if (null == object) { - return false; - } else if (this.getClass() != object.getClass()) { - return false; - } - - final Customer other = (Customer) object; - - if (!Objects.equals(this.getCustomerNumber(), other.getCustomerNumber())) { - return false; - } else if (!Objects.equals(this.getContact(), other.getContact())) { - return false; - } - - return Objects.equals(this.getContact(), other.getContact()); - } - - @Override - public int hashCode () { - int hash = 3; - hash = 17 * hash + Objects.hashCode(this.getContact()); - hash = 17 * hash + Objects.hashCode(this.getCustomerId()); - hash = 17 * hash + Objects.hashCode(this.getCustomerNumber()); - return hash; - } - - @Override - public Contact getContact () { - return this.contact; - } - - @Override - public void setContact (final Contact contact) { - this.contact = contact; - } - - @Override - public CustomerAccountStatus getCustomerAccountStatus () { - return this.customerAccountStatus; - } - - @Override - public void setCustomerAccountStatus (final CustomerAccountStatus customerAccountStatus) { - this.customerAccountStatus = customerAccountStatus; - } - - @Override - public String getCustomerConfirmKey () { - return this.customerConfirmKey; - } - - @Override - public void setCustomerConfirmKey (final String customerConfirmKey) { - this.customerConfirmKey = customerConfirmKey; - } - - @Override - public Calendar getCustomerCreated () { - return this.customerCreated; - } - - @Override - public void setCustomerCreated (final Calendar customerCreated) { - this.customerCreated = customerCreated; - } - - @Override - public Long getCustomerId () { - return this.customerId; - } - - @Override - public void setCustomerId (final Long customerId) { - this.customerId = customerId; - } - - @Override - public Calendar getCustomerLocked () { - return this.customerLocked; - } - - @Override - public void setCustomerLocked (final Calendar customerLocked) { - this.customerLocked = customerLocked; - } - - @Override - public String getCustomerNumber () { - return this.customerNumber; - } - - @Override - public void setCustomerNumber (final String customerNumber) { - this.customerNumber = customerNumber; - } - - @Override - public String getCustomerPasswordHash () { - return this.customerPasswordHash; - } - - @Override - public void setCustomerPasswordHash (final String customerPasswordHash) { - this.customerPasswordHash = customerPasswordHash; - } - -} diff --git a/src/org/mxchange/jshopcore/model/order/Orderable.java b/src/org/mxchange/jshopcore/model/order/Orderable.java deleted file mode 100644 index 6413df9..0000000 --- a/src/org/mxchange/jshopcore/model/order/Orderable.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.order; - -import java.io.Serializable; -import java.util.Calendar; -import java.util.List; -import org.mxchange.jshopcore.model.basket.AddableBasketItem; -import org.mxchange.jshopcore.model.customer.Customer; - -/** - * An interface for customer orders - *

- * @author Roland Haeder - */ -public interface Orderable extends Serializable { - - /** - * Getter for access key - *

- * @return Access key - */ - String getAccessKey (); - - /** - * Setter for access key - *

- * @param accessKey Access key - */ - void setAccessKey (final String accessKey); - - /** - * Getter for created timestamp - *

- * @return Created timestamp - */ - Calendar getOrderCreated (); - - /** - * Setter for created timestamp - *

- * @param created Created timestamp - */ - void setOrderCreated (final Calendar created); - - /** - * Getter for customer instance - *

- * @return Customer instance - */ - Customer getCustomer (); - - /** - * Setter for customer instance - *

- * @param customer Customer instance - */ - void setCustomer (final Customer customer); - - /** - * Getter for order id - *

- * @return Order id - */ - Long getOrderId (); - - /** - * Setter for order id - *

- * @param id Order id - */ - void setOrderId (final Long id); - - /** - * Getter for list of ordered basket items - *

- * @return List of items - */ - List getOrderedItems (); - - /** - * Setter for list of ordered basket items - *

- * @param orderedItems List of ordered items - */ - void setOrderedItems (final List orderedItems); -} diff --git a/src/org/mxchange/jshopcore/model/order/ShopOrder.java b/src/org/mxchange/jshopcore/model/order/ShopOrder.java deleted file mode 100644 index 54a087c..0000000 --- a/src/org/mxchange/jshopcore/model/order/ShopOrder.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.order; - -import java.util.Calendar; -import java.util.List; -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.OneToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.persistence.Transient; -import org.mxchange.jshopcore.model.basket.AddableBasketItem; -import org.mxchange.jshopcore.model.customer.Customer; -import org.mxchange.jshopcore.model.customer.ShopCustomer; - -/** - * An entity class for shop orders - *

- * @author Roland Haeder - */ -@Entity (name = "orders") -@Table (name = "orders") -public class ShopOrder implements Orderable { - - /** - * Serial number - */ - private static final long serialVersionUID = 19_728_938_459_834L; - - /** - * Access key - */ - @Basic (optional = false) - @Column (name = "access_key", length = 100, nullable = false, unique = true) - private String accessKey; - - /** - * Customer instance - */ - @JoinColumn (name = "customer_id", nullable = false, updatable = false) - @OneToOne (targetEntity = ShopCustomer.class, cascade = CascadeType.REFRESH, optional = false) - private Customer customer; - - /** - * Created timestamp - */ - @Basic (optional = false) - @Temporal (TemporalType.TIMESTAMP) - @Column (name = "order_created", nullable = false) - private Calendar orderCreated; - - /** - * Order orderId - */ - @Id - @GeneratedValue (strategy = GenerationType.IDENTITY) - @Column (name = "order_id", length = 20) - private Long orderId; - - /** - * Item list, don't save this - */ - @Transient - private List orderedItems; - - @Override - public String getAccessKey () { - return this.accessKey; - } - - @Override - public void setAccessKey (final String accessKey) { - this.accessKey = accessKey; - } - - @Override - public Customer getCustomer () { - return this.customer; - } - - @Override - public void setCustomer (final Customer customer) { - this.customer = customer; - } - - @Override - public Calendar getOrderCreated () { - return this.orderCreated; - } - - @Override - public void setOrderCreated (final Calendar orderCreated) { - this.orderCreated = orderCreated; - } - - @Override - public Long getOrderId () { - return this.orderId; - } - - @Override - public void setOrderId (final Long orderId) { - this.orderId = orderId; - } - - @Override - public List getOrderedItems () { - return this.orderedItems; - } - - @Override - public void setOrderedItems (final List orderedItems) { - this.orderedItems = orderedItems; - } -} diff --git a/src/org/mxchange/jshopcore/model/order/items/OrderItem.java b/src/org/mxchange/jshopcore/model/order/items/OrderItem.java deleted file mode 100644 index 14cac31..0000000 --- a/src/org/mxchange/jshopcore/model/order/items/OrderItem.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.order.items; - -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.Index; -import javax.persistence.JoinColumn; -import javax.persistence.OneToOne; -import javax.persistence.Table; -import org.mxchange.jshopcore.model.basket.AddableBasketItem; -import org.mxchange.jshopcore.model.basket.items.BaseItem; -import org.mxchange.jshopcore.model.product.GenericProduct; -import org.mxchange.jshopcore.model.product.Product; - -/** - * A general basket item - *

- * @author Roland Haeder - */ -@Entity (name = "ordered_item") -@Table ( - name = "ordered_items", - indexes = { - @Index (name = "product", columnList = "order_product_id") - } -) -public class OrderItem extends BaseItem implements AddableBasketItem { - - /** - * Serial number - */ - private static final long serialVersionUID = 44_189_562_738_723_581L; - - /** - * Entry id (from database backend) - */ - @Id - @GeneratedValue (strategy = GenerationType.IDENTITY) - @Column (name = "order_id", nullable = false, length = 20) - private Long itemId; - - /** - * Item type - */ - @Basic (optional = false) - @Column (name = "order_item_type", length = 20) - private String itemType; - - /** - * Item amount - */ - @Basic (optional = false) - @Column (name = "order_amount", nullable = false) - private Long orderedAmount; - - /** - * Product instance - */ - @JoinColumn (name = "order_product_id", updatable = false) - @OneToOne (targetEntity = GenericProduct.class, cascade = CascadeType.REFRESH) - private Product product; - - /** - * Default constructor - */ - public OrderItem () { - } - - @Override - public boolean equals (final Object object) { - if (this == object) { - return true; - } else if (null == object) { - return false; - } else if (this.getClass() != object.getClass()) { - return false; - } - - final AddableBasketItem item = (AddableBasketItem) object; - - if (!Objects.equals(this.itemType, item.getItemType())) { - return false; - } else if (!Objects.equals(this.orderedAmount, item.getOrderedAmount())) { - return false; - } - - return Objects.equals(this.product, item.getItemProduct()); - } - - @Override - public int hashCode () { - int hash = 3; - hash = 53 * hash + Objects.hashCode(this.getItemType()); - hash = 53 * hash + Objects.hashCode(this.getOrderedAmount()); - hash = 53 * hash + Objects.hashCode(this.getItemProduct()); - return hash; - } - - @Override - public Long getItemId () { - return this.itemId; - } - - @Override - public void setItemId (final Long itemId) { - this.itemId = itemId; - } - - @Override - public Product getItemProduct () { - return this.product; - } - - @Override - public void setItemProduct (final Product product) { - this.product = product; - } - - @Override - public String getItemType () { - return this.itemType; - } - - @Override - public void setItemType (final String itemType) { - this.itemType = itemType; - } - - @Override - public Long getOrderedAmount () { - return this.orderedAmount; - } - - @Override - public void setOrderedAmount (final Long orderedAmount) { - this.orderedAmount = orderedAmount; - } - -} diff --git a/src/org/mxchange/jshopcore/model/product/GenericProduct.java b/src/org/mxchange/jshopcore/model/product/GenericProduct.java deleted file mode 100644 index 3f34e79..0000000 --- a/src/org/mxchange/jshopcore/model/product/GenericProduct.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.product; - -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.OneToOne; -import javax.persistence.Table; -import org.mxchange.jshopcore.model.category.Category; -import org.mxchange.jshopcore.model.category.ProductCategory; - -/** - * Generic product class - *

- * @author Roland Haeder - * TODO: Find a better name - */ -@Entity (name = "products") -@Table (name = "products") -public class GenericProduct implements Product { - - /** - * Serial number - */ - private static final long serialVersionUID = 54_578_571_769_283L; - - /** - * Availability of product - */ - @Column (name = "product_availability", nullable = false) - private Boolean productAvailability; - - /** - * Product productCategory - */ - @JoinColumn (name = "category_id", nullable = false, updatable = false) - @OneToOne (targetEntity = ProductCategory.class, cascade = CascadeType.REFRESH, optional = false) - private Category productCategory; - - /** - * Id number of product - */ - @Id - @GeneratedValue (strategy = GenerationType.IDENTITY) - @Column (name = "product_id", nullable = false, updatable = false) - private Long productId; - - /** - * Price of product - */ - @Basic (optional = false) - @Column (name = "product_price", nullable = false) - private Float productPrice; - - /** - * Title of product - */ - @Basic (optional = false) - @Column (name = "product_title", length = 100, nullable = false) - private String productTitle; - - /** - * Default constructor - */ - public GenericProduct () { - } - - /** - * Constructor will all required data - *

- * @param productId Id number of product - * @param productTitle Name of product - * @param productPrice Price - * @param productCategory Category instance - * @param productAvailability Availability (selectable by customer) - */ - public GenericProduct (final Long productId, final String productTitle, final Float productPrice, final Category productCategory, final Boolean productAvailability) { - // Set all here - this.productId = productId; - this.productTitle = productTitle; - this.productPrice = productPrice; - this.productCategory = productCategory; - this.productAvailability = productAvailability; - } - - @Override - public void copyAll (final Product product) { - // Copy all - this.setProductAvailability(product.getProductAvailability()); - this.setProductCategory(product.getProductCategory()); - this.setProductPrice(product.getProductPrice()); - this.setProductTitle(product.getProductTitle()); - } - - @Override - public boolean equals (final Object object) { - if (this == object) { - return true; - } else if (null == object) { - return false; - } else if (this.getClass() != object.getClass()) { - return false; - } - - final Product other = (Product) object; - - if (!Objects.equals(this.getProductTitle(), other.getProductTitle())) { - return false; - } - - return Objects.equals(this.getProductId(), other.getProductId()); - } - - @Override - public int hashCode () { - int hash = 7; - hash = 23 * hash + Objects.hashCode(this.getProductId()); - hash = 23 * hash + Objects.hashCode(this.getProductTitle()); - return hash; - } - - @Override - public Boolean getProductAvailability () { - return this.productAvailability; - } - - @Override - public void setProductAvailability (final Boolean productAvailability) { - this.productAvailability = productAvailability; - } - - @Override - public Category getProductCategory () { - return this.productCategory; - } - - @Override - public void setProductCategory (final Category productCategory) { - this.productCategory = productCategory; - } - - @Override - public Long getProductId () { - return this.productId; - } - - @Override - public void setProductId (final Long productId) { - this.productId = productId; - } - - @Override - public Float getProductPrice () { - return this.productPrice; - } - - @Override - public void setProductPrice (final Float productPrice) { - this.productPrice = productPrice; - } - - @Override - public String getProductTitle () { - return this.productTitle; - } - - @Override - public void setProductTitle (final String productTitle) { - this.productTitle = productTitle; - } -} diff --git a/src/org/mxchange/jshopcore/model/product/Product.java b/src/org/mxchange/jshopcore/model/product/Product.java deleted file mode 100644 index 88d2261..0000000 --- a/src/org/mxchange/jshopcore/model/product/Product.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.model.product; - -import java.io.Serializable; -import org.mxchange.jshopcore.model.category.Category; - -/** - * An interface for in database storable products - *

- * @author Roland Haeder - */ -public interface Product extends Serializable { - - /** - * Copies all properties from source product to this. - *

- * @param product Source product - */ - void copyAll (final Product product); - - /** - * Getter for product availability - *

- * @return Product availability - */ - Boolean getProductAvailability (); - - /** - * Setter for product availability - *

- * @param productAvailability Product availability - */ - void setProductAvailability (final Boolean productAvailability); - - /** - * Getter for product category id - *

- * @return Product category id - */ - Category getProductCategory (); - - /** - * Setter for product category - *

- * @param productCategory Product category - */ - void setProductCategory (final Category productCategory); - - /** - * Getter for id number, suitable for form fields. - *

- * @return Id number of product - */ - Long getProductId (); - - /** - * Id number of product - *

- * @param productId the id number to set - */ - void setProductId (final Long productId); - - /** - * Getter for raw price. - *

- * @return Single price of product - */ - Float getProductPrice (); - - /** - * Price of product - *

- * @param productPrice the price to set - */ - void setProductPrice (final Float productPrice); - - /** - * Getter for title. - *

- * @return Title of product - */ - String getProductTitle (); - - /** - * Title of product - *

- * @param productTitle the title to set - */ - void setProductTitle (final String productTitle); - - @Override - boolean equals (final Object object); - - @Override - int hashCode (); -} diff --git a/src/org/mxchange/jshopcore/wrapper/CheckoutWrapper.java b/src/org/mxchange/jshopcore/wrapper/CheckoutWrapper.java deleted file mode 100644 index 6b64238..0000000 --- a/src/org/mxchange/jshopcore/wrapper/CheckoutWrapper.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.wrapper; - -import java.util.List; -import org.mxchange.jshopcore.model.basket.AddableBasketItem; -import org.mxchange.jshopcore.model.customer.Customer; - -/** - * A wrapper for checkouts (customer, ordered items) - *

- * @author Roland Haeder - */ -public class CheckoutWrapper implements WrapableCheckout { - - /** - * Serial number - */ - private static final long serialVersionUID = 94_358_758_475_481_781L; - - /** - * Customer instance - */ - private Customer customer; - - /** - * List instance - */ - private List list; - - /** - * Default constructor - */ - public CheckoutWrapper () { - } - - @Override - public Customer getCustomer () { - return this.customer; - } - - @Override - public void setCustomer (final Customer customer) { - this.customer = customer; - } - - @Override - public List getList () { - return this.list; - } - - @Override - public void setList (final List list) { - this.list = list; - } - -} diff --git a/src/org/mxchange/jshopcore/wrapper/WrapableCheckout.java b/src/org/mxchange/jshopcore/wrapper/WrapableCheckout.java deleted file mode 100644 index 1bef0d8..0000000 --- a/src/org/mxchange/jshopcore/wrapper/WrapableCheckout.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2016 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 . - */ -package org.mxchange.jshopcore.wrapper; - -import java.io.Serializable; -import java.util.List; -import org.mxchange.jshopcore.model.basket.AddableBasketItem; -import org.mxchange.jshopcore.model.customer.Customer; - -/** - * An interface for checkout wrapper - *

- * @author Roland Haeder - */ -public interface WrapableCheckout extends Serializable { - - /** - * Getter for customer instance - *

- * @return Customer indstance - */ - Customer getCustomer (); - - /** - * Setter for customer instance - *

- * @param customer Customer instance - */ - void setCustomer (final Customer customer); - - /** - * Getter for a List of AddableBasktem instances - *

- * @return List with AddableBasketItem instances - */ - List getList (); - - /** - * Setter for a List of AddableBasktem instances - *

- * @param list List with AddableBasketItem instances - */ - void setList (final List list); -} -- 2.39.5