From bf432fd6b3575cbeee863b62d6a846076d6b14fe Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Thu, 10 Aug 2017 23:44:08 +0200 Subject: [PATCH] Maybe not cherry-pick: - removed left-over from some renaming-party? ;-) - moved PDF/receipt stuff into generic package MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .../receipt/PdfReceiptBean.java | 14 +- .../receipt/ReceiptFactory.java | 4 +- .../model/receipt/PdfReceiptSessionBean.java | 271 ------------------ 3 files changed, 11 insertions(+), 278 deletions(-) rename src/java/org/mxchange/{pizzaapplication/model => jshopreceipt}/receipt/PdfReceiptBean.java (79%) rename src/java/org/mxchange/{pizzaapplication/model => jshopreceipt}/receipt/ReceiptFactory.java (94%) delete mode 100644 src/java/org/mxchange/pizzaapplication/model/receipt/PdfReceiptSessionBean.java diff --git a/src/java/org/mxchange/pizzaapplication/model/receipt/PdfReceiptBean.java b/src/java/org/mxchange/jshopreceipt/receipt/PdfReceiptBean.java similarity index 79% rename from src/java/org/mxchange/pizzaapplication/model/receipt/PdfReceiptBean.java rename to src/java/org/mxchange/jshopreceipt/receipt/PdfReceiptBean.java index cac8d6f..2aa4e20 100644 --- a/src/java/org/mxchange/pizzaapplication/model/receipt/PdfReceiptBean.java +++ b/src/java/org/mxchange/jshopreceipt/receipt/PdfReceiptBean.java @@ -14,14 +14,12 @@ * 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.receipt; +package org.mxchange.jshopreceipt.receipt; import gnu.jpdf.PDFJob; import javax.ejb.Singleton; import javax.ejb.Startup; import javax.inject.Inject; -import org.mxchange.jshopreceipt.receipt.PdfReceiptBeanLocal; -import org.mxchange.jshopreceipt.receipt.Receipt; /** * A "centralized" logger bean @@ -29,8 +27,13 @@ import org.mxchange.jshopreceipt.receipt.Receipt; * @author Roland Häder */ @Startup -@Singleton (name = "pdf-receipt", description = "An EJB for producing PDF receipts") -public class PdfReceiptBean implements PdfReceiptBeanLocal { +@Singleton (name = "pdfReceipt", description = "An EJB for producing PDF receipts") +public class PdfReceiptBean implements PdfReceiptBeanRemote { + + /** + * Serial number + */ + private static final long serialVersionUID = 19_365_786_772_164L; /** * PDF job instance @@ -55,4 +58,5 @@ public class PdfReceiptBean implements PdfReceiptBeanLocal { private PDFJob getJob () { return this.job; } + } diff --git a/src/java/org/mxchange/pizzaapplication/model/receipt/ReceiptFactory.java b/src/java/org/mxchange/jshopreceipt/receipt/ReceiptFactory.java similarity index 94% rename from src/java/org/mxchange/pizzaapplication/model/receipt/ReceiptFactory.java rename to src/java/org/mxchange/jshopreceipt/receipt/ReceiptFactory.java index c05d8e1..0910f98 100644 --- a/src/java/org/mxchange/pizzaapplication/model/receipt/ReceiptFactory.java +++ b/src/java/org/mxchange/jshopreceipt/receipt/ReceiptFactory.java @@ -14,7 +14,7 @@ * 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.receipt; +package org.mxchange.jshopreceipt.receipt; import gnu.jpdf.PDFJob; import javax.enterprise.inject.Produces; @@ -22,7 +22,7 @@ import javax.enterprise.inject.spi.InjectionPoint; import org.mxchange.jshopreceipt.receipt.Receipt; /** - * A logger factory + * A receipt factory factory *

* @author Roland Häder */ diff --git a/src/java/org/mxchange/pizzaapplication/model/receipt/PdfReceiptSessionBean.java b/src/java/org/mxchange/pizzaapplication/model/receipt/PdfReceiptSessionBean.java deleted file mode 100644 index e8ee770..0000000 --- a/src/java/org/mxchange/pizzaapplication/model/receipt/PdfReceiptSessionBean.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.receipt; - -import java.text.MessageFormat; -import java.util.Locale; -import java.util.MissingResourceException; -import java.util.ResourceBundle; -import javax.ejb.Stateless; -import javax.faces.application.FacesMessage; -import javax.faces.context.FacesContext; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import org.mxchange.jcoreee.database.BaseDatabaseBean; -import org.mxchange.jcustomercore.model.customer.Customer; -import org.mxchange.jshopcore.model.receipt.ReceiptBeanRemote; -import org.mxchange.jshopcore.model.receipt.WrapableReceipt; -import org.mxchange.jshopreceipt.receipt.PdfReceiptBeanLocal; -import org.mxchange.jshopreceipt.receipt.Receipt; - -/** - * A stateless session-scoped bean for producing official receipts in Abobe's whacky - * binary format. This class uses GNUjpdf which allows using ordinary graphic - * libraries. - *

- * @author Roland Häder - */ -@Stateless (name = "pdf", description = "A bean creating PDF receipts") -public abstract class PdfReceiptSessionBean extends BaseDatabaseBean implements ReceiptBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 384_578_171_659_628L; - - /** - * Access key - */ - private String accessKey; - - /** - * Customer instance - */ - private Customer customer; - - /** - * PDF receipt injection - */ - @Receipt - private PdfReceiptBeanLocal pdfReceiptBeanLocal; - - /** - * Default constructor - */ - public PdfReceiptSessionBean () { - // Call super constructor - super(); - - try { - // Get initial context - Context context = new InitialContext(); - - // Lookup pdf receipt - this.pdfReceiptBeanLocal = (PdfReceiptBeanLocal) context.lookup("java:global/jshop-receipt-ejb/pdf-receipt!org.mxchange.jshopreceipt.receipt.PdfReceiptBeanLocal"); //NOI18N - } catch (final NamingException ex) { - // Continue to throw - throw new RuntimeException(MessageFormat.format("context.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N - } - } - - @Override - public WrapableReceipt createReceiptFromAccessKey (final String accessKey) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("createReceiptFromAccessKey: accessKey={0} - CALLED!", accessKey)); //NOI18N - - return null; - } - - @Override - public String fetchAccessKey (final Customer customer) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("fetchAccessKey: customer={0} - EXIT!", customer)); //NOI18N - - // customer should not be null - if (null == customer) { - // Abort here - throw new NullPointerException("customer is null"); //NOI18N - } else if (this.getCustomer() == null) { - // Don't continue, too. - throw new NullPointerException("this.getCustomer() returns null"); //NOI18N - } - - // Default is null - String key = null; - - // Is customer the same? - if (customer.equals(this.getCustomer())) { - // Set access key - key = this.getAccessKey(); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("fetchAccessKey: key={0} - EXIT!", key)); //NOI18N - - // Return it - return key; - } - - @Override - public String getAccessKey () { - return this.accessKey; - } - - @Override - public void setAccessKey (final String accessKey) { - this.accessKey = accessKey; - } - - @Override - public Customer getCustomer () { - return this.customer; - } - - @Override - public void setCustomer (final Customer customer) { - this.customer = customer; - } - - /** - * Returns given property key or throws an exception if not found. - *

- * @param parameterKey Property key - *

- * @return Property value - *

- * @throws NullPointerException If given key is not found - * @throws NumberFormatException If no number is given in context parameter - */ - protected int getIntegerContextParameter (final String parameterKey) throws NullPointerException, NumberFormatException { - // Get context parameter - Integer contextValue = Integer.parseInt(this.getStringContextParameter(parameterKey)); - // Return it - return contextValue; - } - - /** - * Returns given property key or throws an exception if not found. - *

- * @param parameterKey Property key - *

- * @return Property value - *

- * @throws NullPointerException If given key is not found - */ - protected String getStringContextParameter (final String parameterKey) throws NullPointerException { - // Get context parameter - String contextValue = FacesContext.getCurrentInstance().getExternalContext().getInitParameter(parameterKey); - // Is it null? - if (null == contextValue) { - // Throw NPE - throw new NullPointerException(MessageFormat.format("parameterKey={0} is not set.", parameterKey)); //NOI18N - } - // Return it - return contextValue; - } - - /** - * Checks whether debug mode is enabled for given controller - *

- * @param controllerName Name of controller - *

- * @return Whether debug mode is enabled - */ - protected boolean isDebugModeEnabled (final String controllerName) { - // Parameters should be valid - if (null == controllerName) { - // Throw NPE - throw new NullPointerException("controllerName is null"); //NOI18N - } else if (controllerName.isEmpty()) { - // Is empty - throw new IllegalArgumentException("controllerName is empty"); //NOI18N - } - // Try to get context parameter - String contextParameter = this.getStringContextParameter(String.format("is_debug_%s_enabled", controllerName)); //NOI18N - // Is it set and true? - boolean isEnabled = Boolean.parseBoolean(contextParameter) == Boolean.TRUE; - // Return it - return isEnabled; - } - - /** - * Loads resource bundle for given locale. This must be implemented per - * project so all projects can still customize their methods. Calling - * ResourceBundleloadBundle() in this class means that also the bundle files - * must be present here. - *

- * @param locale Locale from e.g. FacesContext - *

- * @return Initialized and loaded resource bundle - */ - protected abstract ResourceBundle loadResourceBundle (final Locale locale); - - /** - * Shows a faces message for given causing exception. The message from the - * exception is being inserted into the message. - *

- * @param clientId Client id to send message to - * @param cause Causing exception - */ - protected void showFacesMessage (final String clientId, final Throwable cause) { - // Get context and add message - this.showFacesMessage(clientId, cause.getMessage()); - } - - /** - * Shows a faces message with given message (i18n) key. - *

- * @param clientId Client id to send message to - * @param i18nKey Message key - *

- * @throws NullPointerException If clientId or i18nKey is null - * @throws IllegalArgumentException If clientId or i18nKey is empty - */ - protected void showFacesMessage (final String clientId, final String i18nKey) throws NullPointerException, IllegalArgumentException { - // Both parameter must be valid - if (null == clientId) { - // Throw NPE - throw new NullPointerException("clientId is null"); //NOI18N - } else if (clientId.isEmpty()) { - // Is empty - throw new IllegalArgumentException("clientId is null"); //NOI18N - } else if (null == i18nKey) { - // Throw NPE - throw new NullPointerException("i18nKey is null"); //NOI18N - } else if (i18nKey.isEmpty()) { - // Is empty - throw new IllegalArgumentException("i18nKey is null"); //NOI18N - } - // Get current locale - Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale(); - // Get bundle bundle - ResourceBundle bundle = this.loadResourceBundle(locale); - // Default is i18nKey - String message = MessageFormat.format("!{0}!", i18nKey); //NOI18N - // Try it - try { - // Get message - message = bundle.getString(i18nKey); - } catch (final MissingResourceException ex) { - // Did not find it, ignored - } - // Get context and add message - FacesContext.getCurrentInstance().addMessage(clientId, new FacesMessage(message)); - } - -} -- 2.39.5