From: Roland Haeder Date: Mon, 11 Apr 2016 14:59:17 +0000 (+0200) Subject: Continued a bit: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=d2901c420650f526d8759636947dd238d41ac529;p=pizzaservice-ejb.git Continued a bit: - implemented business method addCountry() - updated jar(s) --- diff --git a/lib/jcountry-core.jar b/lib/jcountry-core.jar index 4ecdf7e..3b26377 100644 Binary files a/lib/jcountry-core.jar and b/lib/jcountry-core.jar differ diff --git a/lib/jcountry-lib.jar b/lib/jcountry-lib.jar index c76bc4b..6db466e 100644 Binary files a/lib/jcountry-lib.jar and b/lib/jcountry-lib.jar differ diff --git a/src/java/org/mxchange/jcountry/data/PizzaCountrySingletonBean.java b/src/java/org/mxchange/jcountry/data/PizzaCountrySingletonBean.java index c0d42e1..5600e4e 100644 --- a/src/java/org/mxchange/jcountry/data/PizzaCountrySingletonBean.java +++ b/src/java/org/mxchange/jcountry/data/PizzaCountrySingletonBean.java @@ -16,11 +16,15 @@ */ package org.mxchange.jcountry.data; +import java.text.MessageFormat; +import java.util.GregorianCalendar; import java.util.List; import javax.ejb.Singleton; import javax.ejb.Startup; +import javax.persistence.NoResultException; import javax.persistence.Query; import org.mxchange.jcoreee.database.BaseDatabaseBean; +import org.mxchange.jcountry.exceptions.CountryAlreadyAddedException; /** * A singleton bean for country informations @@ -36,6 +40,36 @@ public class PizzaCountrySingletonBean extends BaseDatabaseBean implements Count */ private static final long serialVersionUID = 15_846_983_298_691_207L; + @Override + public void addCountry (final Country country) throws CountryAlreadyAddedException { + // Is it already there? + if (null == country) { + // Throw NPE + throw new NullPointerException("country is null"); //NOI18N + } else if (country.getCountryCode().isEmpty()) { + // Code is not set + throw new IllegalArgumentException("country.countryCode is empty"); //NOI18N + } else if (country.getCountryI18nkey().isEmpty()) { + // I18n key is not set + throw new IllegalArgumentException("country.countryI18nKey is empty"); //NOI18N + } else if (country.getCountryId() != null) { + // Should be null + throw new IllegalArgumentException(MessageFormat.format("country.countryId is not null ({0})", country.getCountryId())); //NOI18N + } else if (this.isCountryAdded(country)) { + // Yes, then abort here + throw new CountryAlreadyAddedException(country); + } + + // Add timestamp + country.setCountryEntryCreated(new GregorianCalendar()); + + // It is not added, so persist it + this.getEntityManager().persist(country); + + // Flush it to get id number back, maybe it is directly needed? + this.getEntityManager().flush(); + } + @Override @SuppressWarnings ("unchecked") public List allCountries () { @@ -46,4 +80,52 @@ public class PizzaCountrySingletonBean extends BaseDatabaseBean implements Count return query.getResultList(); } + /** + * Checks whether given country is already added by i18n key or country + * code, what comes first. + *

+ * @param country Country instance to check + *

+ * @return Whether the country was found + */ + private boolean isCountryAdded (final Country country) { + if (null == country) { + // Throw NPE + throw new NullPointerException("country is null"); //NOI18N + } else if (country.getCountryCode().isEmpty()) { + // Code is not set + throw new IllegalArgumentException("country.countryCode is empty"); //NOI18N + } else if (country.getCountryI18nkey().isEmpty()) { + // I18n key is not set + throw new IllegalArgumentException("country.countryI18nKey is empty"); //NOI18N + } else if (country.getCountryId() != null) { + // Should be null + throw new IllegalArgumentException(MessageFormat.format("country.countryId is not null ({0})", country.getCountryId())); //NOI18N + } + + // Default is not found + boolean isAdded = false; + + // Get query instance + Query query = this.getEntityManager().createNamedQuery("SearchCountryByCodeI18nKey", CountryData.class); //NOI18N + + // Assign all parameters + query.setParameter("code", country.getCountryCode()); //NOI18N + query.setParameter("key", country.getCountryI18nkey()); //NOI18N + + // Try to get a single result + try { + // Get single result + Country foundCountry = (Country) query.getSingleResult(); + + // Found it? + isAdded = (foundCountry instanceof Country); + } catch (final NoResultException ex) { + // Not found, don't log this + } + + // Return result + return isAdded; + } + }