From: Roland Haeder Date: Fri, 4 Sep 2015 07:54:50 +0000 (+0200) Subject: Initial import X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=732ce331a2b392930963b9e156a3a0ede18e5e99;p=pizzaservice-ejb.git Initial import Signed-off-by:Roland Häder --- 732ce331a2b392930963b9e156a3a0ede18e5e99 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1cd7a86 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/nbproject/private/ +/manifest.mf +/build/ +/dist/ +/*.properties diff --git a/PizzaService-ejb/build.xml b/PizzaService-ejb/build.xml new file mode 100644 index 0000000..20d50cf --- /dev/null +++ b/PizzaService-ejb/build.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + Builds, tests, and runs the project PizzaService-ejb. + + + diff --git a/PizzaService-ejb/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar b/PizzaService-ejb/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar new file mode 100644 index 0000000..eaf6790 Binary files /dev/null and b/PizzaService-ejb/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar differ diff --git a/PizzaService-ejb/lib/javaee-endorsed-api-6.0/javaee-doc-api.jar b/PizzaService-ejb/lib/javaee-endorsed-api-6.0/javaee-doc-api.jar new file mode 100644 index 0000000..2859e3d Binary files /dev/null and b/PizzaService-ejb/lib/javaee-endorsed-api-6.0/javaee-doc-api.jar differ diff --git a/PizzaService-ejb/lib/javaee-endorsed-api-6.0/javax.annotation.jar b/PizzaService-ejb/lib/javaee-endorsed-api-6.0/javax.annotation.jar new file mode 100644 index 0000000..958c139 Binary files /dev/null and b/PizzaService-ejb/lib/javaee-endorsed-api-6.0/javax.annotation.jar differ diff --git a/PizzaService-ejb/lib/javaee-endorsed-api-6.0/jaxb-api-osgi.jar b/PizzaService-ejb/lib/javaee-endorsed-api-6.0/jaxb-api-osgi.jar new file mode 100644 index 0000000..ec66e86 Binary files /dev/null and b/PizzaService-ejb/lib/javaee-endorsed-api-6.0/jaxb-api-osgi.jar differ diff --git a/PizzaService-ejb/lib/javaee-endorsed-api-6.0/webservices-api-osgi.jar b/PizzaService-ejb/lib/javaee-endorsed-api-6.0/webservices-api-osgi.jar new file mode 100644 index 0000000..55458b6 Binary files /dev/null and b/PizzaService-ejb/lib/javaee-endorsed-api-6.0/webservices-api-osgi.jar differ diff --git a/PizzaService-ejb/lib/jcore.jar b/PizzaService-ejb/lib/jcore.jar new file mode 100644 index 0000000..18a2b6d Binary files /dev/null and b/PizzaService-ejb/lib/jcore.jar differ diff --git a/PizzaService-ejb/lib/jsfcore.jar b/PizzaService-ejb/lib/jsfcore.jar new file mode 100644 index 0000000..2996aba Binary files /dev/null and b/PizzaService-ejb/lib/jsfcore.jar differ diff --git a/PizzaService-ejb/lib/jshop.jar b/PizzaService-ejb/lib/jshop.jar new file mode 100644 index 0000000..e555766 Binary files /dev/null and b/PizzaService-ejb/lib/jshop.jar differ diff --git a/PizzaService-ejb/lib/log4j-api-2.3.jar b/PizzaService-ejb/lib/log4j-api-2.3.jar new file mode 100644 index 0000000..2a61bbe Binary files /dev/null and b/PizzaService-ejb/lib/log4j-api-2.3.jar differ diff --git a/PizzaService-ejb/lib/log4j-core-2.3.jar b/PizzaService-ejb/lib/log4j-core-2.3.jar new file mode 100644 index 0000000..5438b0b Binary files /dev/null and b/PizzaService-ejb/lib/log4j-core-2.3.jar differ diff --git a/PizzaService-ejb/lib/nblibraries.properties b/PizzaService-ejb/lib/nblibraries.properties new file mode 100644 index 0000000..d9714fb --- /dev/null +++ b/PizzaService-ejb/lib/nblibraries.properties @@ -0,0 +1,11 @@ +libs.CopyLibs.classpath=\ + ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar +libs.CopyLibs.displayName=CopyLibs Task +libs.CopyLibs.prop-version=2.0 +libs.javaee-endorsed-api-6.0.classpath=\ + ${base}/javaee-endorsed-api-6.0/javax.annotation.jar;\ + ${base}/javaee-endorsed-api-6.0/jaxb-api-osgi.jar;\ + ${base}/javaee-endorsed-api-6.0/webservices-api-osgi.jar +libs.javaee-endorsed-api-6.0.displayName=Java EE 6 Endorsed API Library +libs.javaee-endorsed-api-6.0.javadoc=\ + ${base}/javaee-endorsed-api-6.0/javaee-doc-api.jar diff --git a/PizzaService-ejb/nbproject/ant-deploy.xml b/PizzaService-ejb/nbproject/ant-deploy.xml new file mode 100644 index 0000000..2d5f877 --- /dev/null +++ b/PizzaService-ejb/nbproject/ant-deploy.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PizzaService-ejb/nbproject/build-impl.xml b/PizzaService-ejb/nbproject/build-impl.xml new file mode 100644 index 0000000..930387c --- /dev/null +++ b/PizzaService-ejb/nbproject/build-impl.xml @@ -0,0 +1,1258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set build.generated.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + +The Java EE server classpath is not correctly set up - server home directory is missing. +Either open the project in the IDE and assign the server or setup the server classpath manually. +For example like this: + ant -Dj2ee.server.home=<app_server_installation_directory> + + +The Java EE server classpath is not correctly set up. Your active server type is ${j2ee.server.type}. +Either open the project in the IDE and assign the server or setup the server classpath manually. +For example like this: + ant -Duser.properties.file=<path_to_property_file> (where you put the property "j2ee.platform.classpath" in a .properties file) +or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties file is used) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +The libs.CopyLibs.classpath property is not set up. +This property must point to +org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part +of NetBeans IDE installation and is usually located at +<netbeans_installation>/java<version>/ant/extra folder. +Either open the project in the IDE and make sure CopyLibs library +exists or setup the property manually. For example like this: + ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set main.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PizzaService-ejb/nbproject/genfiles.properties b/PizzaService-ejb/nbproject/genfiles.properties new file mode 100644 index 0000000..3d72619 --- /dev/null +++ b/PizzaService-ejb/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=60d20eb4 +build.xml.script.CRC32=cabe2e92 +build.xml.stylesheet.CRC32=5910fda3@1.51.1 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=60d20eb4 +nbproject/build-impl.xml.script.CRC32=2a012160 +nbproject/build-impl.xml.stylesheet.CRC32=6096d939@1.51.1 diff --git a/PizzaService-ejb/nbproject/private/private.properties b/PizzaService-ejb/nbproject/private/private.properties new file mode 100644 index 0000000..82c5935 --- /dev/null +++ b/PizzaService-ejb/nbproject/private/private.properties @@ -0,0 +1,9 @@ +deploy.ant.properties.file=C:\\Users\\KLC\\AppData\\Roaming\\NetBeans\\8.0.2\\config\\GlassFishEE6\\Properties\\gfv3241279163.properties +j2ee.platform.is.jsr109=true +j2ee.server.domain=C:/Program Files/glassfish-4.0/glassfish/domains/domain1 +j2ee.server.home=C:/Program Files/glassfish-4.0/glassfish +j2ee.server.instance=[C:\\Program Files\\glassfish-4.0\\glassfish;C:\\Program Files\\glassfish-4.0\\glassfish\\domains\\domain1]deployer:gfv3ee6wc:localhost:4848 +j2ee.server.middleware=C:/Program Files/glassfish-4.0 +javac.debug=true +javadoc.preview=true +netbeans.user=C:\\Users\\KLC\\AppData\\Roaming\\NetBeans\\8.0.2 diff --git a/PizzaService-ejb/nbproject/project.properties b/PizzaService-ejb/nbproject/project.properties new file mode 100644 index 0000000..725afd7 --- /dev/null +++ b/PizzaService-ejb/nbproject/project.properties @@ -0,0 +1,90 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=true +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form,**/.nbattrs +build.dir=build +build.ear.classes.dir=${build.dir}/classes +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +debug.classpath=${javac.classpath}:${build.classes.dir} +debug.test.classpath=\ + ${run.test.classpath} +dist.dir=dist +dist.ear.jar=${dist.dir}/${jar.name} +dist.jar=${dist.dir}/${jar.name} +dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath=\ + ${libs.javaee-endorsed-api-6.0.classpath} +excludes= +file.reference.jcore.jar=lib/jcore.jar +file.reference.jsfcore.jar=lib/jsfcore.jar +file.reference.jshop.jar=lib/jshop.jar +file.reference.log4j-api-2.3.jar=lib\\log4j-api-2.3.jar +file.reference.log4j-core-2.3.jar=lib\\log4j-core-2.3.jar +includes=** +j2ee.compile.on.save=true +j2ee.deploy.on.save=true +j2ee.platform=1.7 +j2ee.platform.classpath=${j2ee.server.middleware}/mq/lib/jaxm-api.jar:${j2ee.server.home}/modules/endorsed/javax.annotation-api.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/javax.ejb-api.jar:${j2ee.server.home}/modules/javax.el.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent-api.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent.jar:${j2ee.server.home}/modules/javax.enterprise.deploy-api.jar:${j2ee.server.home}/modules/javax.faces.jar:${j2ee.server.home}/modules/javax.inject.jar:${j2ee.server.home}/modules/javax.interceptor-api.jar:${j2ee.server.home}/modules/javax.jms-api.jar:${j2ee.server.home}/modules/javax.json.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.management.j2ee-api.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.resource-api.jar:${j2ee.server.home}/modules/javax.security.auth.message-api.jar:${j2ee.server.home}/modules/javax.security.jacc-api.jar:${j2ee.server.home}/modules/javax.servlet-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.transaction-api.jar:${j2ee.server.home}/modules/javax.websocket-api.jar:${j2ee.server.home}/modules/javax.ws.rs-api.jar:${j2ee.server.home}/modules/javax.xml.registry-api.jar:${j2ee.server.home}/modules/javax.xml.rpc-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar +j2ee.platform.embeddableejb.classpath=${j2ee.server.home}/lib/embedded/glassfish-embedded-static-shell.jar +j2ee.platform.wscompile.classpath=${j2ee.server.home}/modules/webservices-osgi.jar +j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar +j2ee.platform.wsimport.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar +j2ee.platform.wsit.classpath= +j2ee.server.type=gfv3ee6 +jar.compress=false +jar.name=PizzaService-ejb.jar +jars.in.ejbjar=false +javac.classpath=\ + ${reference.PizzaService-lib.jar}:\ + ${file.reference.jcore.jar}:\ + ${file.reference.jsfcore.jar}:\ + ${file.reference.jshop.jar}:\ + ${file.reference.log4j-api-2.3.jar}:\ + ${file.reference.log4j-core-2.3.jar} +javac.debug=true +javac.deprecation=false +javac.processorpath=\ + ${javac.classpath} +javac.source=1.7 +javac.target=1.7 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.processorpath=${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.preview=true +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +meta.inf=${source.root}/conf +meta.inf.excludes=sun-cmp-mappings.xml +platform.active=default_platform +project.PizzaService-lib=../../PizzaService-lib +reference.PizzaService-lib.jar=${project.PizzaService-lib}/dist/PizzaService-lib.jar +resource.dir=setup +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +# Space-separated list of JVM arguments used when running a class with a main method or a unit test +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value): +runmain.jvmargs= +source.encoding=UTF-8 +source.reference.jcore.jar=../jcore/src/ +source.reference.jsfcore.jar=../jsfcore/src/ +source.reference.jshop.jar=../jshop/src/ +source.root=src +src.dir=${source.root}/java +test.src.dir=test diff --git a/PizzaService-ejb/nbproject/project.xml b/PizzaService-ejb/nbproject/project.xml new file mode 100644 index 0000000..813c622 --- /dev/null +++ b/PizzaService-ejb/nbproject/project.xml @@ -0,0 +1,35 @@ + + + org.netbeans.modules.j2ee.ejbjarproject + + + PizzaService-ejb + 1.6.5 + reference.PizzaService-lib.jar + file.reference.jcore.jar + file.reference.jsfcore.jar + file.reference.jshop.jar + file.reference.log4j-api-2.3.jar + file.reference.log4j-core-2.3.jar + + + + + + + + + .\lib\nblibraries.properties + + + + PizzaService-lib + jar + + jar + clean + jar + + + + diff --git a/PizzaService-ejb/src/conf/MANIFEST.MF b/PizzaService-ejb/src/conf/MANIFEST.MF new file mode 100644 index 0000000..59499bc --- /dev/null +++ b/PizzaService-ejb/src/conf/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/controller/PizzaBean.java b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/controller/PizzaBean.java new file mode 100644 index 0000000..e307676 --- /dev/null +++ b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/controller/PizzaBean.java @@ -0,0 +1,163 @@ +/* + * 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 . + */ +package org.mxchange.pizzaapplication.beans.controller; + +import java.util.Deque; +import java.util.Iterator; +import javax.faces.FacesException; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import org.mxchange.jshop.beans.FrameworkBean; +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 PizzaBean extends FrameworkBean { + /** + * Initializes this instance + * + * @throws FacesException If something was wrong + */ + public void init () throws FacesException; + + /** + * Some "getter" for an iterator of only available products + * + * @return Only available products + * @throws javax.servlet.ServletException If anything went wrong + */ + public Iterator getAvailableProductsIterator () throws ServletException; + + /** + * Some "getter" for an iterator of all products + * + * @return All products + * @throws javax.servlet.ServletException If anything went wrong + */ + public Iterator getAllProductsIterator () throws ServletException; + + /** + * Some "getter" for an iterator of all categories + * + * @return All categories + * @throws javax.servlet.ServletException If anything went wrong + */ + public Iterator getAllCategoriesIterator () throws ServletException; + + /** + * Some "getter" for a linked list of only available products + * + * @return Only available products + * @throws javax.servlet.ServletException If anything went wrong + */ + public Deque getAvailableProducts () throws ServletException; + + /** + * Some "getter" for a linked list of all products + * + * @return All products + * @throws javax.servlet.ServletException If anything went wrong + */ + public Deque getAllProducts () throws ServletException; + + /** + * Some "getter" for a linked list of all categories + * + * @return All categories + * @throws javax.servlet.ServletException If anything went wrong + */ + public Deque getAllCategories () throws ServletException; + + /** + * 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 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 + * @deprecated Old lost code + */ + @Deprecated + public String getPrintableProduktCategory (final Product product) 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.jshop.exceptions.CategoryTitleAlreadyUsedException If the given title is already used + */ + public void doAdminAddCategory (final ServletRequest 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.jshop.exceptions.ProductTitleAlreadyUsedException If the given product title is already used + */ + public void doAdminAddProduct (final ServletRequest request) throws ServletException, ProductTitleAlreadyUsedException; + + /** + * Handles admin product form requests + * + * @throws ServletException If something unexpected happened + */ + public void doAdminHandleProductForms () throws ServletException; + + /** + * Handles admin category form requests + * + * @throws ServletException If something unexpected happened + */ + public void doAdminHandleCategoryForms () throws ServletException; + + /** + * Some "getter" for a product from given item + * @param item Item instance + * @return A Product instance + * @throws javax.servlet.ServletException If something bad happens + */ + public Product getProduct (final AddableBasketItem item) throws ServletException; +} diff --git a/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/controller/PizzaServiceBean.java b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/controller/PizzaServiceBean.java new file mode 100644 index 0000000..76cedd6 --- /dev/null +++ b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/controller/PizzaServiceBean.java @@ -0,0 +1,232 @@ +/* + * 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 . + */ +package org.mxchange.pizzaapplication.beans.controller; + +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 javax.annotation.PostConstruct; +import javax.enterprise.context.SessionScoped; +import javax.faces.FacesException; +import javax.inject.Named; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import org.mxchange.jcore.exceptions.BadTokenException; +import org.mxchange.jcore.exceptions.CorruptedDatabaseFileException; +import org.mxchange.jcore.exceptions.UnsupportedDatabaseBackendException; +import org.mxchange.jshop.beans.BaseFrameworkBean; +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; +import org.mxchange.pizzaapplication.application.PizzaApplication; +import org.mxchange.pizzaapplication.application.PizzaServiceApplication; + +/** + * Main application class + * + * @author Roland Haeder + */ +@Named("controller") +@SessionScoped +public class PizzaServiceBean extends BaseFrameworkBean implements PizzaBean { + /** + * Serial id + */ + private static final long serialVersionUID = 58137539530279L; + + /** + * Pizza application + */ + private final PizzaApplication app; + + /** + * Initializer block + */ + { + // Get new application instance + this.getLogger().debug("INITIALIZER!"); //NOI18N + this.app = new PizzaServiceApplication(); + } + + /** + * Default constructor + */ + public PizzaServiceBean () { + this.getLogger().trace("CALLED!"); //NOI18N + } + + @Override + @PostConstruct + public void init () throws FacesException { + // Trace message + this.getLogger().trace(MessageFormat.format("application={0} - CALLED!", this.getApplication())); //NOI18N + + // Must not be null + if (this.getApplication() == null) { + // Abort here + throw new NullPointerException("application is null"); //NOI18N + } + + try { + // Call init method + this.app.init(this.getApplication()); + } catch (final UnsupportedDatabaseBackendException | SQLException | IOException | BadTokenException ex) { + // Continue to throw + throw new FacesException(ex); + } + } + + @Override + @Deprecated + public String getPrintableProduktAvailability (final Product product) { + return this.app.getPrintableProduktAvailability(product); + } + + @Override + public Iterator getAvailableProductsIterator () throws ServletException { + try { + return this.app.getAvailableProductsIterator(); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public Iterator getAllProductsIterator () throws ServletException { + try { + return this.app.getAllProductsIterator(); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public Deque getAvailableProducts () throws ServletException { + try { + return this.app.getAvailableProducts(); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public Deque getAllProducts () throws ServletException { + try { + return this.app.getAllProducts(); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public Iterator getAllCategoriesIterator () throws ServletException { + try { + return this.app.getAllCategoriesIterator(); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public Deque getAllCategories () throws ServletException { + try { + return this.app.getAllCategories(); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public void doAdminAddCategory (final ServletRequest request) throws ServletException, CategoryTitleAlreadyUsedException { + try { + this.app.doAdminAddCategory(request); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public void doAdminAddProduct (final ServletRequest request) throws ServletException, ProductTitleAlreadyUsedException { + try { + this.app.doAdminAddProduct(request); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + @Deprecated + public String getPrintableProduktCategory (final Product product) throws ServletException { + try { + return this.app.getPrintableProductCategory(product); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public void doAdminHandleProductForms () throws ServletException { + try { + this.app.doAdminHandleProductForms(this.getRequest(), this.getResponse()); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException | ProductTitleAlreadyUsedException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public void doAdminHandleCategoryForms () throws ServletException { + try { + this.app.doAdminHandleCategoryForms(this.getRequest(), this.getResponse()); + } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException | CategoryTitleAlreadyUsedException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public Product getProduct (final AddableBasketItem item) throws ServletException { + try { + // Deligate to application + return this.app.getProduct(item); + } catch (IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + @Deprecated + public String generateLinkForParent (final Category category) { + // Deligate to app + return this.app.generateLinkForParent(category); + } +} diff --git a/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/customer/CustomerBean.java b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/customer/CustomerBean.java new file mode 100644 index 0000000..f913b47 --- /dev/null +++ b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/customer/CustomerBean.java @@ -0,0 +1,293 @@ +/* + * 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 . + */ +package org.mxchange.pizzaapplication.beans.customer; + +import java.lang.reflect.Field; +import java.util.Iterator; +import java.util.Map; +import javax.servlet.ServletException; +import org.mxchange.jcore.client.Client; +import org.mxchange.jcore.contact.Gender; +import org.mxchange.jshop.beans.FrameworkBean; + +/** + * An interface for customer beans + * + * @author Roland Haeder + */ +public interface CustomerBean extends FrameworkBean { + /** + * Returns an iterator of all values from this object + * + * @return An iterator + * @throws javax.servlet.ServletException If something bad happens + */ + public Iterator> iterator ()throws ServletException; + + /** + * Some "getter" for translated gender of the contact + * + * @return Translated / human-readable gender + */ + public String getTranslatedGender (); + + /** + * Gender of the contact + * + * @return the gender + */ + public Gender getGender (); + + /** + * Gender of the contact + * + * @param gender the gender to set + */ + public void setGender (final Gender gender); + + /** + * First name + * + * @return the first name + */ + public String getFirstName (); + + /** + * First name + * + * @param firstName the first name to set + */ + public void setFirstName (final String firstName); + + /** + * Family name + * + * @return the familyName + */ + public String getFamilyName (); + + /** + * Family name + * + * @param familyName the familyName to set + */ + public void setFamilyName (final String familyName); + + /** + * Companyname + * + * @return the companyName + */ + public String getCompanyName (); + + /** + * Companyname + * + * @param companyName the companyName to set + */ + public void setCompanyName (final String companyName); + + /** + * Street + * + * @return the street + */ + public String getStreet (); + + /** + * Street + * + * @param street the street to set + */ + public void setStreet (final String street); + + /** + * House number + * + * @return the houseNumber + */ + public Long getHouseNumber (); + + /** + * House number + * + * @param houseNumber the houseNumber to set + */ + public void setHouseNumber (final Long houseNumber); + + /** + * ZIP code + * + * @return the zipCode + */ + public Long getZipCode (); + + /** + * ZIP code + * + * @param zipCode the zipCode to set + */ + public void setZipCode (final Long zipCode); + + /** + * City + * + * @return the city + */ + public String getCity (); + + /** + * City + * + * @param city the city to set + */ + public void setCity (final String city); + + /** + * Country code + * + * @return the countryCode + */ + public String getCountryCode (); + + /** + * Country code + * + * @param countryCode the countryCode to set + */ + public void setCountryCode (final String countryCode); + + /** + * Email address + * + * @return the emailAddress + */ + public String getEmailAddress (); + + /** + * Email address + * + * @param emailAddress the emailAddress to set + */ + public void setEmailAddress (final String emailAddress); + + /** + * Phone number + * + * @return the phoneNumber + */ + public String getPhoneNumber (); + + /** + * Phone number + * + * @param phoneNumber the phoneNumber to set + */ + public void setPhoneNumber (final String phoneNumber); + + /** + * Fax number + * + * @return the faxNumber + */ + public String getFaxNumber (); + + /** + * Fax number + * + * @param faxNumber the faxNumber to set + */ + public void setFaxNumber (final String faxNumber); + + /** + * Cellphone number + * + * @return the cellphoneNumber + */ + public String getCellphoneNumber (); + + /** + * Cellphone number + * + * @param cellphoneNumber the cellphoneNumber to set + */ + public void setCellphoneNumber (final String cellphoneNumber); + + /** + * Birth day + * + * @return the birthday + */ + public String getBirthday (); + + /** + * Birth day + * + * @param birthday the birthday to set + */ + public void setBirthday (final String birthday); + + /** + * Comments + * + * @return the comment + */ + public String getComment (); + + /** + * Comments + * + * @param comment the comment to set + */ + public void setComment (final String comment); + + /** + * Checks whether the contact is user's own data + * + * @return Own data? + */ + public boolean isOwnContact (); + + /** + * Shows the contact to the user + * + * @param client Client instance to call back + */ + public void show (final Client client); + + /** + * Some "getter for a value from given column name. This name will be + * translated into a method name and then this method is called. + * + * @param columnName Column name + * @return Value from field + * @throws IllegalArgumentException Some implementations may throw this + * @throws javax.servlet.ServletException If something bad happens + */ + public Object getValueFromColumn (final String columnName) throws ServletException; + + /** + * Some "setter" for a value from given column name. You may wish to overwrite this method in your + * own class. + * + * @param columnName Column name + * @param value Value to set in object's field + * @throws IllegalArgumentException Some implementations may throw this + * @throws javax.servlet.ServletException If something bad happens + */ + public void setValueFromColumn (final String columnName, final Object value) throws ServletException; +} diff --git a/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/customer/PizzaServiceCustomerBean.java b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/customer/PizzaServiceCustomerBean.java new file mode 100644 index 0000000..68b4eea --- /dev/null +++ b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/customer/PizzaServiceCustomerBean.java @@ -0,0 +1,311 @@ +/* + * 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 . + */ +package org.mxchange.pizzaapplication.beans.customer; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.util.Iterator; +import java.util.Map; +import javax.enterprise.context.SessionScoped; +import javax.inject.Named; +import javax.servlet.ServletException; +import org.mxchange.jcore.client.Client; +import org.mxchange.jcore.contact.Contact; +import org.mxchange.jcore.contact.Gender; +import org.mxchange.jshop.beans.BaseFrameworkBean; +import org.mxchange.pizzaapplication.customer.PizzaServiceCustomer; + +/** + * A customer bean which hides the customer instance + * + * @author Roland Haeder + */ +@Named("customer") +@SessionScoped +public class PizzaServiceCustomerBean extends BaseFrameworkBean implements CustomerBean { + /** + * Serial number + */ + private static final long serialVersionUID = 542145347916L; + + /** + * Contact instance + */ + private Contact contact; + + /** + * Default constructor + */ + public PizzaServiceCustomerBean () { + // Instance customer + Contact customer = new PizzaServiceCustomer(); + + // And set it here + this.setContact(customer); + } + + @Override + public String getBirthday () { + // Deligate to "hidden" object + return this.getContact().getBirthday(); + } + + @Override + public void setBirthday (final String birthday) { + // Deligate to "hidden" object + this.getContact().setBirthday(birthday); + } + + @Override + public String getCellphoneNumber () { + // Deligate to "hidden" object + return this.getContact().getCellphoneNumber(); + } + + @Override + public void setCellphoneNumber (final String cellphoneNumber) { + // Deligate to "hidden" object + this.getContact().setCellphoneNumber(cellphoneNumber); + } + + @Override + public String getCity () { + // Deligate to "hidden" object + return this.getContact().getCity(); + } + + @Override + public void setCity (final String city) { + // Deligate to "hidden" object + this.getContact().setCity(city); + } + + @Override + public String getComment () { + // Deligate to "hidden" object + return this.getContact().getComment(); + } + + @Override + public void setComment (final String comment) { + // Deligate to "hidden" object + this.getContact().setComment(comment); + } + + @Override + public String getCompanyName () { + // Deligate to "hidden" object + return this.getContact().getCompanyName(); + } + + @Override + public void setCompanyName (final String companyName) { + // Deligate to "hidden" object + this.getContact().setCompanyName(companyName); + } + + @Override + public String getCountryCode () { + // Deligate to "hidden" object + return this.getContact().getCountryCode(); + } + + @Override + public void setCountryCode (final String countryCode) { + // Deligate to "hidden" object + this.getContact().setCountryCode(countryCode); + } + + @Override + public String getEmailAddress () { + // Deligate to "hidden" object + return this.getContact().getEmailAddress(); + } + + @Override + public void setEmailAddress (final String emailAddress) { + // Deligate to "hidden" object + this.getContact().setEmailAddress(emailAddress); + } + + @Override + public String getFamilyName () { + // Trace call + //* NOISY-DEBUG: */ this.getLogger().trace("CALLED!"); + + // Deligate to "hidden" object + return this.getContact().getFamilyName(); + } + + @Override + public void setFamilyName (final String familyName) { + // Trace call + //* NOISY-DEBUG: */ this.getLogger().trace(MessageFormat.format("familyName={0} - CALLED!", familyName)); + + // Deligate to "hidden" object + this.getContact().setFamilyName(familyName); + } + + @Override + public String getFaxNumber () { + // Deligate to "hidden" object + return this.getContact().getFaxNumber(); + } + + @Override + public void setFaxNumber (final String faxNumber) { + // Deligate to "hidden" object + this.getContact().setFaxNumber(faxNumber); + } + + @Override + public Gender getGender () { + // Deligate to "hidden" object + return this.getContact().getGender(); + } + + @Override + public void setGender (final Gender gender) { + // Deligate to "hidden" object + this.getContact().setGender(gender); + } + + @Override + public Long getHouseNumber () { + // Deligate to "hidden" object + return this.getContact().getHouseNumber(); + } + + @Override + public void setHouseNumber (final Long houseNumber) { + // Deligate to "hidden" object + this.getContact().setHouseNumber(houseNumber); + } + + @Override + public String getPhoneNumber () { + // Deligate to "hidden" object + return this.getContact().getPhoneNumber(); + } + + @Override + public void setPhoneNumber (final String phoneNumber) { + // Deligate to "hidden" object + this.getContact().setPhoneNumber(phoneNumber); + } + + @Override + public String getStreet () { + // Deligate to "hidden" object + return this.getContact().getStreet(); + } + + @Override + public void setStreet (final String street) { + // Deligate to "hidden" object + this.getContact().setStreet(street); + } + + @Override + public String getFirstName () { + // Deligate to "hidden" object + return this.getContact().getFirstName(); + } + + @Override + public void setFirstName (final String firstName) { + // Deligate to "hidden" object + this.getContact().setFirstName(firstName); + } + + @Override + public String getTranslatedGender () { + // Deligate to "hidden" object + return this.getContact().getTranslatedGender(); + } + + @Override + public Long getZipCode () { + // Deligate to "hidden" object + return this.getContact().getZipCode(); + } + + @Override + public void setZipCode (final Long zipCode) { + // Deligate to "hidden" object + this.getContact().setZipCode(zipCode); + } + + @Override + public boolean isOwnContact () { + throw new UnsupportedOperationException("Not supported yet."); //NOI18N + } + + @Override + public Iterator> iterator () throws ServletException { + try { + // Deligate to "hidden" object + return this.getContact().iterator(); + } catch (final NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public void show (final Client client) { + throw new UnsupportedOperationException("Not supported yet."); //NOI18N + } + + @Override + public Object getValueFromColumn (final String columnName) throws ServletException { + try { + // Deligate to "hidden" object + return this.getContact().getValueFromColumn(columnName); + } catch (final IllegalArgumentException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + @Override + public void setValueFromColumn (final String columnName, final Object value) throws ServletException { + try { + // Deligate to "hidden" object + this.getContact().setValueFromColumn(columnName, value); + } catch (final NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { + // Continue to throw + throw new ServletException(ex); + } + } + + /** + * Setter for Contact instance + * @param contact Contact instance to set + */ + private void setContact (final Contact contact) { + this.contact = contact; + } + + /** + * Getter for Contact instance + * @return Contact instance + */ + private Contact getContact () { + return this.contact; + } +} diff --git a/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/tags/basket/BasketTag.java b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/tags/basket/BasketTag.java new file mode 100644 index 0000000..139e50b --- /dev/null +++ b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/tags/basket/BasketTag.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2015 quix0r + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.pizzaapplication.tags.basket; + +import javax.servlet.jsp.tagext.BodyTag; +import org.mxchange.jshop.beans.basket.BasketBean; + +/** + * + * @author quix0r + */ +public interface BasketTag extends BodyTag { + + /** + * @return the basket + */ + public BasketBean getBasket (); + + /** + * @param basket the basket to set + */ + public void setBasket (final BasketBean basket); +} diff --git a/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/tags/basket/MiniBasketTag.java b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/tags/basket/MiniBasketTag.java new file mode 100644 index 0000000..eff5214 --- /dev/null +++ b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/tags/basket/MiniBasketTag.java @@ -0,0 +1,180 @@ +/* + * 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 . + */ +package org.mxchange.pizzaapplication.tags.basket; + +import java.io.IOException; +import java.text.MessageFormat; +import javax.servlet.ServletException; +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.tagext.BodyTagSupport; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.mxchange.jshop.beans.basket.BasketBean; +import org.mxchange.jshop.item.AddableBasketItem; +import org.mxchange.jshop.product.Product; +import org.mxchange.pizzaapplication.beans.controller.PizzaBean; + +/** + * A basket tag that outputs a small basket and a link to the full basket website. + * + * @author Roland Haeder + */ +public class MiniBasketTag extends BodyTagSupport implements BasketTag { + /** + * Serial number + */ + private static final long serialVersionUID = 457415727452384L; + + /** + * Basket instance + */ + private BasketBean basket; + + /** + * Logger instance + */ + private final Logger LOG; + + /** + * Initializer + */ + { + this.LOG = LogManager.getLogger(this); + } + + /** + * Outputs a div container with last added item + a link to the basket + * web page. + * + * @return No need to process the body + * @throws JspException If anything happens + */ + @Override + public int doStartTag () throws JspException { + // Trace message + this.LOG.trace("CALLED!"); //NOI18N + + // Init output + StringBuilder out = new StringBuilder("
\n"); //NOI18N + + // basket should not be null + if (this.getBasket() == null) { + // Not set + throw new NullPointerException("basket instance is null"); //NOI18N + } + + try { + // Some entries found? + if (this.getBasket().isEmpty()) { + // Empty basket + out.append("
\n"); //NOI18N + out.append(this.getBasket().getMessageStringFromKey("MiniBasketTag.basket_is_empty")).append("\n"); //NOI18N + out.append("
\n"); //NOI18N + } else { + // Get all items + AddableBasketItem item = this.getBasket().getLast(); + + // item cannot be null here + if (null == item) { + // Abort here + throw new NullPointerException("item is null"); //NOI18N + } + + // Get application bean from session + PizzaBean bean = (PizzaBean) this.getBasket().getSession().getAttribute("controller"); //NOI18N + + // Debug log + this.LOG.debug(MessageFormat.format("bean={0}", bean)); //NOI18N + + // Should not be null + if (null == bean) { + // Abort here + throw new NullPointerException("bean is null"); //NOI18N + } + + // Get product instance + Product product = bean.getProduct(item); + + // Debug message + this.LOG.debug(MessageFormat.format("product={0}", product)); //NOI18N + + // Get last num rows + int lastNumRows = this.getBasket().getLastNumRows(); + + // Debug message + this.LOG.debug(MessageFormat.format("lastNumRows={0}", lastNumRows)); //NOI18N + + // Output all + out.append("
\n"); //NOI18N + out.append("
\n"); //NOI18N + out.append(" ").append(this.getBasket().getMessageStringFromKey("MiniBasketTag.header")).append("\n"); //NOI18N + out.append("
\n"); //NOI18N + out.append("
\n"); //NOI18N + out.append(" ").append(MessageFormat.format(this.getBasket().getMessageStringFromKey("MiniBasketTag.last_item"), product.getTitle())); //NOI18N + out.append("
\n"); //NOI18N + out.append("
\n"); //NOI18N + out.append(" ").append(MessageFormat.format(this.getBasket().getMessageStringFromKey("MiniBasketTag.additional_items"), (lastNumRows - 1))); //NOI18N + out.append("
\n"); //NOI18N + out.append("
\n"); //NOI18N + out.append(" ").append(this.getBasket().getMessageStringFromKey("MiniBasketTag.to_basket")).append("\n"); //NOI18N + out.append("
\n"); //NOI18N + out.append("
\n"); //NOI18N + } + } catch (final ServletException ex) { + // Continue to throw + throw new JspException(ex); + } + + try { + // Get output instance and write it + this.pageContext.getOut().print(out.toString()); + } catch (final IOException ex) { + // Continue to throw + throw new JspException(ex); + } + + // Trace message + this.LOG.trace(MessageFormat.format("Returning {0} ... - EXIT!", SKIP_BODY)); //NOI18N + + // Don't process any body + return SKIP_BODY; + } + + /** + * @return the basket + */ + @Override + public BasketBean getBasket () { + // Trace message + //* NOISY-DEBUG: */ this.LOG.trace("basket=" + this.basket + " - EXIT!"); + + // Return it + return this.basket; + } + + /** + * @param basket the basket to set + */ + @Override + public void setBasket (final BasketBean basket) { + // Trace message + //* NOISY-DEBUG: */ this.LOG.trace("basked=" + basket + " - CALLED!"); + + // Set it here + this.basket = basket; + } +} diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..66de874 --- /dev/null +++ b/build.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + Builds, tests, and runs the project PizzaService. + + + diff --git a/nbproject/ant-deploy.xml b/nbproject/ant-deploy.xml new file mode 100644 index 0000000..2d5f877 --- /dev/null +++ b/nbproject/ant-deploy.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml new file mode 100644 index 0000000..9b61e64 --- /dev/null +++ b/nbproject/build-impl.xml @@ -0,0 +1,650 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set build.dir + Must set build.generated.dir + Must set dist.dir + Must set build.classes.excludes + Must set dist.jar + + + +The libs.CopyLibs.classpath property is not set up. +This property must point to +org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part +of NetBeans IDE installation and is usually located at +<netbeans_installation>/java<version>/ant/extra folder. +Either open the project in the IDE and make sure CopyLibs library +exists or setup the property manually. For example like this: + ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable. + + + Launching ${browse.url} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100644 index 0000000..56ae079 --- /dev/null +++ b/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=5c81fdbd +build.xml.script.CRC32=8e3e9528 +build.xml.stylesheet.CRC32=a5d15b16@1.49.1 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=5c81fdbd +nbproject/build-impl.xml.script.CRC32=e91b2e0c +nbproject/build-impl.xml.stylesheet.CRC32=5eea63a6@1.49.1 diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..1c6b8dc --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,40 @@ +build.classes.excludes=**/*.java,**/*.form,**/.nbattrs +build.dir=build +build.generated.dir=${build.dir}/generated +client.module.uri=PizzaService-war +client.urlPart= +debug.classpath=${javac.classpath}::${jar.content.additional}:${run.classpath} +display.browser=true +dist.dir=dist +dist.jar=${dist.dir}/${jar.name} +endorsed.classpath=\ + ${libs.javaee-endorsed-api-6.0.classpath} +j2ee.appclient.mainclass.args=${j2ee.appclient.tool.args} +j2ee.compile.on.save=true +j2ee.deploy.on.save=true +j2ee.platform=1.7 +j2ee.platform.classpath=${j2ee.server.middleware}/mq/lib/jaxm-api.jar:${j2ee.server.home}/modules/endorsed/javax.annotation-api.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/javax.ejb-api.jar:${j2ee.server.home}/modules/javax.el.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent-api.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent.jar:${j2ee.server.home}/modules/javax.enterprise.deploy-api.jar:${j2ee.server.home}/modules/javax.faces.jar:${j2ee.server.home}/modules/javax.inject.jar:${j2ee.server.home}/modules/javax.interceptor-api.jar:${j2ee.server.home}/modules/javax.jms-api.jar:${j2ee.server.home}/modules/javax.json.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.management.j2ee-api.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.resource-api.jar:${j2ee.server.home}/modules/javax.security.auth.message-api.jar:${j2ee.server.home}/modules/javax.security.jacc-api.jar:${j2ee.server.home}/modules/javax.servlet-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.transaction-api.jar:${j2ee.server.home}/modules/javax.websocket-api.jar:${j2ee.server.home}/modules/javax.ws.rs-api.jar:${j2ee.server.home}/modules/javax.xml.registry-api.jar:${j2ee.server.home}/modules/javax.xml.rpc-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar +j2ee.platform.embeddableejb.classpath=${j2ee.server.home}/lib/embedded/glassfish-embedded-static-shell.jar +j2ee.platform.wscompile.classpath=${j2ee.server.home}/modules/webservices-osgi.jar +j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar +j2ee.platform.wsimport.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar +j2ee.platform.wsit.classpath= +j2ee.server.type=gfv3ee6 +jar.compress=false +jar.content.additional=\ + ${reference.PizzaService-ejb.dist-ear}:\ + ${reference.PizzaService-war.dist-ear} +jar.name=PizzaService.ear +javac.debug=true +javac.deprecation=false +javac.source=1.6 +javac.target=1.6 +meta.inf=src/conf +no.dependencies=false +platform.active=default_platform +project.PizzaService-ejb=PizzaService-ejb +project.PizzaService-war=../PizzaService-war +reference.PizzaService-ejb.dist-ear=${project.PizzaService-ejb}/dist/PizzaService-ejb.jar +reference.PizzaService-war.dist-ear=${project.PizzaService-war}/dist/PizzaService-war.war +resource.dir=setup +source.root=. diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..b13c3e0 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,39 @@ + + + org.netbeans.modules.j2ee.earproject + + + PizzaService + 1.6.5 + + + + ${reference.PizzaService-ejb.dist-ear} + / + + + ${reference.PizzaService-war.dist-ear} + / + + + + + + PizzaService-ejb + j2ee_ear_archive + + dist-ear + clean-ear + dist-ear + + + PizzaService-war + j2ee_ear_archive + + dist-ear + clean-ear + dist-ear + + + + diff --git a/src/conf/MANIFEST.MF b/src/conf/MANIFEST.MF new file mode 100644 index 0000000..59499bc --- /dev/null +++ b/src/conf/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 +