From 7db053598c51c787763031653584de452cf952db Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Mon, 25 Apr 2016 22:29:03 +0200 Subject: [PATCH 1/1] initialized project --- .gitattributes | 2 + .gitignore | 11 + build.xml | 73 + dist.sh | 89 + ...-modules-java-j2seproject-copylibstask.jar | Bin 0 -> 26956 bytes lib/jcontacts-business-core.jar | Bin 0 -> 65116 bytes lib/jcontacts-core.jar | Bin 0 -> 31399 bytes lib/jcore-logger-lib.jar | Bin 0 -> 2533 bytes lib/jcore.jar | Bin 0 -> 13647 bytes lib/jcoreee.jar | Bin 0 -> 24632 bytes lib/jcountry-core.jar | Bin 0 -> 9961 bytes lib/jcustomer-core.jar | Bin 0 -> 7194 bytes .../javax.persistence_2.1.0.v201304241213.jar | Bin 0 -> 164637 bytes lib/jphone-core.jar | Bin 0 -> 30192 bytes lib/juser-core.jar | Bin 0 -> 50441 bytes lib/nblibraries.properties | 8 + nbproject/build-impl.xml | 1444 +++++++++++++++++ nbproject/genfiles.properties | 8 + nbproject/project.properties | 124 ++ nbproject/project.xml | 18 + .../database/BasePizzaDatabaseBean.java | 242 +++ .../model/customer/PizzaCustomer.java | 262 +++ 22 files changed, 2281 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 build.xml create mode 100755 dist.sh create mode 100644 lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar create mode 100644 lib/jcontacts-business-core.jar create mode 100644 lib/jcontacts-core.jar create mode 100644 lib/jcore-logger-lib.jar create mode 100644 lib/jcore.jar create mode 100644 lib/jcoreee.jar create mode 100644 lib/jcountry-core.jar create mode 100644 lib/jcustomer-core.jar create mode 100644 lib/jpa20-persistence/javax.persistence_2.1.0.v201304241213.jar create mode 100644 lib/jphone-core.jar create mode 100644 lib/juser-core.jar create mode 100644 lib/nblibraries.properties create mode 100644 nbproject/build-impl.xml create mode 100644 nbproject/genfiles.properties create mode 100644 nbproject/project.properties create mode 100644 nbproject/project.xml create mode 100644 src/org/mxchange/pizzaaplication/database/BasePizzaDatabaseBean.java create mode 100644 src/org/mxchange/pizzaaplication/model/customer/PizzaCustomer.java diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..17cdcd5 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Use Linux/Uni* line-feed for new lines (prevents converting) +* text=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51ac39e --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +/nbproject/private/ +/nbproject/*~ +/manifest.mf +/build/ +/dist/ +/data/* +/*.properties +/*-ejb/nbproject/private/ +/*-ejb/nbproject/*~ +/*-ejb/build/ +/*-ejb/dist/ diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..a6e9b6a --- /dev/null +++ b/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project pizzaservice-core. + + + diff --git a/dist.sh b/dist.sh new file mode 100755 index 0000000..7c4e148 --- /dev/null +++ b/dist.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +# Name of this project, detected by it's base path +NAME="${PWD##*/}" + +# Generated JAR file +DIST="dist/${NAME}.jar" + +# WildFly module base path +WILDFLY_MODULE_BASE_PATH="${HOME}/wildfly_domain/modules/org/mxchange" + +# And for this "module" (as WildFly calls it) +WILDFLY_MODULE_PATH="${WILDFLY_MODULE_BASE_PATH}/${NAME}/main" + +# module.xml +WILDFLY_MODULE_XML_FILE="wildfly/module.xml" + +# Glassfish base path (domain) +GLASSFISH_BASE_PATH="${HOME}/gf_domain/domain/lib" + +# Remote Glassfish path +GLASSFISH_SSH_PATH="/var/payara/domains/domain1/lib" + +# Remote SSH server (password-less access) +GLASSFISH_SSH_SERVER="www.mxchange.org" + +# Windows personal domain +PERSONAL_DOMAIN_PATH="${HOME}/personal_domain/lib" + +# Generate list +LIST=`find ../*/lib/${NAME}.jar` +LIST="${LIST} `find ../*/*-ejb/lib/${NAME}.jar`" +LIST="${LIST} ${WILDFLY_MODULE_PATH}" + +if [ -d "${GLASSFISH_BASE_PATH}" ] +then + echo "$0: Glassfish personal domain found, adding to LIST ..." + LIST="${LIST} ${GLASSFISH_BASE_PATH}" +fi + +if [ -d "${PERSONAL_DOMAIN_PATH}" ] +then + echo "$0: Personal domain found, adding to LIST ..." + LIST="${LIST} ${PERSONAL_DOMAIN_PATH}" +fi + +if [ ! -f "${DIST}" ] +then + echo "$0: '${DIST}' not found." + exit 1 +elif [ ! -d "${WILDFLY_MODULE_BASE_PATH}" ] +then + echo "$0: WildFly base path '${WILDFLY_MODULE_BASE_PATH}' not created." +elif [ ! -d "${WILDFLY_MODULE_PATH}" ] +then + mkdir -vp "${WILDFLY_MODULE_PATH}" +fi + +for project in ${LIST}; +do + if [ -d "${project}" ] + then + cp -v "${DIST}" "${project}" + elif [ -f "${project}" ] + then + cp -v "${DIST}" "${project}" + else + echo "$0: Project '${project}' not found." + fi + +done + +if [ "$1" != "r" -a -n "${GLASSFISH_SSH_PATH}" -a -n "${GLASSFISH_SSH_SERVER}" ] +then + echo "$0: Copying to remote '${GLASSFISH_SSH_SERVER}' ..." + scp "${DIST}" "${GLASSFISH_SSH_SERVER}:${GLASSFISH_SSH_PATH}" +fi + +# Copy module.xml ... +if [ -f "${WILDFLY_MODULE_XML_FILE}" ] +then + echo "$0: Generating module.xml ..." + XML_CONTENT=`cat "${WILDFLY_MODULE_XML_FILE}"` + XML_CONTENT="${XML_CONTENT//NAME/$NAME}" + echo "${XML_CONTENT}" > "${WILDFLY_MODULE_PATH}/module.xml" +fi + +echo "$0: All done." +exit 0 diff --git a/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar b/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar new file mode 100644 index 0000000000000000000000000000000000000000..60c2f42f50815dca99a986845f6b4b036318d782 GIT binary patch literal 26956 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 literal 0 HcmV?d00001 diff --git a/lib/jcontacts-business-core.jar b/lib/jcontacts-business-core.jar new file mode 100644 index 0000000000000000000000000000000000000000..d0e58879f51c30cfc0a36faf4ec85e8c5ab16dfe GIT binary patch literal 65116 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100644 index 0000000..ffaad87 --- /dev/null +++ b/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=b1744a3a +build.xml.script.CRC32=f71628c3 +build.xml.stylesheet.CRC32=8064a381@1.79.1.48 +# 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=b1744a3a +nbproject/build-impl.xml.script.CRC32=2d7ae9d3 +nbproject/build-impl.xml.stylesheet.CRC32=05530350@1.79.1.48 diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..82dd2ed --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,124 @@ +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 +application.title=pizzaservice-core +application.vendor=Cho-Time GmbH +auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# Files in build.classes.dir which should be excluded from distribution jar +dist.archive.excludes= +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/pizzaservice-core.jar +dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= +excludes= +file.reference.jcontacts-business-core.jar=lib/jcontacts-business-core.jar +file.reference.jcontacts-core.jar=lib/jcontacts-core.jar +file.reference.jcore-logger-lib.jar=lib/jcore-logger-lib.jar +file.reference.jcore.jar=lib/jcore.jar +file.reference.jcoreee.jar=lib/jcoreee.jar +file.reference.jcountry-core.jar=lib/jcountry-core.jar +file.reference.jcustomer-core.jar=lib/jcustomer-core.jar +file.reference.jphone-core.jar=lib/jphone-core.jar +file.reference.juser-core.jar=lib/juser-core.jar +includes=** +jar.archive.disabled=${jnlp.enabled} +jar.compress=false +jar.index=${jnlp.enabled} +javac.classpath=\ + ${file.reference.jcore.jar}:\ + ${file.reference.jcoreee.jar}:\ + ${file.reference.jcore-logger-lib.jar}:\ + ${file.reference.jcountry-core.jar}:\ + ${file.reference.jphone-core.jar}:\ + ${file.reference.juser-core.jar}:\ + ${file.reference.jcontacts-core.jar}:\ + ${file.reference.jcontacts-business-core.jar}:\ + ${file.reference.jcustomer-core.jar}:\ + ${libs.jpa20-persistence.classpath} +# Space-separated list of extra javac options +javac.compilerargs=-Xlint:unchecked -Xlint:deprecation +javac.deprecation=true +javac.external.vm=true +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=true +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=true +javadoc.splitindex=true +javadoc.use=true +javadoc.version=true +javadoc.windowtitle=RateCalc Core Library +jnlp.codebase.type=no.codebase +jnlp.descriptor=application +jnlp.enabled=false +jnlp.mixed.code=default +jnlp.offline-allowed=false +jnlp.signed=false +jnlp.signing= +jnlp.signing.alias= +jnlp.signing.keystore= +# Optional override of default Application-Library-Allowable-Codebase attribute identifying the locations where your signed RIA is expected to be found. +manifest.custom.application.library.allowable.codebase= +# Optional override of default Caller-Allowable-Codebase attribute identifying the domains from which JavaScript code can make calls to your RIA without security prompts. +manifest.custom.caller.allowable.codebase= +# Optional override of default Codebase manifest attribute, use to prevent RIAs from being repurposed +manifest.custom.codebase= +# Optional override of default Permissions manifest attribute (supported values: sandbox, all-permissions) +manifest.custom.permissions= +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=true +platform.active=default_platform +project.license=default +project.licensePath=./nbproject/licenseheader.txt +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project. +# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. +# To set system properties for unit tests define test-sys-prop.name=value: +run.jvmargs= +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +source.encoding=UTF-8 +source.reference.jcontacts-business-core.jar=../jcore-business-core/src/ +source.reference.jcontacts-core.jar=../jcontacts-core/src/ +source.reference.jcore-logger-lib.jar=../jcore-logger-lib/src/ +source.reference.jcore.jar=../jcore/src/ +source.reference.jcoreee.jar=../jcoreee/src/ +source.reference.jcountry-core.jar=../jcountry-core/src/ +source.reference.jcustomer-core.jar=../jcustomer-core/src/ +source.reference.jphone-core.jar=../jphone-core/src/ +source.reference.juser-core.jar=../juser-core/src/ +src.dir=src +test.src.dir=test diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..ba9f799 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,18 @@ + + + org.netbeans.modules.java.j2seproject + + + pizzaservice-core + + + + + + + + + .\lib\nblibraries.properties + + + diff --git a/src/org/mxchange/pizzaaplication/database/BasePizzaDatabaseBean.java b/src/org/mxchange/pizzaaplication/database/BasePizzaDatabaseBean.java new file mode 100644 index 0000000..c3dcea8 --- /dev/null +++ b/src/org/mxchange/pizzaaplication/database/BasePizzaDatabaseBean.java @@ -0,0 +1,242 @@ +/* + * Copyright (C) 2016 Cho-Time GmbH + * + * 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.pizzaaplication.database; + +import java.text.MessageFormat; +import java.util.GregorianCalendar; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcoreee.database.BaseDatabaseBean; +import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; +import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; +import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; + +/** + * A helper class for beans that access the database. + *

+ * @author Roland Haeder + */ +public abstract class BasePizzaDatabaseBean extends BaseDatabaseBean { + + /** + * Serial number + */ + private static final long serialVersionUID = 12_895_410_275_811_963L; + + /** + * Protected constructor + */ + protected BasePizzaDatabaseBean () { + // Call super constructor + super(); + } + + /** + * Merges given contact's data + *

+ * @param contact Contact instance to merge + *

+ * @return Detached contact instance + */ + protected Contact mergeContactData (final Contact contact) { + // The contact instance must be valid + if (null == contact) { + // Throw NPE again + throw new NullPointerException("contact is null"); //NOI18N + } else if (contact.getContactId() == null) { + // Throw NPE again + throw new NullPointerException("contact.contactId is null"); //NOI18N //NOI18N + } else if (contact.getContactId() < 1) { + // Not valid + throw new IllegalStateException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N + } + + // Get contact from it and find it + Contact foundContact = this.getEntityManager().find(contact.getClass(), contact.getContactId()); + + // Should be found + assert (foundContact instanceof Contact) : MessageFormat.format("Contact with id {0} not found, but should be.", contact.getContactId()); //NOI18N + + // Debug message + this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: contact.contactId={0}", foundContact.getContactId())); //NOI18N + + // Merge contact instance + Contact detachedContact = this.getEntityManager().merge(foundContact); + + // Copy all + detachedContact.copyAll(contact); + + // Return detached contact + return detachedContact; + } + + /** + * Merges given (detached) contact's cellphone, land-line and fax numbers + *

+ * @param detachedContact Detached contact instance + */ + protected void mergeContactsCellphoneLandLineFaxNumbers (final Contact detachedContact) { + // The contact instance must be valid + if (null == detachedContact) { + // Throw NPE again + throw new NullPointerException("detachedContact is null"); //NOI18N + } else if (detachedContact.getContactId() == null) { + // Throw NPE again + throw new NullPointerException("detachedContact.contactId is null"); //NOI18N //NOI18N + } else if (detachedContact.getContactId() < 1) { + // Not valid + throw new IllegalStateException(MessageFormat.format("detachedContact.contactId={0} is not valid.", detachedContact.getContactId())); //NOI18N + } + + // Get all instances + DialableCellphoneNumber cellphone = detachedContact.getContactCellphoneNumber(); + DialableLandLineNumber landLine = detachedContact.getContactLandLineNumber(); + DialableFaxNumber fax = detachedContact.getContactFaxNumber(); + + // Is there a cellphone instance set? + if (cellphone instanceof DialableCellphoneNumber) { + // Debug message + this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: cellphone.phoneId={0} is being updated ...", cellphone.getPhoneId())); //NOI18N + + // Then find it, too + DialableCellphoneNumber foundCellphone = this.getEntityManager().find(cellphone.getClass(), cellphone.getPhoneId()); + + // Should be there + assert (foundCellphone instanceof DialableCellphoneNumber) : MessageFormat.format("Cellphone number with id {0} not found but should be.", foundCellphone.getPhoneId()); //NOI18N + + // Then merge it, too + DialableCellphoneNumber detachedCellphone = this.getEntityManager().merge(foundCellphone); + + // Should be there + assert (detachedCellphone instanceof DialableCellphoneNumber) : MessageFormat.format("Cellphone number with id {0} not found but should be.", detachedCellphone.getPhoneId()); //NOI18N + + // Copy all + detachedCellphone.copyAll(detachedContact.getContactCellphoneNumber()); + + // Set it back + detachedContact.setContactCellphoneNumber(detachedCellphone); + } + + // Is there a fax instance set? + if (fax instanceof DialableFaxNumber) { + // Debug message + this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: fax.phoneId={0} is being updated ...", fax.getPhoneId())); //NOI18N + + // Then find it, too + DialableFaxNumber foundFax = this.getEntityManager().find(fax.getClass(), fax.getPhoneId()); + + // Should be there + assert (foundFax instanceof DialableFaxNumber) : MessageFormat.format("Fax number with id {0} not found but should be.", foundFax.getPhoneId()); //NOI18N + + // Then merge it, too + DialableFaxNumber detachedFax = this.getEntityManager().merge(foundFax); + + // Should be there + assert (detachedFax instanceof DialableFaxNumber) : MessageFormat.format("Fax number with id {0} not found but should be.", detachedFax.getPhoneId()); //NOI18N + + // Copy all + detachedFax.copyAll(detachedContact.getContactFaxNumber()); + + // Set it back + detachedContact.setContactFaxNumber(detachedFax); + } + + // Is there a fax instance set? + if (landLine instanceof DialableLandLineNumber) { + // Debug message + this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: landLine.phoneId={0} is being updated ...", landLine.getPhoneId())); //NOI18N + + // Then find it, too + DialableLandLineNumber foundLandLine = this.getEntityManager().find(landLine.getClass(), landLine.getPhoneId()); + + // Should be there + assert (foundLandLine instanceof DialableLandLineNumber) : MessageFormat.format("Land line number with id {0} not found but should be.", foundLandLine.getPhoneId()); //NOI18N + + // Then merge it, too + DialableLandLineNumber detachedLandLine = this.getEntityManager().merge(foundLandLine); + + // Should be there + assert (detachedLandLine instanceof DialableLandLineNumber) : MessageFormat.format("Land line number with id {0} not found but should be.", detachedLandLine.getPhoneId()); //NOI18N + + // Copy all + detachedLandLine.copyAll(detachedContact.getContactLandLineNumber()); + + // Set it back + detachedContact.setContactLandLineNumber(detachedLandLine); + } + } + + /** + * Updates all contacts's phone entry's updated timestamps + *

+ * @param contact Contact instance to update + * @param isCellphoneUnlinked Whether a cellphone entry has been unlinked in + * contact instance + * @param isLandlineUnlinked Whether a land-line entry has been unlinked in + * contact instance + * @param isFaxUnlinked Whether a fax entry has been unlinked in contact + * instance + */ + protected void setAllContactPhoneEntriesUpdated (final Contact contact, final boolean isCellphoneUnlinked, final boolean isLandlineUnlinked, final boolean isFaxUnlinked) { + // The contact instance must be valid + if (null == contact) { + // Throw NPE again + throw new NullPointerException("contact is null"); //NOI18N + } else if (contact.getContactId() == null) { + // Throw NPE again + throw new NullPointerException("contact.contactId is null"); //NOI18N //NOI18N + } else if (contact.getContactId() < 1) { + // Not valid + throw new IllegalStateException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N + } + + // Get all phone instances + DialableLandLineNumber landLineNumber = contact.getContactLandLineNumber(); + DialableFaxNumber faxNumber = contact.getContactFaxNumber(); + DialableCellphoneNumber cellphoneNumber = contact.getContactCellphoneNumber(); + + // Flags and instances must be constistent + if (isCellphoneUnlinked && cellphoneNumber instanceof DialableCellphoneNumber) { + // Bad state + throw new IllegalStateException("isCellPhoneUnlinked is TRUE, but cellphoneNumber is set."); + } else if (isLandlineUnlinked && landLineNumber instanceof DialableLandLineNumber) { + // Bad state + throw new IllegalStateException("isLandlineUnlinked is TRUE, but landLineNumber is set."); + } else if (isFaxUnlinked && faxNumber instanceof DialableFaxNumber) { + // Bad state + throw new IllegalStateException("isFaxUnlinked is TRUE, but faxNumber is set."); + } + + // Is a phone number instance set? + if (landLineNumber instanceof DialableLandLineNumber) { + // Set updated timestamp + landLineNumber.setPhoneEntryUpdated(new GregorianCalendar()); + } + + // Is a fax number instance set? + if (faxNumber instanceof DialableFaxNumber) { + // Set updated timestamp + faxNumber.setPhoneEntryUpdated(new GregorianCalendar()); + } + + // Is a mobile number instance set? + if (cellphoneNumber instanceof DialableCellphoneNumber) { + // Set updated timestamp + cellphoneNumber.setPhoneEntryUpdated(new GregorianCalendar()); + } + } + +} diff --git a/src/org/mxchange/pizzaaplication/model/customer/PizzaCustomer.java b/src/org/mxchange/pizzaaplication/model/customer/PizzaCustomer.java new file mode 100644 index 0000000..1969920 --- /dev/null +++ b/src/org/mxchange/pizzaaplication/model/customer/PizzaCustomer.java @@ -0,0 +1,262 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.mxchange.pizzaapplication.model.customer; + +import java.util.Calendar; +import java.util.Objects; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Index; +import javax.persistence.JoinColumn; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcontacts.contact.UserContact; +import org.mxchange.jcustomercore.model.customer.Customer; +import org.mxchange.jcustomercore.model.customer.status.CustomerAccountStatus; + +/** + * A customer entity + *

+ * @author Roland Haeder + */ +@Entity (name = "customer") +@Table ( + name = "customer", + indexes = { + @Index (columnList = "customer_number", unique = true) + } +) +@NamedQueries ( + { + @NamedQuery (name = "AllCustomers", query = "SELECT c FROM customer AS c ORDER BY c.customerId ASC") + } +) +@SuppressWarnings ("PersistenceUnitPresent") +public class PizzaCustomer implements Customer { + + /** + * Serial number + */ + private static final long serialVersionUID = 14_857_923_178_504_617L; + + /** + * Account status for this customer + */ + @Basic (optional = false) + @Enumerated (EnumType.STRING) + @Column (name = "customer_status", nullable = false) + private CustomerAccountStatus customerAccountStatus; + + /** + * Contact instance (personal data) + */ + @JoinColumn (name = "customer_contact_id", nullable = false, updatable = false, unique = true) + @OneToOne (targetEntity = UserContact.class, cascade = CascadeType.ALL, optional = false) + private Contact customerContact; + + /** + * When this customer has been created + */ + @Basic (optional = false) + @Column (name = "customer_created", nullable = false, updatable = false) + @Temporal (TemporalType.TIMESTAMP) + private Calendar customerCreated; + + /** + * Id number for this entry + */ + @Id + @GeneratedValue (strategy = GenerationType.IDENTITY) + @Column (name = "customer_id", nullable = false, updatable = false) + private Long customerId; + + /** + * When this customer has been locked (last timestamp) + */ + @Column (name = "customer_last_locked") + @Temporal (TemporalType.TIMESTAMP) + private Calendar customerLocked; + + /** + * Customer number + */ + @Basic (optional = false) + @Column (name = "customer_number", nullable = false, updatable = false) + private String customerNumber; + + /** + * Default constructor + */ + public PizzaCustomer () { + } + + /** + * Constructor with account status, contact instance and customer number + *

+ * @param customerAccountStatus Account status (Call-agents may only call + * unlocked accounts) + * @param customerContact Contact instance + * @param customerNumber Customer number + */ + public PizzaCustomer (final CustomerAccountStatus customerAccountStatus, final Contact customerContact, final String customerNumber) { + // Call other constructor + this(); + + // Set all parameter + this.customerAccountStatus = customerAccountStatus; + this.customerContact = customerContact; + this.customerNumber = customerNumber; + } + + @Override + public void copyAll (final Customer customer) { + // Copy all supported fields + this.setCustomerAccountStatus(customer.getCustomerAccountStatus()); + this.setCustomerContact(customer.getCustomerContact()); + this.setCustomerCreated(customer.getCustomerCreated()); + this.setCustomerId(customer.getCustomerId()); + this.setCustomerLocked(customer.getCustomerLocked()); + this.setCustomerNumber(customer.getCustomerNumber()); + } + + @Override + public boolean equals (final Object object) { + if (this == object) { + return true; + } else if (null == object) { + return false; + } else if (this.getClass() != object.getClass()) { + return false; + } + + final Customer other = (Customer) object; + + if (!Objects.equals(this.getCustomerNumber(), other.getCustomerNumber())) { + return false; + } else if (!Objects.equals(this.getCustomerContact(), other.getCustomerContact())) { + return false; + } else if (!Objects.equals(this.getCustomerId(), other.getCustomerId())) { + return false; + } + + return true; + } + + @Override + public int hashCode () { + int hash = 7; + + hash = 53 * hash + Objects.hashCode(this.getCustomerContact()); + hash = 53 * hash + Objects.hashCode(this.getCustomerId()); + hash = 53 * hash + Objects.hashCode(this.getCustomerNumber()); + + return hash; + } + + @Override + public CustomerAccountStatus getCustomerAccountStatus () { + return this.customerAccountStatus; + } + + @Override + public void setCustomerAccountStatus (final CustomerAccountStatus customerStatus) { + this.customerAccountStatus = customerStatus; + } + + @Override + public String getCustomerConfirmKey () { + throw new UnsupportedOperationException("Not supported yet."); //NOI18N + } + + @Override + public void setCustomerConfirmKey (final String customerConfirmKey) { + throw new UnsupportedOperationException("Not supported yet."); //NOI18N + } + + @Override + public Contact getCustomerContact () { + return this.customerContact; + } + + @Override + public void setCustomerContact (final Contact customerContact) { + this.customerContact = customerContact; + } + + @Override + public Calendar getCustomerCreated () { + return this.customerCreated; + } + + @Override + public void setCustomerCreated (final Calendar customerCreated) { + this.customerCreated = customerCreated; + } + + @Override + public Long getCustomerId () { + return this.customerId; + } + + @Override + public void setCustomerId (final Long customerId) { + this.customerId = customerId; + } + + @Override + public Calendar getCustomerLocked () { + return this.customerLocked; + } + + @Override + public void setCustomerLocked (final Calendar customerLocked) { + this.customerLocked = customerLocked; + } + + @Override + public String getCustomerNumber () { + return this.customerNumber; + } + + @Override + public void setCustomerNumber (final String customerNumber) { + this.customerNumber = customerNumber; + } + + @Override + public String getCustomerPasswordHash () { + throw new UnsupportedOperationException("Unfinished"); //NOI18N + } + + @Override + public void setCustomerPasswordHash (final String customerPasswordHash) { + throw new UnsupportedOperationException("Unfinished"); //NOI18N + } + +} -- 2.39.5