-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jphone.phonenumbers.mobileprovider;
-
-import java.text.MessageFormat;
-import java.util.GregorianCalendar;
-import javax.ejb.Singleton;
-import javax.ejb.Startup;
-import org.mxchange.jcoreee.database.BaseDatabaseBean;
-import org.mxchange.jphone.exceptions.MobileProviderAlreadyAddedException;
-
-/**
- * An administrative singleton EJB for mobile provider informations
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-@Startup
-@Singleton (name = "adminmobileprovider", mappedName = "ejb/pizzaservice-singleton-admin-mobile-provider", description = "A singleton session bean for mobile provider informations, admin-edition")
-public class PizzaAdminMobileProviderSingletonBean extends BaseDatabaseBean implements AdminMobileProviderSingletonBeanRemote {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 15_846_983_298_691_207L;
-
- @Override
- public MobileProvider addMobileProvider (final MobileProvider mobileProvider) throws MobileProviderAlreadyAddedException {
- // Log trace message
- this.getLoggerBeanLocal().logTrace(MessageFormat.format("addMobileProvider: mobileProvider={0} - CALLED!", mobileProvider)); //NOI18N
-
- // Is the instance valid?
- if (null == mobileProvider) {
- // Throw NPE
- throw new NullPointerException("mobileProvider is null"); //NOI18N
- } else if (mobileProvider.getProviderDialPrefix() == null) {
- // Throw NPE again
- throw new NullPointerException("mobileProvider.providerDialPrefix is null"); //NOI18N
- } else if (mobileProvider.getProviderDialPrefix() < 1) {
- // Not valid
- throw new IllegalArgumentException(MessageFormat.format("mobileProvider.providerDialPrefix={0} is not valid.", mobileProvider.getProviderDialPrefix())); //NOI18N
- } else if (mobileProvider.getProviderCountry() == null) {
- // Throw again a NPE
- throw new NullPointerException("mobileProvider.providerCountry is null"); //NOI18N
- } else if (mobileProvider.getProviderMailPattern() == null) {
- // ... and again ...
- throw new NullPointerException("mobileProvider.providerMailPattern is null"); //NOI18N
- } else if (mobileProvider.getProviderMailPattern().isEmpty()) {
- // Empty pattern set (not allowed)
- throw new IllegalArgumentException("mobileProvider.providerMailPattern is empty."); //NOI18N
- } else if (!mobileProvider.getProviderMailPattern().contains("%s")) { //NOI18N
- // No place-holder found
- throw new IllegalArgumentException(MessageFormat.format("mobileProvider.providerMailPattern={0} does not contain '%s' which is need to be replaced with the full mobile number.", mobileProvider.getProviderMailPattern())); //NOI18N
- } else if (mobileProvider.getProviderName() == null) {
- // Throw NPE again
- throw new NullPointerException("mobileProvider.providerName is null"); //NOI18N
- } else if (mobileProvider.getProviderName().isEmpty()) {
- // Empty name is not allowed
- throw new IllegalArgumentException("mobileProvider.providerName is empty"); //NOI18N
- }
-
- // Set creation timestamp
- mobileProvider.setProviderEntryCreated(new GregorianCalendar());
-
- // Persist it
- this.getEntityManager().persist(mobileProvider);
-
- // ... and flush it to get id back
- this.getEntityManager().flush();
-
- // Log trace message
- this.getLoggerBeanLocal().logTrace(MessageFormat.format("addMobileProvider: mobileProvider.providerId={0} - EXIT!", mobileProvider.getProviderId())); //NOI18N
-
- // Return updated
- return mobileProvider;
- }
-
-}