<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
-<project name="jshop-core" default="default" basedir=".">
- <description>Builds, tests, and runs the project jshop-core.</description>
+<project name="jcustomer-core" default="default" basedir=".">
+ <description>Builds, tests, and runs the project jcustomer-core.</description>
<import file="nbproject/build-impl.xml"/>
<!--
An example of overriding the target for project execution could look like this:
- <target name="run" depends="jshop-core-impl.jar">
+ <target name="run" depends="jcustomer-core-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
- cleanup
-->
-<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="jshop-core-impl">
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="jcustomer-core-impl">
<fail message="Please build using Ant 1.8.0 or higher.">
<condition>
<not>
</fileset>
</union>
<taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
- <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="jshop-core" testname="TestNG tests" workingDir="${work.dir}">
+ <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="jcustomer-core" testname="TestNG tests" workingDir="${work.dir}">
<xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
<propertyset>
<propertyref prefix="test-sys-prop."/>
<condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
<isset property="test.method"/>
</condition>
- <condition else="-suitename jshop-core -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
+ <condition else="-suitename jcustomer-core -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
<matches pattern=".*\.xml" string="@{testClass}"/>
</condition>
<delete dir="${build.test.results.dir}" quiet="true"/>
<delete file="${built-jar.properties}" quiet="true"/>
</target>
<target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
- <echo level="warn" message="Cycle detected: jshop-core was already built"/>
+ <echo level="warn" message="Cycle detected: jcustomer-core was already built"/>
</target>
<target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
<mkdir dir="${build.dir}"/>
<delete file="${built-clean.properties}" quiet="true"/>
</target>
<target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
- <echo level="warn" message="Cycle detected: jshop-core was already built"/>
+ <echo level="warn" message="Cycle detected: jcustomer-core was already built"/>
</target>
<target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
<mkdir dir="${build.dir}"/>
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
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=
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
- <name>jshop-core</name>
+ <name>jcustomer-core</name>
<source-roots>
<root id="src.dir"/>
</source-roots>
--- /dev/null
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcustomercore.exceptions;
+
+import java.text.MessageFormat;
+import org.mxchange.jcustomercore.model.customer.Customer;
+
+/**
+ * An exception thrown when the customer is already registered
+ * <p>
+ * @author Roland Haeder<roland@mxchange.org>
+ */
+public class CustomerAlreadyRegisteredException extends Exception {
+
+ /**
+ * Serial number
+ */
+ private static final long serialVersionUID = 16_435_892_878_271L;
+
+ /**
+ * Constructor with already registered customer instance
+ * <p>
+ * @param customer Customer instance
+ */
+ public CustomerAlreadyRegisteredException (final Customer customer) {
+ // Call super contructor
+ super(MessageFormat.format("Customer {0} already registered with number {1} at record id {2}. Maybe forgot to call isRegistered(customer) ?", customer, customer.getCustomerNumber(), customer.getCustomerId()));
+ }
+}
--- /dev/null
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcustomercore.model.customer;
+
+import java.io.Serializable;
+import java.util.Calendar;
+import org.mxchange.jcontacts.contact.Contact;
+import org.mxchange.jcustomercore.model.customer.status.CustomerAccountStatus;
+
+/**
+ * A customer interface
+ * <p>
+ * @author Roland Haeder<roland@mxchange.org>
+ */
+public interface Customer extends Serializable {
+
+ /**
+ * Copies all attributes from other customer object to this
+ * <p>
+ * @param customer Source instance
+ */
+ void copyAll (final Customer customer);
+
+ /**
+ * Getter for contact instance
+ * <p>
+ * @return Contact id number
+ */
+ Contact getContact ();
+
+ /**
+ * Setter for contact instance
+ * <p>
+ * @param contact Contact instance
+ */
+ void setContact (final Contact contact);
+
+ /**
+ * Getter for confirmation key
+ * <p>
+ * @return Confirmation key
+ */
+ String getCustomerConfirmKey ();
+
+ /**
+ * Setter for confirmation key
+ * <p>
+ * @param customerConfirmKey Confirmation key
+ */
+ void setCustomerConfirmKey (final String customerConfirmKey);
+
+ /**
+ * Getter for "created" timestamp
+ * <p>
+ * @return "created" timestamp
+ */
+ Calendar getCustomerCreated ();
+
+ /**
+ * Setter for "created" timestamp
+ * <p>
+ * @param customerCreated "created" timestamp
+ */
+ void setCustomerCreated (final Calendar customerCreated);
+
+ /**
+ * Getter for customer id number
+ * <p>
+ * @return Customer id number
+ */
+ Long getCustomerId ();
+
+ /**
+ * Settte for customer id number
+ * <p>
+ * @param customerId Customer id number
+ */
+ void setCustomerId (final Long customerId);
+
+ /**
+ * Getter for "locked" timestamp
+ * <p>
+ * @return "locked" timestamp
+ */
+ Calendar getCustomerLocked ();
+
+ /**
+ * Getter for "locked" timestamp
+ * <p>
+ * @param customerLocked "locked" timestamp
+ */
+ void setCustomerLocked (final Calendar customerLocked);
+
+ /**
+ * Getter for customer number
+ * <p>
+ * @return Customer number
+ */
+ String getCustomerNumber ();
+
+ /**
+ * Setter for customer number
+ * <p>
+ * @param customerNumber Customer number
+ */
+ void setCustomerNumber (final String customerNumber);
+
+ /**
+ * Getter for password hash
+ * <p>
+ * @return Password hash
+ */
+ String getCustomerPasswordHash ();
+
+ /**
+ * Setter for password hash
+ * <p>
+ * @param customerPasswordHash Password hash
+ */
+ void setCustomerPasswordHash (final String customerPasswordHash);
+
+ /**
+ * Getter for account status
+ * <p>
+ * @return Account status
+ */
+ CustomerAccountStatus getCustomerAccountStatus ();
+
+ /**
+ * Setter for account status
+ * <p>
+ * @param customerStatus Account status
+ */
+ void setCustomerAccountStatus (final CustomerAccountStatus customerStatus);
+
+ @Override
+ boolean equals (final Object object);
+
+ @Override
+ int hashCode ();
+}
--- /dev/null
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcustomercore.model.customer.status;
+
+import java.io.Serializable;
+
+/**
+ * An enumeration for customer's account status like confirmed, locked, etc.
+ * <p>
+ * @author Roland Haeder<roland@mxchange.org>
+ */
+public enum CustomerAccountStatus implements Serializable {
+
+ /**
+ * Unconfirmed (default)
+ */
+ UNCONFIRMED("CUSTOMER_ACCOUNT_STATUS_UNCONFIRMED"), //NOI18N
+
+ /**
+ * Confirmed (email address validated)
+ */
+ CONFIRMED("CUSTOMER_ACCOUNT_STATUS_CONFIRMED"), //NOI18N
+
+ /**
+ * Locked (maybe violated T&C)
+ */
+ LOCKED("CUSTOMER_ACCOUNT_STATUS_LOCKED"); //NOI18N
+
+ /**
+ * Message key
+ */
+ private final String messageKey;
+
+ /**
+ * Constructor with i18n translation key
+ * <p>
+ * @param messageKey Message key (i18n)
+ */
+ private CustomerAccountStatus (final String messageKey) {
+ // Set it here
+ this.messageKey = messageKey;
+ }
+
+ /**
+ * Output value (for messages)
+ * <p>
+ * @return the messageKey
+ */
+ public String getMessageKey () {
+ return this.messageKey;
+ }
+}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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.
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public class BasketItemAlreadyAddedException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 64_828_391_485_785_167L;
-
- /**
- * Constructor with item instance T
- * <p>
- * @param <T> Any item that is or extends the interface
- * @param item An instance of a T item
- */
- public <T extends AddableBasketItem> 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));
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.exceptions;
-
-/**
- * An exception thrown when the category cannot be added for a "low level"
- * reason.
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public class CannotAddCategoryException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 34_295_843_957_951L;
-
- /**
- * Constructor with cause
- * <p>
- * @param cause Causing exception
- */
- public CannotAddCategoryException (final Throwable cause) {
- // Call super constructor
- super(cause);
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.exceptions;
-
-/**
- * An exception thrown when the product cannot be added for a "low level"
- * reason.
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public class CannotAddProductException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 48_574_857_485_748_175L;
-
- /**
- * Constructor with cause
- * <p>
- * @param cause Causing exception
- */
- public CannotAddProductException (final Throwable cause) {
- // Call super constructor
- super(cause);
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public class CategoryTitleAlreadyUsedException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 53_751_434_673_262L;
-
- /**
- * Constructor with HttpServletRequest instance
- * <p>
- * @param category Category instance
- */
- public CategoryTitleAlreadyUsedException (final Category category) {
- // Call super constructor
- super(MessageFormat.format("Title {0} is already used.", category.getCategoryTitle())); //NOI18N
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.exceptions;
-
-import java.text.MessageFormat;
-import org.mxchange.jshopcore.model.customer.Customer;
-
-/**
- * An exception thrown when the customer is already registered
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public class CustomerAlreadyRegisteredException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 16_435_892_878_271L;
-
- /**
- * Constructor with already registered customer instance
- * <p>
- * @param customer Customer instance
- */
- public CustomerAlreadyRegisteredException (final Customer customer) {
- // Call super contructor
- super(MessageFormat.format("Customer {0} already registered with number {1} at record id {2}. Maybe forgot to call isRegistered(customer) ?", customer, customer.getCustomerNumber(), customer.getCustomerId()));
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public class ProductTitleAlreadyUsedException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 4_252_734_834_174L;
-
- /**
- * Constructor with HttpServletRequest instance
- * <p>
- * @param product Product instance
- */
- public ProductTitleAlreadyUsedException (final Product product) {
- // Call super constructor
- super(MessageFormat.format("Title {0} is already used.", product.getProductTitle())); //NOI18N
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.model.basket;
-
-import java.io.Serializable;
-import org.mxchange.jshopcore.model.product.Product;
-
-/**
- * An interface for addable basket items
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public interface AddableBasketItem extends Serializable {
-
- /**
- * Getter for item amount
- * <p>
- * @return the amount
- */
- Long getOrderedAmount ();
-
- /**
- * Setter for item amount
- * <p>
- * @param amount the amount to set
- */
- void setOrderedAmount (final Long amount);
-
- /**
- * Getter for entry id (from database backend)
- * <p>
- * @return the id
- */
- Long getItemId ();
-
- /**
- * Setter for entry id (from database backend)
- * <p>
- * @param id the id to set
- */
- void setItemId (final Long id);
-
- /**
- * Getter for item type
- * <p>
- * @return the type
- */
- String getItemType ();
-
- /**
- * Setter for item type
- * <p>
- * @param type the type to set
- */
- void setItemType (final String type);
-
- /**
- * Getter for product instance
- * <p>
- * @return the product
- */
- Product getItemProduct ();
-
- /**
- * Setter for product instance
- * <p>
- * @param product the product to set
- */
- void setItemProduct (final Product product);
-
- /**
- * Determines whether the item has a Product instance set
- * <p>
- * @return Whether a Product instance is set
- */
- boolean isProductType ();
-
- @Override
- boolean equals (final Object object);
-
- @Override
- int hashCode ();
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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).
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- * @param <T> Any instance that implements AddableBasketItem
- */
-public abstract class BaseBasket<T extends AddableBasketItem> implements Basket<T> {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 782_396_762_230_845_717L;
-
- /**
- * Ordered item list
- */
- private final Deque<T> 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<T> getAll () {
- // Init map
- List<T> 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<T> 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();
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.model.basket;
-
-import java.io.Serializable;
-import java.util.List;
-import org.mxchange.jshopcore.exceptions.BasketItemAlreadyAddedException;
-
-/**
- * An interface for baskets
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- * @param <T> Any addable basket items
- */
-public interface Basket<T extends AddableBasketItem> extends Serializable {
-
- /**
- * Adds given item instance to this basket
- * <p>
- * @param item Item instance to add
- * <p>
- * @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
- * <p>
- * @return Map on all basket items
- */
- List<T> getAll ();
-
- /**
- * Getter for last entry
- * <p>
- * @return Last added item in basket
- */
- T getLast ();
-
- /**
- * Getter for last num rows
- * <p>
- * @return Last num rows
- */
- int getLastNumRows ();
-
- /**
- * Checks whether the given item has already been added by checking the
- * item's id.
- * <p>
- * @param item Item instance to check
- * <p>
- * @return Whether the given item has been found
- */
- boolean isAdded (final T item);
-
- /**
- * Checks if the basket is empty
- * <p>
- * @return Whether the basket is empty
- */
- boolean isEmpty ();
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.model.basket;
-
-/**
- * A basket for orderable items
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public class ShopBasket extends BaseBasket<AddableBasketItem> implements Basket<AddableBasketItem> {
-
- /**
- * 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();
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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.
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-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);
- }
-
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-@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
- * <p>
- * @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.
- * <p>
- * @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;
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.model.category;
-
-import java.io.Serializable;
-
-/**
- * An interface for categories
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public interface Category extends Serializable {
-
- /**
- * Copies all properties from other category to this
- * <p>
- * @param category Source category instance
- */
- void copyAll (final Category category);
-
- /**
- * Id number of category
- * <p>
- * @return the id
- */
- Long getCategoryId ();
-
- /**
- * Id number of category
- * <p>
- * @param id the id to set
- */
- void setCategoryId (final Long id);
-
- /**
- * Parent category
- * <p>
- * @return the parent category
- */
- Category getParentCategory ();
-
- /**
- * Parent category
- * <p>
- * @param parentCategory the parent category to set
- */
- void setParentCategory (final Category parentCategory);
-
- /**
- * Title of category
- * <p>
- * @return the title
- */
- String getCategoryTitle ();
-
- /**
- * Title of category
- * <p>
- * @param title the title to set
- */
- void setCategoryTitle (final String title);
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-@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
- * <p>
- * @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;
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.model.customer;
-
-import java.io.Serializable;
-import java.util.Calendar;
-import org.mxchange.jcontacts.contact.Contact;
-import org.mxchange.jshopcore.model.customer.status.CustomerAccountStatus;
-
-/**
- * A customer interface
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public interface Customer extends Serializable {
-
- /**
- * Copies all attributes from other customer object to this
- * <p>
- * @param customer Source instance
- */
- void copyAll (final Customer customer);
-
- /**
- * Getter for contact instance
- * <p>
- * @return Contact id number
- */
- Contact getContact ();
-
- /**
- * Setter for contact instance
- * <p>
- * @param contact Contact instance
- */
- void setContact (final Contact contact);
-
- /**
- * Getter for confirmation key
- * <p>
- * @return Confirmation key
- */
- String getCustomerConfirmKey ();
-
- /**
- * Setter for confirmation key
- * <p>
- * @param customerConfirmKey Confirmation key
- */
- void setCustomerConfirmKey (final String customerConfirmKey);
-
- /**
- * Getter for "created" timestamp
- * <p>
- * @return "created" timestamp
- */
- Calendar getCustomerCreated ();
-
- /**
- * Setter for "created" timestamp
- * <p>
- * @param customerCreated "created" timestamp
- */
- void setCustomerCreated (final Calendar customerCreated);
-
- /**
- * Getter for customer id number
- * <p>
- * @return Customer id number
- */
- Long getCustomerId ();
-
- /**
- * Settte for customer id number
- * <p>
- * @param customerId Customer id number
- */
- void setCustomerId (final Long customerId);
-
- /**
- * Getter for "locked" timestamp
- * <p>
- * @return "locked" timestamp
- */
- Calendar getCustomerLocked ();
-
- /**
- * Getter for "locked" timestamp
- * <p>
- * @param customerLocked "locked" timestamp
- */
- void setCustomerLocked (final Calendar customerLocked);
-
- /**
- * Getter for customer number
- * <p>
- * @return Customer number
- */
- String getCustomerNumber ();
-
- /**
- * Setter for customer number
- * <p>
- * @param customerNumber Customer number
- */
- void setCustomerNumber (final String customerNumber);
-
- /**
- * Getter for password hash
- * <p>
- * @return Password hash
- */
- String getCustomerPasswordHash ();
-
- /**
- * Setter for password hash
- * <p>
- * @param customerPasswordHash Password hash
- */
- void setCustomerPasswordHash (final String customerPasswordHash);
-
- /**
- * Getter for account status
- * <p>
- * @return Account status
- */
- CustomerAccountStatus getCustomerAccountStatus ();
-
- /**
- * Setter for account status
- * <p>
- * @param customerStatus Account status
- */
- void setCustomerAccountStatus (final CustomerAccountStatus customerStatus);
-
- @Override
- boolean equals (final Object object);
-
- @Override
- int hashCode ();
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public class CustomerUtils extends BaseFrameworkSystem {
-
- /**
- * Generates an unique access key.
- * <p>
- * @param em Entity manager instance
- * @param customer Customer instance
- * <p>
- * @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
- * <p>
- * @param em Entity manager instance
- * <p>
- * @return Generated customer number (not used before)
- * <p>
- * @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 () {
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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.
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-@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;
- }
-
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.model.customer.status;
-
-import java.io.Serializable;
-
-/**
- * An enumeration for customer's account status like confirmed, locked, etc.
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public enum CustomerAccountStatus implements Serializable {
-
- /**
- * Unconfirmed (default)
- */
- UNCONFIRMED("CUSTOMER_ACCOUNT_STATUS_UNCONFIRMED"), //NOI18N
-
- /**
- * Confirmed (email address validated)
- */
- CONFIRMED("CUSTOMER_ACCOUNT_STATUS_CONFIRMED"), //NOI18N
-
- /**
- * Locked (maybe violated T&C)
- */
- LOCKED("CUSTOMER_ACCOUNT_STATUS_LOCKED"); //NOI18N
-
- /**
- * Message key
- */
- private final String messageKey;
-
- /**
- * Constructor with i18n translation key
- * <p>
- * @param messageKey Message key (i18n)
- */
- private CustomerAccountStatus (final String messageKey) {
- // Set it here
- this.messageKey = messageKey;
- }
-
- /**
- * Output value (for messages)
- * <p>
- * @return the messageKey
- */
- public String getMessageKey () {
- return this.messageKey;
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public interface Orderable extends Serializable {
-
- /**
- * Getter for access key
- * <p>
- * @return Access key
- */
- String getAccessKey ();
-
- /**
- * Setter for access key
- * <p>
- * @param accessKey Access key
- */
- void setAccessKey (final String accessKey);
-
- /**
- * Getter for created timestamp
- * <p>
- * @return Created timestamp
- */
- Calendar getOrderCreated ();
-
- /**
- * Setter for created timestamp
- * <p>
- * @param created Created timestamp
- */
- void setOrderCreated (final Calendar created);
-
- /**
- * Getter for customer instance
- * <p>
- * @return Customer instance
- */
- Customer getCustomer ();
-
- /**
- * Setter for customer instance
- * <p>
- * @param customer Customer instance
- */
- void setCustomer (final Customer customer);
-
- /**
- * Getter for order id
- * <p>
- * @return Order id
- */
- Long getOrderId ();
-
- /**
- * Setter for order id
- * <p>
- * @param id Order id
- */
- void setOrderId (final Long id);
-
- /**
- * Getter for list of ordered basket items
- * <p>
- * @return List of items
- */
- List<AddableBasketItem> getOrderedItems ();
-
- /**
- * Setter for list of ordered basket items
- * <p>
- * @param orderedItems List of ordered items
- */
- void setOrderedItems (final List<AddableBasketItem> orderedItems);
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-@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<AddableBasketItem> 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<AddableBasketItem> getOrderedItems () {
- return this.orderedItems;
- }
-
- @Override
- public void setOrderedItems (final List<AddableBasketItem> orderedItems) {
- this.orderedItems = orderedItems;
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-@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;
- }
-
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- * 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
- * <p>
- * @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;
- }
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jshopcore.model.product;
-
-import java.io.Serializable;
-import org.mxchange.jshopcore.model.category.Category;
-
-/**
- * An interface for in database storable products
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public interface Product extends Serializable {
-
- /**
- * Copies all properties from source product to this.
- * <p>
- * @param product Source product
- */
- void copyAll (final Product product);
-
- /**
- * Getter for product availability
- * <p>
- * @return Product availability
- */
- Boolean getProductAvailability ();
-
- /**
- * Setter for product availability
- * <p>
- * @param productAvailability Product availability
- */
- void setProductAvailability (final Boolean productAvailability);
-
- /**
- * Getter for product category id
- * <p>
- * @return Product category id
- */
- Category getProductCategory ();
-
- /**
- * Setter for product category
- * <p>
- * @param productCategory Product category
- */
- void setProductCategory (final Category productCategory);
-
- /**
- * Getter for id number, suitable for form fields.
- * <p>
- * @return Id number of product
- */
- Long getProductId ();
-
- /**
- * Id number of product
- * <p>
- * @param productId the id number to set
- */
- void setProductId (final Long productId);
-
- /**
- * Getter for raw price.
- * <p>
- * @return Single price of product
- */
- Float getProductPrice ();
-
- /**
- * Price of product
- * <p>
- * @param productPrice the price to set
- */
- void setProductPrice (final Float productPrice);
-
- /**
- * Getter for title.
- * <p>
- * @return Title of product
- */
- String getProductTitle ();
-
- /**
- * Title of product
- * <p>
- * @param productTitle the title to set
- */
- void setProductTitle (final String productTitle);
-
- @Override
- boolean equals (final Object object);
-
- @Override
- int hashCode ();
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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)
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-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<AddableBasketItem> 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<AddableBasketItem> getList () {
- return this.list;
- }
-
- @Override
- public void setList (final List<AddableBasketItem> list) {
- this.list = list;
- }
-
-}
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-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
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public interface WrapableCheckout extends Serializable {
-
- /**
- * Getter for customer instance
- * <p>
- * @return Customer indstance
- */
- Customer getCustomer ();
-
- /**
- * Setter for customer instance
- * <p>
- * @param customer Customer instance
- */
- void setCustomer (final Customer customer);
-
- /**
- * Getter for a List of AddableBasktem instances
- * <p>
- * @return List with AddableBasketItem instances
- */
- List<AddableBasketItem> getList ();
-
- /**
- * Setter for a List of AddableBasktem instances
- * <p>
- * @param list List with AddableBasketItem instances
- */
- void setList (final List<AddableBasketItem> list);
-}