package org.mxchange.pizzaapplication.application;
import java.io.IOException;
+import java.sql.SQLException;
import java.util.Iterator;
+import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.mxchange.jcore.application.Application;
import org.mxchange.jcore.exceptions.BadTokenException;
+import org.mxchange.jcore.exceptions.UnsupportedDatabaseBackendException;
import org.mxchange.pizzaapplication.category.Category;
+import org.mxchange.pizzaapplication.exceptions.CategoryTitleAlreadyUsedException;
+import org.mxchange.pizzaapplication.exceptions.ProductTitleAlreadyUsedException;
import org.mxchange.pizzaapplication.product.Product;
/**
public static final String HTTP_PARAM_AMOUNT = "amount"; //NOI18N
/**
- * HTTP parameter "choose"
+ * HTTP parameter "id"
*/
- public static final String HTTP_PARAM_CHOOSE = "choose"; //NOI18N
+ public static final String HTTP_PARAM_ITEM_ID = "id"; //NOI18N
+
+ /**
+ * HTTP parameter "type"
+ */
+ public static final String HTTP_PARAM_ITEM_TYPE = "type"; //NOI18N
/**
* Session key "ordered"
/**
* Mask for all parameters
+ * @deprecated Please refacture!
*/
- public static final String HTTP_PARAM_MASK = "%s[%s]"; //NOI18N
+ @Deprecated
+ static final String HTTP_PARAM_MASK = "%s[%s]"; //NOI18N
/**
* Some "getter" for amount from session
*/
public float getTotalPositionPriceFromRequestSession (final Product product, final HttpServletRequest request, final HttpSession session);
+ /**
+ * Initializes this instance with given ServletContext
+ *
+ * @param context Servlet context
+ * @throws org.mxchange.jcore.exceptions.UnsupportedDatabaseBackendException If the backend is unsupported
+ * @throws java.sql.SQLException If an SQL error occurs
+ * @throws java.io.IOException If an IO error occurs
+ * @throws org.mxchange.jcore.exceptions.BadTokenException If a bad token was found
+ */
+ public void init (final ServletContext context) throws UnsupportedDatabaseBackendException, SQLException, IOException, BadTokenException;
+
/**
* Checks whether the given product is choosen, request overules session.
*
public void setValueInSession (final HttpSession session, final String key, final Object value);
/**
- * Some "getter" for a an array of all products
+ * Some "getter" for a an array of only available products
*
+ * @return Only available products
+ * @throws javax.servlet.ServletException If anything went wrong
+ */
+ public Iterator<Product> getAvailableProducts () throws ServletException;
+
+ /**
+ * Some "getter" for a an array of all products
+ *
* @return All products
- * @throws java.io.IOException If an IO error occurs
- * @throws org.mxchange.jcore.exceptions.BadTokenException If a bad token was found
+ * @throws javax.servlet.ServletException If anything went wrong
*/
- public Iterator<Product> getProducts () throws IOException, BadTokenException;
+ public Iterator<Product> getAllProducts () throws ServletException;
/**
* Some "getter" for a an array of all categories
*
* @return All categories
- * @throws java.io.IOException If an IO error occurs
- * @throws org.mxchange.jcore.exceptions.BadTokenException If a bad token was found
+ * @throws javax.servlet.ServletException If anything went wrong
*/
- public Iterator<Category> getCategories () throws IOException, BadTokenException;
+ public Iterator<Category> getCategories () throws ServletException;
/**
* Checks if given Product instance is available and returns a printable
* @return Human-readable version of product availability
*/
public String getPrintableProduktAvailability (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 javax.servlet.ServletException If something unexpected happened
+ */
+ public String getPrintableProduktCategory (final Product product) throws ServletException;
+
+ /**
+ * Marks all choosen products as ordered
+ *
+ * @param request Request instance
+ * @param session Session instance
+ * @throws javax.servlet.ServletException If something unexpected happened
+ */
+ public void markAllChoosenProductsAsOrdered (final HttpServletRequest request, final HttpSession session) throws ServletException;
+
+ /**
+ * Adds given category data from request to database
+ *
+ * @param request Request instance
+ * @throws javax.servlet.ServletException If something unexpected happened
+ * @throws org.mxchange.pizzaapplication.exceptions.CategoryTitleAlreadyUsedException If the given title is already used
+ */
+ public void doAdminAddCategory (final HttpServletRequest request) throws ServletException, CategoryTitleAlreadyUsedException;
+
+ /**
+ * Adds given product data from request to database
+ *
+ * @param request Request instance
+ * @throws javax.servlet.ServletException If something unexpected happened
+ * @throws org.mxchange.pizzaapplication.exceptions.ProductTitleAlreadyUsedException If the given product title is already used
+ */
+ public void doAdminAddProduct (final HttpServletRequest request) throws ServletException, ProductTitleAlreadyUsedException;
+
+ /**
+ * Generates link HTML code for given category's parent id, if set. This
+ * link then points to products.jsp?category_id=x
+ *
+ * @param category Category instance
+ * @return HTML code
+ */
+ public String generateLinkForParent (final Category category);
+
+ /**
+ * Handles admin product form requests
+ *
+ * @param request Request instance
+ * @param response Response instance
+ * @throws ServletException If something unexpected happened
+ */
+ public void doAdminHandleProductForms (final HttpServletRequest request, final HttpServletResponse response) throws ServletException;
+
+ /**
+ * Handles admin category form requests
+ *
+ * @param request Request instance
+ * @param response Response instance
+ * @throws ServletException If something unexpected happened
+ */
+ public void doAdminHandleCategoryForms (final HttpServletRequest request, final HttpServletResponse response) throws ServletException;
}