+++ /dev/null
-/*
- * Copyright (C) 2015 Roland Haeder
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.pizzaapplication.application;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.sql.SQLException;
-import java.util.Deque;
-import java.util.Iterator;
-import org.mxchange.jcore.application.Application;
-import org.mxchange.jshop.category.Category;
-import org.mxchange.jshop.exceptions.CategoryTitleAlreadyUsedException;
-import org.mxchange.jshop.exceptions.ProductTitleAlreadyUsedException;
-import org.mxchange.jshop.item.AddableBasketItem;
-import org.mxchange.jshop.product.Product;
-
-/**
- *
- * @author Roland Haeder
- */
-public interface PizzaApplication extends Application {
- /**
- * Some "getter" for a linked list of only available products
- *
- * @return Only available products
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- */
- public Deque<Product> getAvailableProducts () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException;
-
- /**
- * Some "getter" for a linked list of all products
- *
- * @return All products
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- */
- public Deque<Product> getAllProducts () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException;
-
- /**
- * Some "getter" for a linked list of all categories
- *
- * @return All categories
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- */
- public Deque<Category> getAllCategories () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException;
-
- /**
- * Initializes this instance with given ServletContext
- *
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.io.IOException If an IO error occurs
- */
- public void init () throws SQLException, IOException;
-
- /**
- * Some "getter" for a an array of only available products
- *
- * @return Only available products
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- */
- public Iterator<Product> getAvailableProductsIterator () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException;
-
- /**
- * Some "getter" for a an array of all products
- *
- * @return All products
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- */
- public Iterator<Product> getAllProductsIterator () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException;
-
- /**
- * Some "getter" for a an array of all categories
- *
- * @return All categories
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- */
- public Iterator<Category> getAllCategoriesIterator () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException;
-
- /**
- * Generates a link for category's parent category. If none is given, the method will return only a small
- * note.
- *
- * @param category Category instance
- * @return HTML link for category's parent category
- * @deprecated Old lost code
- */
- @Deprecated
- public String generateLinkForParent (final Category category);
-
- /**
- * Checks if given Product instance is available and returns a printable
- * (human-readable) string.
- *
- * @param product Product instance to check
- * @return Human-readable version of product availability
- * @deprecated Old lost code
- */
- @Deprecated
- public String getPrintableProductAvailability (final Product product);
-
- /**
- * Returns a printable (human-readable) string of product's category
- *
- * @param product Product instance to check
- * @return Human-readable version of product availability
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- * @deprecated Old lost code
- */
- @Deprecated
- public String getPrintableProductCategory (final Product product) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException;
-
- /**
- * Adds given category data from request to database
- *
- * @param category Category to be added
- * @throws org.mxchange.jshop.exceptions.CategoryTitleAlreadyUsedException The category's title is already used
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- */
- public void doAdminAddCategory (final Category category) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, CategoryTitleAlreadyUsedException;
-
- /**
- * Adds given product data from request to database
- *
- * @param product Product instance to add
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- * @throws org.mxchange.jshop.exceptions.ProductTitleAlreadyUsedException If the product's title is already used
- */
- public void doAdminAddProduct (final Product product) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, ProductTitleAlreadyUsedException;
-
- /**
- * Handles admin product form requests
- *
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- * @throws org.mxchange.jshop.exceptions.ProductTitleAlreadyUsedException If the product's title is already used
- * @deprecated Old lost code
- */
- @Deprecated
- public void doAdminHandleProductForms () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, ProductTitleAlreadyUsedException;
-
- /**
- * Handles admin category form requests
- *
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- * @throws org.mxchange.jshop.exceptions.CategoryTitleAlreadyUsedException The category's title is already used
- * @deprecated Old lost code
- */
- @Deprecated
- public void doAdminHandleCategoryForms () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, CategoryTitleAlreadyUsedException;
-
- /**
- * Some "getter" for a Product instance from given item
- *
- * @param item Item instance
- * @return A Product instance
- * @throws java.io.IOException If an IO error occurs
- * @throws java.sql.SQLException If an SQL error occurs
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed publicly
- * @throws java.lang.reflect.InvocationTargetException If something else happens?
- */
- public Product getProduct (final AddableBasketItem item) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException;
-}
+++ /dev/null
-/*
- * Copyright (C) 2015 Roland Haeder
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.pizzaapplication.application;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.sql.SQLException;
-import java.text.MessageFormat;
-import java.util.Deque;
-import java.util.Iterator;
-import org.mxchange.jcore.BaseFrameworkSystem;
-import org.mxchange.jshop.category.Category;
-import org.mxchange.jshop.exceptions.CategoryTitleAlreadyUsedException;
-import org.mxchange.jshop.exceptions.ProductTitleAlreadyUsedException;
-import org.mxchange.jshop.item.AddableBasketItem;
-import org.mxchange.jshop.product.Product;
-
-/**
- * Main application class
- *
- * @author Roland Haeder
- */
-public class PizzaServiceApplication extends BaseFrameworkSystem implements PizzaApplication {
- /**
- * Default constructor
- */
- public PizzaServiceApplication () {
- // Trace message
- this.getLogger().trace("CALLED!"); //NOI18N
- }
-
- @Override
- public Deque<Category> getAllCategories () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
- // Deligate to frontend
- return this.categoryFrontend.getAllCategories();
- }
-
- @Override
- public Deque<Product> getAllProducts () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
- // Deligate to frontend
- return this.productFrontend.getAllProducts();
- }
-
- @Override
- public Deque<Product> getAvailableProducts () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
- // Deligate to frontend
- return this.productFrontend.getAllAvailableProducts();
- }
-
- @Override
- public void init () throws SQLException {
- // Trace message
- this.getLogger().trace("CALLED!"); //NOI18N
-
- // Is the bundle initialized?
- if (!BaseFrameworkSystem.isBundledInitialized()) {
- // Temporary initialize default bundle
- // TODO The enum Gender uses this
- this.initBundle();
- }
-
- // Trace message
- this.getLogger().trace("EXIT!"); //NOI18N
- }
-
- @Override
- public void doBootstrap () {
- throw new UnsupportedOperationException("Not supported yet."); //NOI18N
- }
-
- @Override
- public void doMainLoop () {
- throw new UnsupportedOperationException("Not supported yet."); //NOI18N
- }
-
- @Override
- public void doShutdown () {
- throw new UnsupportedOperationException("Not supported yet."); //NOI18N
- }
-
- @Override
- @Deprecated
- public String getPrintableProductAvailability (final Product product) {
- // Trace message
- this.getLogger().trace(MessageFormat.format("product={0} - CALLED!", product)); //NOI18N
-
- // Is it null?
- if (null == product) {
- // Should not be null
- throw new NullPointerException("product is null"); //NOI18N
- }
-
- // Get availability
- if (product.getAvailable() == true) {
- // Is available
- return "Ja";
- } else {
- // Not, not for public
- return "Nein";
- }
- }
-
- @Override
- @SuppressWarnings ("unchecked")
- public Iterator<Product> getAvailableProductsIterator () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
- // Trace message
- this.getLogger().trace("CALLED!"); //NOI18N
-
- // Ask frontend for a list of products
- return this.productFrontend.getAvailableProductsIterator();
- }
-
- @Override
- @SuppressWarnings ("unchecked")
- public Iterator<Product> getAllProductsIterator () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
- // Trace message
- this.getLogger().trace("CALLED!"); //NOI18N
-
- // Ask frontend for a list of products
- return this.productFrontend.getAllProductsIterator();
- }
-
- @Override
- @SuppressWarnings ("unchecked")
- public Iterator<Category> getAllCategoriesIterator () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
- // Trace message
- this.getLogger().trace("CALLED!"); //NOI18N
-
- // Ask frontend for a list of categories
- return this.categoryFrontend.getAllCategoriesIterator();
- }
-
- /**
- * Checks whether given category title is already used
- *
- * @param category Category instance
- * @return Whether it has been found
- */
- private boolean isCategoryTitleUsed(final Category category) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
- // Trace message
- this.getLogger().trace("CALLED!"); //NOI18N
-
- // Delegate to frontend
- return this.categoryFrontend.isCategoryTitleUsed(category.getTitle());
- }
-
- /**
- * Checks if given product title is already used
- * @param title Product title to check
- * @return Whether the product title has already been used
- */
- private boolean isProductTitleUsed (final String title) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
- // Trace message
- this.getLogger().trace("CALLED!"); //NOI18N
-
- // Delegate to frontend
- return this.productFrontend.isProductTitleUsed(title);
- }
-
- @Override
- public void doAdminAddCategory (final Category category) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, CategoryTitleAlreadyUsedException {
- // Trace message
- this.getLogger().trace(MessageFormat.format("category={0} - CALLED!", category)); //NOI18N
-
- // request must not be null
- if (null == category) {
- // Is null
- throw new NullPointerException("category is null"); //NOI18N
- }
-
- // Get all fields
- String title = category.getTitle();
- Long parentId = category.getParentId();
-
- // Debug message
- this.getLogger().debug(MessageFormat.format("title={0},parentId={1}", title, parentId)); //NOI18N
-
- // Check all fields
- if (null == title) {
- // "title" not set
- throw new IllegalArgumentException("category title is not set."); //NOI18N
- } else if (title.isEmpty()) {
- // Is left empty
- throw new IllegalArgumentException("category title is empty."); //NOI18N
- } else if ((parentId == null) || (parentId == 0)) {
- // "parent" is not set
- throw new IllegalArgumentException(MessageFormat.format("category id is not valid: {0}", parentId));
- }
-
- // Try to check if title is used already
- if (this.isCategoryTitleUsed(category)) {
- // Title already used
- throw new CategoryTitleAlreadyUsedException(category);
- }
-
- // The category is not found, so add it to database
- this.categoryFrontend.addCategory(title, parentId);
-
- // Trace message
- this.getLogger().trace("EXIT!"); //NOI18N
- }
-
- @Override
- public void doAdminAddProduct (final Product product) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, ProductTitleAlreadyUsedException {
- // Trace message
- this.getLogger().trace(MessageFormat.format("product={0} - CALLED!", product)); //NOI18N
-
- // product must not be null
- if (null == product) {
- // Is null
- throw new NullPointerException("product is null"); //NOI18N
- }
-
- // Get title, price and category id
- String title = product.getTitle();
- Float price = product.getPrice();
- Long categoryId = product.getCategoryId();
- Boolean available = product.getAvailable();
-
- // Debug message
- this.getLogger().debug(MessageFormat.format("title={0},price={1},categoryId={2},available={3}", title, price, categoryId, available)); //NOI18N
-
- // Check all fields
- if (null == title) {
- // "title" not set
- throw new IllegalArgumentException("product title is not set."); //NOI18N
- } else if (title.isEmpty()) {
- // Is left empty
- throw new IllegalArgumentException("product title is empty."); //NOI18N
- } else if (null == price) {
- // "price" not set
- throw new IllegalArgumentException("product price is not set."); //NOI18N
- } else if (null == categoryId) {
- // "categoryId" not set
- throw new IllegalArgumentException("product category id is not set."); //NOI18N
- } else if (null == available) {
- // "available" not set
- throw new IllegalArgumentException("product availability is not set."); //NOI18N
- }
-
- // Try to check if title is used already
- if (this.isProductTitleUsed(product)) {
- // Title already used
- throw new ProductTitleAlreadyUsedException(product);
- }
-
- // The product is not found, so add it to database
- this.productFrontend.addProduct(title, price, categoryId, available);
-
- // Trace message
- this.getLogger().trace("EXIT!"); //NOI18N
- }
-
- @Override
- @Deprecated
- public String generateLinkForParent (final Category category) {
- // Trace message
- this.getLogger().trace(MessageFormat.format("category={0} - CALLED!", category)); //NOI18N
-
- // category must not be null
- if (null == category) {
- // Is null
- throw new NullPointerException("category is null"); //NOI18N
- }
-
- // Get parent id
- Long parentId = category.getParentId();
-
- // Is the id set?
- if (parentId > 0) {
- // Product HTML code for link
- throw new UnsupportedOperationException(MessageFormat.format("parentId={0} - Unfinished!", parentId)); //NOI18N
- }
-
- // No parent set
- return "Keine";
- }
-
- @Override
- @Deprecated
- public String getPrintableProductCategory (final Product product) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
- // Trace message
- this.getLogger().trace(MessageFormat.format("product={0} - CALLED!", product)); //NOI18N
-
- // product must not be null
- if (null == product) {
- // Abort here
- throw new NullPointerException("product is null"); //NOI18N
- }
-
- // Declare category
- Category category = this.categoryFrontend.getCategory(product);
-
- // Debug message
- this.getLogger().debug(MessageFormat.format("category={0}", category)); //NOI18N
-
- // Get decoded title
- String title = category.getDecodedTitle();
-
- // Trace message
- this.getLogger().trace(MessageFormat.format("title={0} - EXIT!", title)); //NOI18N
-
- // Return it
- return title;
- }
-
- /**
- * Checks if product's title is already used.
- *
- * @param request Request instance
- * @return Whether the product title is already used
- * @throws java.io.IOException If any IO error occurs
- * @throws org.mxchange.jcore.exceptions.BadTokenException If a bad token was found in a file-based database backend's file ... ;-)
- * @throws java.sql.SQLException If any SQL error occurs
- * @throws org.mxchange.jcore.exceptions.CorruptedDatabaseFileException If the database file is damaged
- * @throws java.lang.NoSuchMethodException If a method was not found
- * @throws java.lang.IllegalAccessException If the method cannot be accessed
- * @throws java.lang.reflect.InvocationTargetException Any other problems?
- */
- private boolean isProductTitleUsed (final Product product) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
- // Trace message
- this.getLogger().trace(MessageFormat.format("product={0} - CALLED!", product)); //NOI18N
-
- // request must not be null and "title" must be found and non-empty
- if (null == product) {
- // Abort here
- throw new NullPointerException("request is null"); //NOI18N
- }
-
- // Init title
- String title = product.getTitle();
-
- if (null == title) {
- // title is not set
- throw new IllegalArgumentException("product title is not set."); //NOI18N
- } else if (title.isEmpty()) {
- // Is left empty
- throw new IllegalArgumentException("product title is empty."); //NOI18N
- }
-
- // Default is not used
- boolean isUsed = this.isProductTitleUsed(title);
-
- // Trace message
- this.getLogger().trace(MessageFormat.format("isUsed={0} - EXIT!", isUsed)); //NOI18N
-
- // Return it
- return isUsed;
- }
-
- @Override
- @Deprecated
- public void doAdminHandleProductForms () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, ProductTitleAlreadyUsedException {
- // Deprecated method called
- throw new UnsupportedOperationException("Deprecated method has been called.");
- }
-
- @Override
- @Deprecated
- public void doAdminHandleCategoryForms () throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, CategoryTitleAlreadyUsedException {
- // Deprecated method called
- throw new UnsupportedOperationException("Deprecated method has been called.");
- }
-
- @Override
- public Product getProduct (final AddableBasketItem item) throws IOException, SQLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
- // Trace message
- this.getLogger().trace(MessageFormat.format("item={0} - CALLED!", item)); //NOI18N
-
- // item should not be null
- if (null == item) {
- // Abort here
- throw new NullPointerException("item is null"); //NOI18N
- }
-
- // Init product instance
- Product product = this.productFrontend.getProduct(item);
-
- // Trace message
- this.getLogger().trace(MessageFormat.format("product={0} - EXIT!", product)); //NOI18N //NOI18N
-
- // Return it
- return product;
- }
-}