From: Roland Haeder Date: Sun, 17 Apr 2016 13:51:08 +0000 (+0200) Subject: Continued with admin area: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=97664a99d45bc0ef0e3378ca8ac31e801475e355;p=addressbook-war.git Continued with admin area: - added a lot new administrative pages for contact's cellphone, mobile provider and user - used templates for repeated content - added a lot new language strings - added converter for contacts and cellphone - added new project dependency jcontacts-lib.jar - updated some older (hope, it doesn't conflict) - added mini-navigation CSS classes - removed old controller Signed-off-by: Roland Häder --- diff --git a/monitor/README.txt b/monitor/README.txt index 6527106e..e5d0dc9c 100644 --- a/monitor/README.txt +++ b/monitor/README.txt @@ -1,8 +1,8 @@ How to use this monitoring scripts: ----------------------------------- -1) Copy .monitor-config.sh to ${HOME}/.monitor-pizzaservice-war-cron.sh - Please note that your clone path must be 'pizzaservice-war' then. +1) Copy .monitor-config.sh to ${HOME}/.monitor-addressbook-war-cron.sh + Please note that your clone path must be 'addressbook-war' then. 2) Execute "crontab -e" as same user @@ -11,7 +11,7 @@ How to use this monitoring scripts: PATH="/bla/foo/bin:/bar/bin" SHELL="/bin/bash" -*/10 * * * * cd ${HOME}/checkouts/pizzaservice-war/monitor/ && ./monitor-cron.sh +*/10 * * * * cd ${HOME}/checkouts/addressbook-war/monitor/ && ./monitor-cron.sh Please make sure PATH and SHELL are set (maybe prevents some problems). diff --git a/nbproject/faces-config.NavData b/nbproject/faces-config.NavData index 4841e9ad..52787ffd 100644 --- a/nbproject/faces-config.NavData +++ b/nbproject/faces-config.NavData @@ -2,48 +2,58 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookAdminMobileProviderWebRequestBean.java b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookAdminMobileProviderWebRequestBean.java new file mode 100644 index 00000000..e3a30785 --- /dev/null +++ b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookAdminMobileProviderWebRequestBean.java @@ -0,0 +1,233 @@ +/* + * 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.addressbook.beans.mobileprovider; + +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import javax.enterprise.context.RequestScoped; +import javax.enterprise.event.Event; +import javax.enterprise.inject.Any; +import javax.faces.view.facelets.FaceletException; +import javax.inject.Inject; +import javax.inject.Named; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import org.mxchange.jcountry.data.Country; +import org.mxchange.jphone.events.AdminAddedMobileProviderEvent; +import org.mxchange.jphone.events.AdminMobileProviderAddedEvent; +import org.mxchange.jphone.exceptions.MobileProviderAlreadyAddedException; +import org.mxchange.jphone.phonenumbers.mobileprovider.AdminMobileProviderSingletonBeanRemote; +import org.mxchange.jphone.phonenumbers.mobileprovider.CellphoneProvider; +import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; + +/** + * Administrative bean (controller) for mobile provider + *

+ * @author Roland Haeder + */ +@Named ("adminMobileProviderController") +@RequestScoped +public class AddressbookAdminMobileProviderWebRequestBean implements AddressbookAdminMobileProviderWebRequestController { + + /** + * Serial number + */ + private static final long serialVersionUID = 184_598_175_371_269_016L; + + /** + * Remote EJB for mobile providers (administrative) + */ + private AdminMobileProviderSingletonBeanRemote adminRemoteBean; + + /** + * Regular bean + */ + @Inject + private AddressbookMobileProviderWebRequestController mobileController; + + /** + * Event being fired when the mobile provider was added + */ + @Inject + @Any + private Event providerAddedEvent; + + /** + * Country instance ('s dial data) + */ + private Country providerCountry; + + /** + * Provider dial prefix (example: 0177 for German E+) + */ + private Long providerDialPrefix; + + /** + * Pattern for mail gateway + */ + private String providerMailPattern; + + /** + * Name of the provider + */ + private String providerName; + + /** + * Default constructor + */ + public AddressbookAdminMobileProviderWebRequestBean () { + // Try it + try { + // Get initial context + Context context = new InitialContext(); + + // Try to lookup the beans + this.adminRemoteBean = (AdminMobileProviderSingletonBeanRemote) context.lookup("java:global/addressbook-ejb/adminmobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.AdminMobileProviderSingletonBeanRemote"); //NOI18N + } catch (final NamingException e) { + // Throw it again + throw new FaceletException(e); + } + } + + @Override + public void addMobileProvider () { + // Create mobile provider instance + MobileProvider mobileProvider = new CellphoneProvider(this.getProviderDialPrefix(), this.getProviderName(), this.getProviderCountry(), this.getProviderMailPattern()); + + // Is the provider already created? + if (this.isMobileProviderCreated(mobileProvider)) { + // Then throw exception + throw new FaceletException(new MobileProviderAlreadyAddedException(mobileProvider)); + } + + // Init variable + MobileProvider updatedProvider = null; + + try { + // Call remote EJB and get back an updated instance + updatedProvider = this.adminRemoteBean.addMobileProvider(mobileProvider); + } catch (final MobileProviderAlreadyAddedException ex) { + // Throw again + throw new FaceletException(ex); + } + + // Fire event + this.providerAddedEvent.fire(new AdminMobileProviderAddedEvent(updatedProvider)); + + // Clear this bean + this.clear(); + } + + @Override + public List allMobileProvider () { + return this.mobileController.allMobileProvider(); + } + + @Override + public Country getProviderCountry () { + return this.providerCountry; + } + + @Override + public void setProviderCountry (final Country providerCountry) { + this.providerCountry = providerCountry; + } + + @Override + public Long getProviderDialPrefix () { + return this.providerDialPrefix; + } + + @Override + public void setProviderDialPrefix (final Long providerDialPrefix) { + this.providerDialPrefix = providerDialPrefix; + } + + @Override + public String getProviderMailPattern () { + return this.providerMailPattern; + } + + @Override + public void setProviderMailPattern (final String providerMailPattern) { + this.providerMailPattern = providerMailPattern; + } + + @Override + public String getProviderName () { + return this.providerName; + } + + @Override + public void setProviderName (final String providerName) { + this.providerName = providerName; + } + + @Override + public boolean hasMobileProvider () { + return (!this.allMobileProvider().isEmpty()); + } + + /** + * Clears this bean + */ + private void clear () { + // Clear all fields + this.setProviderCountry(null); + this.setProviderDialPrefix(null); + this.setProviderMailPattern(null); + this.setProviderName(null); + } + + /** + * Checks whether if the given mobile provider is already created by + * checking both dial prefix and country. + *

+ * @param mobileProvider Mobile provider instance to check + *

+ * @return Whether the given mobile provider instance is found + */ + private boolean isMobileProviderCreated (final MobileProvider mobileProvider) { + // Default is not found + boolean isFound = false; + + // Get list of all providers + List providers = this.allMobileProvider(); + + // Get iterator from it + Iterator iterator = providers.iterator(); + + // Loop through all + while (iterator.hasNext()) { + // Get next element + MobileProvider next = iterator.next(); + + // Is the provider's dial prefix and country the same? + if ((Objects.equals(mobileProvider.getProviderDialPrefix(), next.getProviderDialPrefix())) && (Objects.equals(mobileProvider.getProviderCountry(), next.getProviderCountry()))) { + // Is the same, abort loop + isFound = true; + break; + } + } + + // Return result + return isFound; + } + +} diff --git a/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookAdminMobileProviderWebRequestController.java b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookAdminMobileProviderWebRequestController.java new file mode 100644 index 00000000..6a79fd32 --- /dev/null +++ b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookAdminMobileProviderWebRequestController.java @@ -0,0 +1,109 @@ +/* + * 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.addressbook.beans.mobileprovider; + +import java.io.Serializable; +import java.util.List; +import org.mxchange.jcountry.data.Country; +import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; + +/** + * An interface for a request web controller (bean) for administrative mobile + * provider purposes. + *

+ * @author Roland Haeder + */ +public interface AddressbookAdminMobileProviderWebRequestController extends Serializable { + + /** + * Adds a mobile provider to database by calling the EJB. A pre-check on + * dial-prefix and country combination is done, if found, an exception is + * thrown. + */ + void addMobileProvider (); + + /** + * Returns a list of all mobile providers + *

+ * @return A list of all mobile providers + */ + List allMobileProvider (); + + /** + * Checks whether mobile providers are registered + *

+ * @return Whether mobile providers are registered + */ + boolean hasMobileProvider (); + + /** + * Getter for provider dial prefix + *

+ * @return Provider dial prefix + */ + Long getProviderDialPrefix (); + + /** + * Setter for provider dial prefix + *

+ * @param providerDialPrefix Provider dial prefix + */ + void setProviderDialPrefix (final Long providerDialPrefix); + + /** + * Getter for provider name + *

+ * @return Provider name + */ + String getProviderName (); + + /** + * Setter for provider name + *

+ * @param providerName Provider name + */ + void setProviderName (final String providerName); + + /** + * Getter for country instance ('s dial data) + *

+ * @return Country instance + */ + Country getProviderCountry (); + + /** + * Setter for country instance ('s dial data) + *

+ * @param country Country instance + */ + void setProviderCountry (final Country country); + + /** + * Getter for pattern for mail gateway + *

+ * @return Pattern for mail gateway + */ + String getProviderMailPattern (); + + /** + * Setter for pattern for mail gateway + *

+ * @param providerMailRegex Pattern for mail gateway + */ + void setProviderMailPattern (final String providerMailRegex); + +} diff --git a/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebApplicationBean.java b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebApplicationBean.java deleted file mode 100644 index 57a9fdc2..00000000 --- a/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebApplicationBean.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 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.addressbook.beans.mobileprovider; - -import java.util.Collections; -import java.util.List; -import javax.annotation.PostConstruct; -import javax.enterprise.context.ApplicationScoped; -import javax.faces.view.facelets.FaceletException; -import javax.inject.Named; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; -import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote; - -/** - * A SMS provider bean - *

- * @author Roland Haeder - */ -@Named ("cellphone") -@ApplicationScoped -public class AddressbookMobileProviderWebApplicationBean implements AddressbookMobileProviderWebApplicationController { - - /** - * Serial number - */ - private static final long serialVersionUID = 176_985_298_681_742_960L; - - /** - * Remote country EJB - */ - private MobileProviderSingletonBeanRemote cellphoneBean; - - /** - * List of all countries - */ - private List cellphoneList; - - /** - * Default constructor - */ - public AddressbookMobileProviderWebApplicationBean () { - // Try this - try { - // Get initial context - Context context = new InitialContext(); - - // Try to lookup the bean - this.cellphoneBean = (MobileProviderSingletonBeanRemote) context.lookup("java:global/addressbook-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.MobileProvider.MobileProviderSingletonBeanRemote"); //NOI18N - } catch (final NamingException ex) { - // Continue to throw - throw new FaceletException(ex); - } - } - - @Override - public List allMobileProvider () { - // Return "cached" version - return Collections.unmodifiableList(this.cellphoneList); - } - - /** - * Post-initialization of this class - */ - @PostConstruct - public void init () { - this.cellphoneList = this.cellphoneBean.allMobileProvider(); - } -} diff --git a/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebApplicationController.java b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebApplicationController.java deleted file mode 100644 index 6e48565a..00000000 --- a/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebApplicationController.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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.addressbook.beans.mobileprovider; - -import java.io.Serializable; -import java.util.List; -import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; - -/** - * An interface for country beans - *

- * @author Roland Haeder - */ -public interface AddressbookMobileProviderWebApplicationController extends Serializable { - - /** - * A list of all countries - *

- * @return All countries - */ - List allMobileProvider (); - -} diff --git a/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebRequestBean.java b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebRequestBean.java new file mode 100644 index 00000000..47b30b17 --- /dev/null +++ b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebRequestBean.java @@ -0,0 +1,110 @@ +/* + * 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.addressbook.beans.mobileprovider; + +import java.text.MessageFormat; +import java.util.List; +import javax.annotation.PostConstruct; +import javax.enterprise.context.SessionScoped; +import javax.enterprise.event.Observes; +import javax.faces.view.facelets.FaceletException; +import javax.inject.Named; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import org.mxchange.jphone.events.AdminAddedMobileProviderEvent; +import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; +import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote; + +/** + * A general bean for mobile providers + *

+ * @author Roland Haeder + */ +@Named ("mobileController") +@SessionScoped +public class AddressbookMobileProviderWebRequestBean implements AddressbookMobileProviderWebRequestController { + + /** + * Serial number + */ + private static final long serialVersionUID = 15_869_423_671_950_276L; + + /** + * "Cached" list of mobile providers + */ + private List mobileProviders; + + /** + * Remote EJB for mobile providers (regular) + */ + private MobileProviderSingletonBeanRemote mobileRemoteBean; + + /** + * Default constructor + */ + public AddressbookMobileProviderWebRequestBean () { + // Try it + try { + // Get initial context + Context context = new InitialContext(); + + // Try to lookup the beans + this.mobileRemoteBean = (MobileProviderSingletonBeanRemote) context.lookup("java:global/addressbook-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote"); //NOI18N + } catch (final NamingException e) { + // Throw it again + throw new FaceletException(e); + } + } + + @Override + public void afterAdminAddedMobileProvider (@Observes final AdminAddedMobileProviderEvent event) { + // Is all valid? + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getAddedMobileProvider()== null) { + // Throw again ... + throw new NullPointerException("event.addedMobileProvider is null"); //NOI18N + } else if (event.getAddedMobileProvider().getProviderId()== null) { + // And again ... + throw new NullPointerException("event.addedMobileProvider.providerId is null"); //NOI18N + } else if (event.getAddedMobileProvider().getProviderId() < 1) { + // Id is invalid + throw new IllegalArgumentException(MessageFormat.format("event.addedMobileProvider.providerId={0} is not valid.", event.getAddedMobileProvider().getProviderId())); //NOI18N + } + + // Add it to the list + this.mobileProviders.add(event.getAddedMobileProvider()); + } + + @Override + @SuppressWarnings ("ReturnOfCollectionOrArrayField") + public List allMobileProvider () { + return this.mobileProviders; + } + + /** + * Initializer method + */ + @PostConstruct + public void init () { + // Init list of mobile providers + this.mobileProviders = this.mobileRemoteBean.allMobileProvider(); + } + +} diff --git a/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebRequestController.java b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebRequestController.java new file mode 100644 index 00000000..66ce6d53 --- /dev/null +++ b/src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookMobileProviderWebRequestController.java @@ -0,0 +1,46 @@ +/* + * 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.addressbook.beans.mobileprovider; + +import java.io.Serializable; +import java.util.List; +import org.mxchange.jphone.events.AdminAddedMobileProviderEvent; +import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; + +/** + * An interface for general mobile provider controller + *

+ * @author Roland Haeder + */ +public interface AddressbookMobileProviderWebRequestController extends Serializable { + + /** + * Returns a list of all mobile providers + *

+ * @return A list of all mobile providers + */ + List allMobileProvider (); + + /** + * Observes events being fired after the administrator has added a new + * mobile provider + *

+ * @param event Event being fired + */ + void afterAdminAddedMobileProvider (final AdminAddedMobileProviderEvent event); + +} diff --git a/src/java/org/mxchange/addressbook/beans/phone/AddressbookAdminContactPhoneWebRequestBean.java b/src/java/org/mxchange/addressbook/beans/phone/AddressbookAdminContactPhoneWebRequestBean.java new file mode 100644 index 00000000..b422fead --- /dev/null +++ b/src/java/org/mxchange/addressbook/beans/phone/AddressbookAdminContactPhoneWebRequestBean.java @@ -0,0 +1,145 @@ +/* + * 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.addressbook.beans.phone; + +import java.util.List; +import javax.enterprise.context.RequestScoped; +import javax.faces.view.facelets.FaceletException; +import javax.inject.Named; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcontacts.phone.AdminContactsPhoneSessionBeanRemote; +import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; +import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; +import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; +import org.mxchange.jusercore.model.user.User; + +/** + * Administrative bean (controller) for contact's phone numbers + *

+ * @author Roland Haeder + */ +@Named ("adminContactPhoneController") +@RequestScoped +public class AddressbookAdminContactPhoneWebRequestBean implements AddressbookAdminContactPhoneWebRequestController { + + /** + * Serial number + */ + private static final long serialVersionUID = 184_598_175_371_269_016L; + + /** + * Remote EJB for phone number (administrative) + */ + private AdminContactsPhoneSessionBeanRemote adminRemoteBean; + + /** + * Cell phone number + */ + private DialableCellphoneNumber cellPhone; + + /** + * Fax number + */ + private DialableFaxNumber fax; + + /** + * Land-line number + */ + private DialableLandLineNumber landLine; + + /** + * Instance of linked user account + */ + private User user; + + /** + * Default constructor + */ + public AddressbookAdminContactPhoneWebRequestBean () { + // Try it + try { + // Get initial context + Context context = new InitialContext(); + + // Try to lookup the beans + this.adminRemoteBean = (AdminContactsPhoneSessionBeanRemote) context.lookup("java:global/addressbook-ejb/admincontactphone!org.mxchange.jcontacts.phone.AdminContactsPhoneSessionBeanRemote"); //NOI18N + } catch (final NamingException e) { + // Throw it again + throw new FaceletException(e); + } + } + + @Override + public List allCellphoneContacts () { + return this.adminRemoteBean.allContacts(this.getCellPhone()); + } + + @Override + public DialableCellphoneNumber getCellPhone () { + return this.cellPhone; + } + + @Override + public void setCellPhone (final DialableCellphoneNumber cellPhone) { + this.cellPhone = cellPhone; + } + + @Override + public DialableFaxNumber getFax () { + return this.fax; + } + + @Override + public void setFax (final DialableFaxNumber fax) { + this.fax = fax; + } + + @Override + public DialableLandLineNumber getLandLine () { + return this.landLine; + } + + @Override + public void setLandLine (final DialableLandLineNumber landLine) { + this.landLine = landLine; + } + + @Override + public User getUser () { + return this.user; + } + + @Override + public void setUser (final User user) { + this.user = user; + } + + /** + * Clears this bean + */ + private void clear () { + // Clear all instances + this.setCellPhone(null); + this.setFax(null); + this.setLandLine(null); + this.setUser(null); + } + +} diff --git a/src/java/org/mxchange/addressbook/beans/phone/AddressbookAdminContactPhoneWebRequestController.java b/src/java/org/mxchange/addressbook/beans/phone/AddressbookAdminContactPhoneWebRequestController.java new file mode 100644 index 00000000..63c1a348 --- /dev/null +++ b/src/java/org/mxchange/addressbook/beans/phone/AddressbookAdminContactPhoneWebRequestController.java @@ -0,0 +1,93 @@ +/* + * 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.addressbook.beans.phone; + +import java.io.Serializable; +import java.util.List; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; +import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; +import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; +import org.mxchange.jusercore.model.user.User; + +/** + * An interface for a request web controller (bean) for administrative phone + * number purposes. + *

+ * @author Roland Haeder + */ +public interface AddressbookAdminContactPhoneWebRequestController extends Serializable { + + List allCellphoneContacts (); + + /** + * Getter for dialable cellphone number instance + *

+ * @return Dialable cellphone number instance + */ + DialableCellphoneNumber getCellPhone (); + + /** + * Setter for dialable land-line number instance + *

+ * @param landLine Dialable land-line number instance + */ + void setLandLine (final DialableLandLineNumber landLine); + + /** + * Getter for dialable land-line number instance + *

+ * @return Dialable land-line number instance + */ + DialableLandLineNumber getLandLine (); + + /** + * Setter for dialable fax number instance + *

+ * @param fax Dialable fax number instance + */ + void setFax (final DialableFaxNumber fax); + + /** + * Getter for dialable fax number instance + *

+ * @return Dialable fax number instance + */ + DialableFaxNumber getFax (); + + /** + * Setter for dialable cellphone number instance + *

+ * @param cellPhone Dialable cellphone number instance + */ + void setCellPhone (final DialableCellphoneNumber cellPhone); + + /** + * Getter for linked user account + *

+ * @return Linked user account + */ + User getUser (); + + /** + * Setter for linked user account + *

+ * @param user Linked user account + */ + void setUser (final User user); + +} diff --git a/src/java/org/mxchange/addressbook/beans/user/AddressbookAdminUserWebSessionBean.java b/src/java/org/mxchange/addressbook/beans/user/AddressbookAdminUserWebSessionBean.java index a55f4e38..1ac72d0b 100644 --- a/src/java/org/mxchange/addressbook/beans/user/AddressbookAdminUserWebSessionBean.java +++ b/src/java/org/mxchange/addressbook/beans/user/AddressbookAdminUserWebSessionBean.java @@ -578,15 +578,6 @@ public class AddressbookAdminUserWebSessionBean implements AddressbookAdminUserW this.userList = this.userBean.allUsers(); } - /** - * Checks if same password is entered and that they are not empty. - *

- * @return Whether the same password was entered - */ - private boolean isSamePasswordEntered () { - return ((!this.getUserPassword().isEmpty()) && (Objects.equals(this.getUserPassword(), this.getUserPasswordRepeat()))); - } - @Override public User lookupUserById (final Long userId) throws UserNotFoundException { // Init variable @@ -644,4 +635,13 @@ public class AddressbookAdminUserWebSessionBean implements AddressbookAdminUserW this.setZipCode(null); } + /** + * Checks if same password is entered and that they are not empty. + *

+ * @return Whether the same password was entered + */ + private boolean isSamePasswordEntered () { + return ((!this.getUserPassword().isEmpty()) && (Objects.equals(this.getUserPassword(), this.getUserPasswordRepeat()))); + } + } diff --git a/src/java/org/mxchange/addressbook/beans/user/AddressbookUserWebSessionBean.java b/src/java/org/mxchange/addressbook/beans/user/AddressbookUserWebSessionBean.java index a95e0607..4c2d87d9 100644 --- a/src/java/org/mxchange/addressbook/beans/user/AddressbookUserWebSessionBean.java +++ b/src/java/org/mxchange/addressbook/beans/user/AddressbookUserWebSessionBean.java @@ -182,6 +182,11 @@ public class AddressbookUserWebSessionBean implements AddressbookUserWebSessionC */ private String street; + /** + * User instance + */ + private User user; + /** * Remote user bean */ @@ -280,7 +285,7 @@ public class AddressbookUserWebSessionBean implements AddressbookUserWebSessionC this.addUserNameEmailAddress(registeredUser); // Clear all data - this.clearData(); + this.clear(); // Set user id again this.setUserId(registeredUser.getUserId()); @@ -426,7 +431,6 @@ public class AddressbookUserWebSessionBean implements AddressbookUserWebSessionC // Trace message //this.getLogger().logTrace(MessageFormat.format("createUserInstance: user={0} - EXIT!", user)); - // Return it return user; } @@ -641,6 +645,16 @@ public class AddressbookUserWebSessionBean implements AddressbookUserWebSessionC this.street = street; } + @Override + public User getUser () { + return this.user; + } + + @Override + public void setUser (final User user) { + this.user = user; + } + @Override public Long getUserId () { return this.userId; @@ -784,7 +798,10 @@ public class AddressbookUserWebSessionBean implements AddressbookUserWebSessionC @Override public User lookupUserById (final Long userId) throws UserNotFoundException { // Init variable - User user = null; + User localUser = null; + + // Clear this bean + this.clear(); // Try to lookup it in visible user list for (final Iterator iterator = this.visibleUserList.iterator(); iterator.hasNext();) { @@ -794,19 +811,22 @@ public class AddressbookUserWebSessionBean implements AddressbookUserWebSessionC // Is the user id found? if (Objects.equals(next.getUserId(), userId)) { // Copy to other variable - user = next; + localUser = next; break; } } // Is it still null? - if (null == user) { + if (null == localUser) { // Not visible for the current user throw new UserNotFoundException(userId); } + // Copy all data to this bean + this.copyUser(localUser); + // Return it - return user; + return localUser; } /** @@ -833,9 +853,9 @@ public class AddressbookUserWebSessionBean implements AddressbookUserWebSessionC } /** - * Clears all data in this bean + * Clears this bean */ - private void clearData () { + private void clear () { // Clear all data // - personal data this.setUserId(null); @@ -862,6 +882,9 @@ public class AddressbookUserWebSessionBean implements AddressbookUserWebSessionC this.setUserName(null); this.setUserPassword(null); this.setUserPasswordRepeat(null); + + // - user instance + this.setUser(null); } /** diff --git a/src/java/org/mxchange/addressbook/beans/user/AddressbookUserWebSessionController.java b/src/java/org/mxchange/addressbook/beans/user/AddressbookUserWebSessionController.java index 769c8795..c2f385cf 100644 --- a/src/java/org/mxchange/addressbook/beans/user/AddressbookUserWebSessionController.java +++ b/src/java/org/mxchange/addressbook/beans/user/AddressbookUserWebSessionController.java @@ -374,6 +374,20 @@ public interface AddressbookUserWebSessionController extends Serializable { */ void setStreet (final String street); + /** + * Getter for user instance (e.g. from show_user) + *

+ * @return User instance + */ + User getUser (); + + /** + * Setter for user instance (e.g. from show_user) + *

+ * @param user User instance + */ + void setUser (final User user); + /** * Getter for user id *

diff --git a/src/java/org/mxchange/addressbook/converter/cellphone/AddressbookCellphoneConverter.java b/src/java/org/mxchange/addressbook/converter/cellphone/AddressbookCellphoneConverter.java new file mode 100644 index 00000000..0c62db94 --- /dev/null +++ b/src/java/org/mxchange/addressbook/converter/cellphone/AddressbookCellphoneConverter.java @@ -0,0 +1,133 @@ +/* + * 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.addressbook.converter.cellphone; + +import java.text.MessageFormat; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.convert.Converter; +import javax.faces.convert.ConverterException; +import javax.faces.convert.FacesConverter; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import org.mxchange.jcoreeelogger.beans.local.logger.Log; +import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal; +import org.mxchange.jphone.exceptions.PhoneEntityNotFoundException; +import org.mxchange.jphone.phonenumbers.DialableNumber; +import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; +import org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote; + +/** + * Converter for cellphone id <-> valid cellphone instance + *

+ * @author Roland Haeder + */ +@FacesConverter (value = "CellphoneConverter") +public class AddressbookCellphoneConverter implements Converter { + + /** + * Logger instance + */ + @Log + private LoggerBeanLocal loggerBeanLocal; + + /** + * Phone EJB + */ + private PhoneSessionBeanRemote phoneBean; + + /** + * Initialization of this converter + */ + public AddressbookCellphoneConverter () { + // Try to get it + try { + // Get initial context + Context context = new InitialContext(); + + // Lookup logger + this.loggerBeanLocal = (LoggerBeanLocal) context.lookup("java:global/jcore-logger-ejb/logger!org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal"); //NOI18N + + // ... and user controller + this.phoneBean = (PhoneSessionBeanRemote) context.lookup("java:global/addressbook-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote"); //NOI18N + } catch (final NamingException ex) { + // Continue to throw it + throw new RuntimeException(MessageFormat.format("context.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N + } + } + + @Override + public Object getAsObject (final FacesContext context, final UIComponent component, final String submittedValue) { + // Trace message + // NOISY-DEBUG: this.loggerBeanLocal.logTrace(MessageFormat.format("getAsObject: context={0},component={1},submittedValue={2} - CALLED!", context, component, submittedValue)); //NOI18N + + // Is the value null or empty? + if ((null == submittedValue) || (submittedValue.trim().isEmpty())) { + // Warning message + this.loggerBeanLocal.logWarning("getAsObject: submittedValue is null or empty - EXIT!"); //NOI18N + + // Return null + return null; + } + + // Init instance + DialableCellphoneNumber cellphone = null; + + try { + // Try to parse the value as long + Long cellphoneId = Long.valueOf(submittedValue); + + // Debug message + // NOISY-DEBUG: this.loggerBeanLocal.logDebug(MessageFormat.format("getAsObject: userId{0}", userId)); //NOI18N + + // Try to get cellphone instance from it + cellphone = this.phoneBean.findCellphoneById(cellphoneId); + + // Debug message + // NOISY-DEBUG: this.loggerBeanLocal.logDebug(MessageFormat.format("getAsObject: cellphone={0}", cellphone)); //NOI18N + } catch (final NumberFormatException ex) { + // Throw again + throw new ConverterException(ex); + } catch (final PhoneEntityNotFoundException ex) { + // Debug message + this.loggerBeanLocal.logDebug(MessageFormat.format("getAsObject: Exception: {0} - Returning null ...", ex)); //NOI18N + } + + // Trace message + // NOISY-DEBUG: this.loggerBeanLocal.logTrace(MessageFormat.format("getAsObject: cellphone={0} - EXIT!", cellphone)); //NOI18N + + // Return it + return cellphone; + } + + @Override + public String getAsString (final FacesContext context, final UIComponent component, final Object value) { + // Is the object null? + if ((null == value) || ((String.valueOf(value)).isEmpty())) { + // Is null + return ""; //NOI18N + } else if (!(value instanceof DialableNumber)) { + // Not same interface + throw new IllegalArgumentException(MessageFormat.format("value {0} does not implement DialableNumber.", value)); //NOI18N + } + + // Return category id + return String.valueOf(((DialableNumber) value).getPhoneId()); + } + +} diff --git a/src/java/org/mxchange/addressbook/converter/contact/AddressbookContactConverter.java b/src/java/org/mxchange/addressbook/converter/contact/AddressbookContactConverter.java new file mode 100644 index 00000000..f0c67ab4 --- /dev/null +++ b/src/java/org/mxchange/addressbook/converter/contact/AddressbookContactConverter.java @@ -0,0 +1,133 @@ +/* + * 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.addressbook.converter.contact; + +import java.text.MessageFormat; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.convert.Converter; +import javax.faces.convert.ConverterException; +import javax.faces.convert.FacesConverter; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcontacts.contact.ContactSessionBeanRemote; +import org.mxchange.jcontacts.exceptions.ContactNotFoundException; +import org.mxchange.jcoreeelogger.beans.local.logger.Log; +import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal; +import org.mxchange.jusercore.model.user.User; + +/** + * Converter for contact id <-> valid contact instance + *

+ * @author Roland Haeder + */ +@FacesConverter (value = "ContactConverter") +public class AddressbookContactConverter implements Converter { + + /** + * Logger instance + */ + @Log + private LoggerBeanLocal loggerBeanLocal; + + /** + * User EJB + */ + private ContactSessionBeanRemote contactBean; + + /** + * Initialization of this converter + */ + public AddressbookContactConverter () { + // Try to get it + try { + // Get initial context + Context context = new InitialContext(); + + // Lookup logger + this.loggerBeanLocal = (LoggerBeanLocal) context.lookup("java:global/jcore-logger-ejb/logger!org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal"); //NOI18N + + // ... and user controller + this.contactBean = (ContactSessionBeanRemote) context.lookup("java:global/addressbook-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote"); //NOI18N + } catch (final NamingException ex) { + // Continue to throw it + throw new RuntimeException(MessageFormat.format("context.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N + } + } + + @Override + public Object getAsObject (final FacesContext context, final UIComponent component, final String submittedValue) { + // Trace message + // NOISY-DEBUG: this.loggerBeanLocal.logTrace(MessageFormat.format("getAsObject: context={0},component={1},submittedValue={2} - CALLED!", context, component, submittedValue)); //NOI18N + + // Is the value null or empty? + if ((null == submittedValue) || (submittedValue.trim().isEmpty())) { + // Warning message + this.loggerBeanLocal.logWarning("getAsObject: submittedValue is null or empty - EXIT!"); //NOI18N + + // Return null + return null; + } + + // Init instance + Contact contact = null; + + try { + // Try to parse the value as long + Long contactId = Long.valueOf(submittedValue); + + // Debug message + // NOISY-DEBUG: this.loggerBeanLocal.logDebug(MessageFormat.format("getAsObject: contactId{0}", contactId)); //NOI18N + + // Try to get user instance from it + contact = this.contactBean.findContactById(contactId); + + // Debug message + // NOISY-DEBUG: this.loggerBeanLocal.logDebug(MessageFormat.format("getAsObject: user={0}", user)); //NOI18N + } catch (final NumberFormatException ex) { + // Throw again + throw new ConverterException(ex); + } catch (final ContactNotFoundException ex) { + // Debug message + this.loggerBeanLocal.logDebug(MessageFormat.format("getAsObject: Exception: {0} - Returning null ...", ex)); //NOI18N + } + + // Trace message + // NOISY-DEBUG: this.loggerBeanLocal.logTrace(MessageFormat.format("getAsObject: contact={0} - EXIT!", contact)); //NOI18N + + // Return it + return contact; + } + + @Override + public String getAsString (final FacesContext context, final UIComponent component, final Object value) { + // Is the object null? + if ((null == value) || ((String.valueOf(value)).isEmpty())) { + // Is null + return ""; //NOI18N + } else if (!(value instanceof User)) { + // Not same interface + throw new IllegalArgumentException(MessageFormat.format("value {0} does not implement User.", value)); //NOI18N + } + + // Return category id + return String.valueOf(((User) value).getUserId()); + } + +} diff --git a/src/java/org/mxchange/localization/bundle_de_DE.properties b/src/java/org/mxchange/localization/bundle_de_DE.properties index 24c0f8b0..ff9bb004 100644 --- a/src/java/org/mxchange/localization/bundle_de_DE.properties +++ b/src/java/org/mxchange/localization/bundle_de_DE.properties @@ -335,8 +335,7 @@ LINK_ADMIN_UNLOCK_USER=Ent-/Sperren von Benutzeraccounts LINK_ADMIN_UNLOCK_USER_TITLE=Sperren oder entsperren Sie hier Benutzeraccounts. PAGE_TITLE_ADMIN_LIST_USER=Benutzeraccounts auflisten CONTENT_TITLE_ADMIN_LIST_USER=Auflisten von Benutzeraccounts: -#@TODO Please fix German umlauts! -PAGE_TITLE_ADMIN_EDIT_USER=Benuzteraccount aendern +PAGE_TITLE_ADMIN_EDIT_USER=Benuzteraccount editieren #@TODO Please fix German umlauts! CONTENT_TITLE_ADMIN_EDIT_USER=Aendern von Benutzeraccounts: PAGE_TITLE_ADMIN_UNLOCK_USER=Ent-/Sperren von Benutzeraccounts @@ -420,18 +419,18 @@ ADMIN_LIST_COUNTRY_DATA_COUNTRY_CODE=Laendercode: ADMIN_LIST_COUNTRY_DATA_COUNTRY_EXTERNAL_DIAL_PREFIX=Vorwahl ausserorts: ADMIN_LIST_COUNTRY_DATA_COUNTRY_NAME=Land: #@TODO Please fix German umlauts! -ADMIN_LINK_EDIT_DELETE_COUNTRY_TITLE=Aendern oder loeschen der Laenderdaten +ADMIN_LINK_EDIT_DELETE_COUNTRY_TITLE=Editieren oder loeschen der Laenderdaten #@TODO Please fix German umlauts! TABLE_SUMMARY_ADMIN_LIST_COUNTRIES=Listet alle bereits angelegten Laenderdaten auf. COUNTRY_GERMANY=Deutschland -ERROR_TARGET_CONTROLLER_PARAMETER_NOT_SET=Fehler: Der Parameter 'targetController' ist nicht gesetzt. +ERROR_PARAMETER_TARGET_CONTROLLER_NOT_SET=Fehler: Der Parameter 'targetController' ist nicht gesetzt. ADMIN_MENU_MOBILE_PROVIDER_TITLE=Handyanbieter verwalten #@TODO Please fix German umlauts! LINK_ADMIN_LIST_MOBILE_PROVIDER_TITLE=Hinzufuegen, auflisten, aendern und loeschen von Handyanbietern. PAGE_TITLE_ADMIN_MOBILE_PROVIDER_LIST=Handyanbieter verwalten CONTENT_TITLE_ADMIN_MOBILE_PROVIDER_LIST=Verwalten von Handyanbietern: #@TODO Please fix German umlauts! -PAGE_TITLE_ADMIN_MOBILE_PROVIDER_EDIT=Handyanbieter aendern +PAGE_TITLE_ADMIN_MOBILE_PROVIDER_EDIT=Handyanbieter editieren #@TODO Please fix German umlauts! CONTENT_TITLE_ADMIN_MOBILE_PROVIDER_EDIT=Aendern des Handyanbieters: #@TODO Please fix German umlauts! @@ -466,7 +465,7 @@ ADMIN_LIST_MOBILE_PROVIDER_DIAL_PREFIX=Vorwahl: ADMIN_LIST_MOBILE_PROVIDER_COUNTRY=Land: ADMIN_LIST_MOBILE_PROVIDER_ENTRY_CREATED=Erstellt: #@TODO Please fix German umlauts! -ADMIN_LINK_EDIT_DELETE_MOBILE_PROVIDER_TITLE=Aendern oder loeschen des Handyanbieters +ADMIN_LINK_EDIT_DELETE_MOBILE_PROVIDER_TITLE=Editieren oder loeschen des Handyanbieters ADMIN_ADD_USER_ENTER_PASSWORD1=Passwort eingeben: ADMIN_ADD_USER_ENTER_PASSWORD2=Passwort wiederholen: ADMIN_LIST_USER_ID=Benutzer-Id: @@ -486,3 +485,90 @@ USER_PROFILE_MODE_INVISIBLE=Durchsichtig USER_PROFILE_MODE_MEMBERS=Nur Mitglieder #@TODO Please fix German umlauts! USER_PROFILE_MODE_PUBLIC=Oeffentlich +ADMIN_LINK_SHOW_USER_TITLE=Administratives Benutzerprofil anzeigen +PAGE_TITLE_ADMIN_SHOW_USER=Benutzerprofil anzeigen +CONTENT_TITLE_ADMIN_SHOW_USER=Profil eines Benutzers anzeigen: +ERROR_PARAMETER_USER_ID_NOT_SET=Fehler: Benutzer-Id nicht gesetzt (Parameter: userId). +ERROR_USER_ID_NOT_FOUND=Fehler: Benutzer-Id nicht gefunden. +#@TODO Please fix German umlauts! +ADMIN_TABLE_SUMMARY_SHOW_USER=Zeigt ein Benutzerprofil fuer administrative Zwecke an. +ADMIN_HEADER_SHOW_USER=Benutzer {0} (Nummer {1}): +ADMIN_SHOW_USER_ID=Benutzer-Id: +ADMIN_SHOW_USER_NAME=Benutzername: +ADMIN_SHOW_USER_CREATED=Wann Benutzer erstellt: +#@TODO Please fix German umlauts! +ADMIN_SHOW_USER_UPDATED=Wann Benutzer geaendert: +ADMIN_SHOW_USER_ACCOUNT_STATUS=Account-Status: +ADMIN_SHOW_USER_PROFILE_MODE=Profilmodus: +ADMIN_SHOW_USER_LAST_LOCKED=Zuletzt gesperrt: +ADMIN_SHOW_USER_LAST_LOCKED_REASON=Letzter Sperrgrund: +ADMIN_SHOW_USER_CONTACT_CREATED=Wann Kontaktdaten erstellt: +#@TODO Please fix German umlauts! +ADMIN_SHOW_USER_CONTACT_UPDATED=Wann Kontaktdaten geaendert: +ADMIN_SHOW_USER_IS_OWN_CONTACT=Eigenes Account: +ADMIN_SHOW_USER_GENDER=Anrede: +ADMIN_SHOW_USER_TITLE=Titel: +ADMIN_SHOW_USER_FIRST_NAME=Vorname: +ADMIN_SHOW_USER_FAMILY_NAME=Nachname: +ADMIN_SHOW_USER_STREET=Strasse: +ADMIN_SHOW_USER_HOUSE_NUMBER=Hausnummer: +ADMIN_SHOW_USER_ZIP_CODE=Postleitzahl: +ADMIN_SHOW_USER_CITY=Stadt: +ADMIN_SHOW_USER_EMAIL_ADDRESS=Email-Adresse: +ADMIN_SHOW_USER_BIRTHDAY=Geburtstag: +ADMIN_LINKS_HEADER=Administrative Links: +ADMIN_LINK_EDIT_USER=Benutzeraccount editieren +ADMIN_LINK_EDIT_USER_TITLE=Editieren der Benutzer- und Kontaktdaten. +ADMIN_LINK_UNLOCK_USER=Ent-/Sperren des Benutzeraccounts +ADMIN_LINK_UNLOCK_USER_TITLE=Sperren und entsperren des Benutzeraccounts. +#@TODO Please fix German umlauts! +ADMIN_LINK_DELETE_USER=Benutzeraccount loeschen +#@TODO Please fix German umlauts! +ADMIN_LINK_DELETE_USER_TITLE=Loescht das Benutzeraccount (nach Bestaetigung). +#@TODO Please fix German umlauts! +CONTENT_TITLE_ADMIN_DELETE_USER=Benutzeraccount loeschen: +#@TODO Please fix German umlauts! +PAGE_TITLE_ADMIN_DELETE_USER=Benutzeraccount loeschen +ADMIN_HEADER_SHOW_CELLPHONE_DATA=Daten des Mobiltelefons: +ADMIN_SHOW_CELLPHONE_ID=Id-Nummer: +ADMIN_SHOW_CELLPHONE_PROVIDER_NAME=Mobilanbieter: +ADMIN_SHOW_CELLPHONE_NUMBER_COMPLETE=Komplette Nummer: +ADMIN_SHOW_CELLPHONE_LINKS=Administrative Links: +ERROR_PARAMETER_USER_NOT_SET=Fehler: Parameter 'user' nicht gesetzt. +ADMIN_LINK_SHOW_SHORT=Anzeigen +ADMIN_LINK_SHOW_SHORT_TITLE=Eintrag einzelnt anzeigen. +ADMIN_LINK_EDIT_SHORT=Editieren +ADMIN_LINK_EDIT_SHORT_TITLE=Eintrag editieren. +#@TODO Please fix German umlauts! +ADMIN_LINK_DELETE_SHORT=Loeschen +#@TODO Please fix German umlauts! +ADMIN_LINK_DELETE_SHORT_TITLE=Eintrag loeschen. +ADMIN_LINK_UNLINK_SHORT=Abtrennen +#@TODO Please fix German umlauts! +ADMIN_LINK_UNLINK_SHORT_TITLE=Entfernt Verknuepfung zum Eintrag. +#@TODO Please fix German umlauts! +PAGE_TITLE_ADMIN_DELETE_CELLPHONE=Mobiletelefoneintrag eines Kontaktes loeschen +#@TODO Fix German umlauts! +CONTENT_TITLE_ADMIN_DELETE_CONTACT_CELLPHONE=Mobiltelefoneintrag eines Kontaktes loeschen: +PAGE_TITLE_ADMIN_EDIT_CELLPHONE=Mobiltelefoneintrag eines Kontaktes editieren +CONTENT_TITLE_ADMIN_EDIT_CONTACT_CELLPHONE=Mobiltelefoneintrag eines Kontaktes editieren: +#@TODO Please fix German umlauts! +PAGE_TITLE_ADMIN_LIST_CONTACT_CELLPHONE=Eintraege von Mobiletelefonen auflisten +PAGE_TITLE_ADMIN_SHOW_CONTACT_CELLPHONE=Mobiltelefoneintrag eines Kontaktes anzeigen +CONTENT_TITLE_ADMIN_SHOW_CONTACT_CELLPHONE=Anzeigen eines Mobiltelefoneintrags eines Kontaktes: +#@TODO Please fix German umlauts! +PAGE_TITLE_ADMIN_UNLINK_CONTACT_CELLPHONE=Verknuepfung Kontakt-Mobiletelfon loeschen +CONTENT_TITLE_ADMIN_UNLINK_CONTACT_CELLPHONE=Entfernen einer Verknuepfung Kontakt-Mobiltelefon: +ERROR_PARAMETER_PHONE_ID_NOT_SET=Fehler: Parameter 'phoneId' ist nicht gesetzt. +PAGE_TITLE_ADMIN_SHOW_MOBILE_PROVIDER=Mobilfunkbetreiber anzeigen +CONTENT_TITLE_ADMIN_SHOW_MOBILE_PROVIDER=Mobilfunkbetreiber anzeigen: +TABLE_SUMMARY_ADMIN_SHOW_CONTACT_CELLPHONE=Ein einzelner Mobiltelefoneintrag eines Kontaktes. +#@TODO Please fix German umlauts! +TABLE_SUMMARY_ADMIN_SHOW_CONTACT_CELLPHONE_LINKS=Diese Tabelle zeigt Verknuepfungen von der Mobilfunknummern zu allen Kontaktdaten an. +#@TODO Please fix German umlauts! +ADMIN_HEADER_SHOW_CONTACT_CELLPHONE_LINKS=Alle Kontakt-Mobiltelefon-Verknuepfungen fuer Id-Nummer {0}: +ERROR_PARAMETER_CONTACT_ID_NOT_SET=Fehler: Parameter 'contactId' ist nicht gesetzt. +ADMIN_SHOW_CELLPHONE_UNLINK=Trennen: +ADMIN_SHOW_CONTACT_ID=Kontakt-Id: +PAGE_TITLE_ADMIN_SHOW_CONTACT=Kontaktdaten anzeigen +CONTENT_TITLE_ADMIN_SHOW_CONTACT=Kontaktdaten anzeigen: diff --git a/src/java/org/mxchange/localization/bundle_en_US.properties b/src/java/org/mxchange/localization/bundle_en_US.properties index a1ca5140..f9ed6da5 100644 --- a/src/java/org/mxchange/localization/bundle_en_US.properties +++ b/src/java/org/mxchange/localization/bundle_en_US.properties @@ -365,7 +365,7 @@ ADMIN_LIST_COUNTRY_DATA_COUNTRY_NAME=Country: ADMIN_LINK_EDIT_DELETE_COUNTRY_TITLE=Edit or delete country TABLE_SUMMARY_ADMIN_LIST_COUNTRIES=List of all already added countries. COUNTRY_GERMANY=Germany -ERROR_TARGET_CONTROLLER_PARAMETER_NOT_SET=Error: The parameter 'targetController' is not set. +ERROR_PARAMETER_TARGET_CONTROLLER_NOT_SET=Error: The parameter 'targetController' is not set. ADMIN_MENU_MOBILE_PROVIDER_TITLE=Mobile providers LINK_ADMIN_LIST_MOBILE_PROVIDER=Manage ... LINK_ADMIN_LIST_MOBILE_PROVIDER_TITLE=Add, list, edit and delete mobile providers. @@ -410,3 +410,75 @@ USER_ACCOUNT_STATUS_LOCKED=Locked USER_PROFILE_MODE_INVISIBLE=Invisible USER_PROFILE_MODE_MEMBERS=Only members USER_PROFILE_MODE_PUBLIC=Public +ADMIN_LINK_SHOW_USER_TITLE=Show administrative user profile +PAGE_TITLE_ADMIN_SHOW_USER=Show user profile +CONTENT_TITLE_ADMIN_SHOW_USER=Show profile of a user: +ERROR_PARAMETER_USER_ID_NOT_SET=Error: User id not set (parameter userId). +ERROR_USER_ID_NOT_FOUND=Error: User id not found. +ADMIN_TABLE_SUMMARY_SHOW_USER=Shows a single user profile for administrative purposes. +ADMIN_HEADER_SHOW_USER=User {0} (id {1}): +ADMIN_SHOW_USER_ID=User id: +ADMIN_SHOW_USER_NAME=User name: +ADMIN_SHOW_USER_CREATED=When user created: +ADMIN_SHOW_USER_UPDATED=When user changed: +ADMIN_SHOW_USER_ACCOUNT_STATUS=Account status: +ADMIN_SHOW_USER_PROFILE_MODE=Profile mode: +ADMIN_SHOW_USER_LAST_LOCKED=Last locked: +ADMIN_SHOW_USER_LAST_LOCKED_REASON=Last lock reason: +ADMIN_SHOW_USER_CONTACT_CREATED=When contact data created: +ADMIN_SHOW_USER_CONTACT_UPDATED=When contact data updated: +ADMIN_SHOW_USER_IS_OWN_CONTACT=Own account: +ADMIN_SHOW_USER_GENDER=Gender: +ADMIN_SHOW_USER_TITLE=Title: +ADMIN_SHOW_USER_FIRST_NAME=First name: +ADMIN_SHOW_USER_FAMILY_NAME=Family name: +ADMIN_SHOW_USER_STREET=Street: +ADMIN_SHOW_USER_HOUSE_NUMBER=House number: +ADMIN_SHOW_USER_ZIP_CODE=ZIP code: +ADMIN_SHOW_USER_CITY=City: +ADMIN_SHOW_USER_EMAIL_ADDRESS=Email address: +ADMIN_SHOW_USER_BIRTHDAY=Birthday: +ADMIN_LINKS_HEADER=Administrative links: +ADMIN_LINK_EDIT_USER=Edit user account +ADMIN_LINK_EDIT_USER_TITLE=Editing of user and contact data. +ADMIN_LINK_UNLOCK_USER=Lock/Unlock user account +ADMIN_LINK_UNLOCK_USER_TITLE=Lock and unlock of user account +ADMIN_LINK_DELETE_USER=Delete user account +ADMIN_LINK_DELETE_USER_TITLE=Deletes user account (after confirmation). +CONTENT_TITLE_ADMIN_DELETE_USER=Delete user account: +PAGE_TITLE_ADMIN_DELETE_USER=Delete user account +ADMIN_HEADER_SHOW_CELLPHONE_DATA=Data of mobile phone: +ADMIN_SHOW_CELLPHONE_ID=Id number: +ADMIN_SHOW_CELLPHONE_PROVIDER_NAME=Mobile provider: +ADMIN_SHOW_CELLPHONE_NUMBER_COMPLETE=Complete number: +ADMIN_SHOW_CELLPHONE_LINKS=Administrative links: +ERROR_PARAMETER_USER_NOT_SET=Error: Parameter 'user' not set. +ADMIN_LINK_SHOW_SHORT=Show +ADMIN_LINK_SHOW_SHORT_TITLE=Show single entry. +ADMIN_LINK_EDIT_SHORT=Edit +ADMIN_LINK_EDIT_SHORT_TITLE=Edit entry. +ADMIN_LINK_DELETE_SHORT=Delete +ADMIN_LINK_DELETE_SHORT_TITLE=Delete entry. +ADMIN_LINK_UNLINK_SHORT=Unlink +ADMIN_LINK_UNLINK_SHORT_TITLE=Removes link to entry. +PAGE_TITLE_ADMIN_DELETE_CELLPHONE=Delete contact's cellphone entry +CONTENT_TITLE_ADMIN_DELETE_CONTACT_CELLPHONE=Delete contact's cellphone entry: +PAGE_TITLE_ADMIN_EDIT_CELLPHONE=Edit contact's cellphone entry +CONTENT_TITLE_ADMIN_EDIT_CONTACT_CELLPHONE=Edit contact's cellphone entry: +PAGE_TITLE_ADMIN_LIST_CONTACT_CELLPHONE=List all cellphone entries +PAGE_TITLE_ADMIN_SHOW_CONTACT_CELLPHONE=Show contact's cellphone entry +CONTENT_TITLE_ADMIN_SHOW_CONTACT_CELLPHONE=Show contact's cellphone entry: +PAGE_TITLE_ADMIN_UNLINK_CONTACT_CELLPHONE=Remove link contact-cellphone +#@TODO Please fix German umlauts! +CONTENT_TITLE_ADMIN_UNLINK_CONTACT_CELLPHONE=Remove link between contact-cellphone: +ERROR_PARAMETER_PHONE_ID_NOT_SET=Error: Parameter 'phoneId' is not set. +PAGE_TITLE_ADMIN_SHOW_MOBILE_PROVIDER=Show mobile provider +CONTENT_TITLE_ADMIN_SHOW_MOBILE_PROVIDER=Show mobile provider: +TABLE_SUMMARY_ADMIN_SHOW_CONTACT_CELLPHONE=A single contact's cellphone entry. +TABLE_SUMMARY_ADMIN_SHOW_CONTACT_CELLPHONE_LINKS=This table shows links of of this cellphone number to all contacts. +ADMIN_HEADER_SHOW_CONTACT_CELLPHONE_LINKS=All links between contact-cellphone for id {0}: +ERROR_PARAMETER_CONTACT_ID_NOT_SET=Error: Parameter 'contactId' is not set. +ADMIN_SHOW_CELLPHONE_UNLINK=Unlink: +ADMIN_SHOW_CONTACT_ID=Contact id: +PAGE_TITLE_ADMIN_SHOW_CONTACT=Show contact data +CONTENT_TITLE_ADMIN_SHOW_CONTACT=Show contact data: diff --git a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaAdminMobileProviderWebRequestBean.java b/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaAdminMobileProviderWebRequestBean.java deleted file mode 100644 index 02aae750..00000000 --- a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaAdminMobileProviderWebRequestBean.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * 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.beans.mobileprovider; - -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import javax.enterprise.context.RequestScoped; -import javax.enterprise.event.Event; -import javax.enterprise.inject.Any; -import javax.faces.view.facelets.FaceletException; -import javax.inject.Inject; -import javax.inject.Named; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import org.mxchange.jcountry.data.Country; -import org.mxchange.jphone.events.AdminAddedMobileProviderEvent; -import org.mxchange.jphone.events.AdminMobileProviderAddedEvent; -import org.mxchange.jphone.exceptions.MobileProviderAlreadyAddedException; -import org.mxchange.jphone.phonenumbers.mobileprovider.AdminMobileProviderSingletonBeanRemote; -import org.mxchange.jphone.phonenumbers.mobileprovider.CellphoneProvider; -import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; - -/** - * Administrative bean (controller) for mobile provider - *

- * @author Roland Haeder - */ -@Named ("adminMobileController") -@RequestScoped -public class PizzaAdminMobileProviderWebRequestBean implements PizzaAdminMobileProviderWebRequestController { - - /** - * Serial number - */ - private static final long serialVersionUID = 184_598_175_371_269_016L; - - /** - * Remote EJB for mobile providers (administrative) - */ - private AdminMobileProviderSingletonBeanRemote adminRemoteBean; - - /** - * Regular bean - */ - @Inject - private PizzaMobileProviderWebRequestController mobileController; - - /** - * Event being fired when the mobile provider was added - */ - @Inject - @Any - private Event providerAddedEvent; - - /** - * Country instance ('s dial data) - */ - private Country providerCountry; - - /** - * Provider dial prefix (example: 0177 for German E+) - */ - private Long providerDialPrefix; - - /** - * Pattern for mail gateway - */ - private String providerMailPattern; - - /** - * Name of the provider - */ - private String providerName; - - /** - * Default constructor - */ - public PizzaAdminMobileProviderWebRequestBean () { - // Try it - try { - // Get initial context - Context context = new InitialContext(); - - // Try to lookup the beans - this.adminRemoteBean = (AdminMobileProviderSingletonBeanRemote) context.lookup("java:global/PizzaService-ejb/adminmobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.AdminMobileProviderSingletonBeanRemote"); //NOI18N - } catch (final NamingException e) { - // Throw it again - throw new FaceletException(e); - } - } - - @Override - public void addMobileProvider () { - // Create mobile provider instance - MobileProvider mobileProvider = new CellphoneProvider(this.getProviderDialPrefix(), this.getProviderName(), this.getProviderCountry(), this.getProviderMailPattern()); - - // Is the provider already created? - if (this.isMobileProviderCreated(mobileProvider)) { - // Then throw exception - throw new FaceletException(new MobileProviderAlreadyAddedException(mobileProvider)); - } - - // Init variable - MobileProvider updatedProvider = null; - - try { - // Call remote EJB and get back an updated instance - updatedProvider = this.adminRemoteBean.addMobileProvider(mobileProvider); - } catch (final MobileProviderAlreadyAddedException ex) { - // Throw again - throw new FaceletException(ex); - } - - // Fire event - this.providerAddedEvent.fire(new AdminMobileProviderAddedEvent(updatedProvider)); - - // Clear this bean - this.clear(); - } - - @Override - public List allMobileProvider () { - return this.mobileController.allMobileProvider(); - } - - @Override - public Country getProviderCountry () { - return this.providerCountry; - } - - @Override - public void setProviderCountry (final Country providerCountry) { - this.providerCountry = providerCountry; - } - - @Override - public Long getProviderDialPrefix () { - return this.providerDialPrefix; - } - - @Override - public void setProviderDialPrefix (final Long providerDialPrefix) { - this.providerDialPrefix = providerDialPrefix; - } - - @Override - public String getProviderMailPattern () { - return this.providerMailPattern; - } - - @Override - public void setProviderMailPattern (final String providerMailPattern) { - this.providerMailPattern = providerMailPattern; - } - - @Override - public String getProviderName () { - return this.providerName; - } - - @Override - public void setProviderName (final String providerName) { - this.providerName = providerName; - } - - @Override - public boolean hasMobileProvider () { - return (!this.allMobileProvider().isEmpty()); - } - - /** - * Clears this bean - */ - private void clear () { - // Clear all fields - this.setProviderCountry(null); - this.setProviderDialPrefix(null); - this.setProviderMailPattern(null); - this.setProviderName(null); - } - - /** - * Checks whether if the given mobile provider is already created by - * checking both dial prefix and country. - *

- * @param mobileProvider Mobile provider instance to check - *

- * @return Whether the given mobile provider instance is found - */ - private boolean isMobileProviderCreated (final MobileProvider mobileProvider) { - // Default is not found - boolean isFound = false; - - // Get list of all providers - List providers = this.allMobileProvider(); - - // Get iterator from it - Iterator iterator = providers.iterator(); - - // Loop through all - while (iterator.hasNext()) { - // Get next element - MobileProvider next = iterator.next(); - - // Is the provider's dial prefix and country the same? - if ((Objects.equals(mobileProvider.getProviderDialPrefix(), next.getProviderDialPrefix())) && (Objects.equals(mobileProvider.getProviderCountry(), next.getProviderCountry()))) { - // Is the same, abort loop - isFound = true; - break; - } - } - - // Return result - return isFound; - } - -} diff --git a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaAdminMobileProviderWebRequestController.java b/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaAdminMobileProviderWebRequestController.java deleted file mode 100644 index 558de55b..00000000 --- a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaAdminMobileProviderWebRequestController.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * 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.beans.mobileprovider; - -import java.io.Serializable; -import java.util.List; -import org.mxchange.jcountry.data.Country; -import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; - -/** - * An interface for a request web controller (bean) for administrative mobile - * provider purposes. - *

- * @author Roland Haeder - */ -public interface PizzaAdminMobileProviderWebRequestController extends Serializable { - - /** - * Adds a mobile provider to database by calling the EJB. A pre-check on - * dial-prefix and country combination is done, if found, an exception is - * thrown. - */ - void addMobileProvider (); - - /** - * Returns a list of all mobile providers - *

- * @return A list of all mobile providers - */ - List allMobileProvider (); - - /** - * Checks whether mobile providers are registered - *

- * @return Whether mobile providers are registered - */ - boolean hasMobileProvider (); - - /** - * Getter for provider dial prefix - *

- * @return Provider dial prefix - */ - Long getProviderDialPrefix (); - - /** - * Setter for provider dial prefix - *

- * @param providerDialPrefix Provider dial prefix - */ - void setProviderDialPrefix (final Long providerDialPrefix); - - /** - * Getter for provider name - *

- * @return Provider name - */ - String getProviderName (); - - /** - * Setter for provider name - *

- * @param providerName Provider name - */ - void setProviderName (final String providerName); - - /** - * Getter for country instance ('s dial data) - *

- * @return Country instance - */ - Country getProviderCountry (); - - /** - * Setter for country instance ('s dial data) - *

- * @param country Country instance - */ - void setProviderCountry (final Country country); - - /** - * Getter for pattern for mail gateway - *

- * @return Pattern for mail gateway - */ - String getProviderMailPattern (); - - /** - * Setter for pattern for mail gateway - *

- * @param providerMailRegex Pattern for mail gateway - */ - void setProviderMailPattern (final String providerMailRegex); - -} diff --git a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestBean.java b/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestBean.java deleted file mode 100644 index 32656b23..00000000 --- a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestBean.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * 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.beans.mobileprovider; - -import java.text.MessageFormat; -import java.util.List; -import javax.annotation.PostConstruct; -import javax.enterprise.context.SessionScoped; -import javax.enterprise.event.Observes; -import javax.faces.view.facelets.FaceletException; -import javax.inject.Named; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import org.mxchange.jphone.events.AdminAddedMobileProviderEvent; -import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; -import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote; - -/** - * A general bean for mobile providers - *

- * @author Roland Haeder - */ -@Named ("mobileController") -@SessionScoped -public class PizzaMobileProviderWebRequestBean implements PizzaMobileProviderWebRequestController { - - /** - * Serial number - */ - private static final long serialVersionUID = 15_869_423_671_950_276L; - - /** - * "Cached" list of mobile providers - */ - private List mobileProviders; - - /** - * Remote EJB for mobile providers (regular) - */ - private MobileProviderSingletonBeanRemote mobileRemoteBean; - - /** - * Default constructor - */ - public PizzaMobileProviderWebRequestBean () { - // Try it - try { - // Get initial context - Context context = new InitialContext(); - - // Try to lookup the beans - this.mobileRemoteBean = (MobileProviderSingletonBeanRemote) context.lookup("java:global/PizzaService-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote"); //NOI18N - } catch (final NamingException e) { - // Throw it again - throw new FaceletException(e); - } - } - - @Override - public void afterAdminAddedMobileProvider (@Observes final AdminAddedMobileProviderEvent event) { - // Is all valid? - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); //NOI18N - } else if (event.getAddedMobileProvider()== null) { - // Throw again ... - throw new NullPointerException("event.addedMobileProvider is null"); //NOI18N - } else if (event.getAddedMobileProvider().getProviderId()== null) { - // And again ... - throw new NullPointerException("event.addedMobileProvider.providerId is null"); //NOI18N - } else if (event.getAddedMobileProvider().getProviderId() < 1) { - // Id is invalid - throw new IllegalArgumentException(MessageFormat.format("event.addedMobileProvider.providerId={0} is not valid.", event.getAddedMobileProvider().getProviderId())); //NOI18N - } - - // Add it to the list - this.mobileProviders.add(event.getAddedMobileProvider()); - } - - @Override - @SuppressWarnings ("ReturnOfCollectionOrArrayField") - public List allMobileProvider () { - return this.mobileProviders; - } - - /** - * Initializer method - */ - @PostConstruct - public void init () { - // Init list of mobile providers - this.mobileProviders = this.mobileRemoteBean.allMobileProvider(); - } - -} diff --git a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestController.java b/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestController.java deleted file mode 100644 index ba780e5c..00000000 --- a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestController.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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.beans.mobileprovider; - -import java.io.Serializable; -import java.util.List; -import org.mxchange.jphone.events.AdminAddedMobileProviderEvent; -import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; - -/** - * An interface for general mobile provider controller - *

- * @author Roland Haeder - */ -public interface PizzaMobileProviderWebRequestController extends Serializable { - - /** - * Returns a list of all mobile providers - *

- * @return A list of all mobile providers - */ - List allMobileProvider (); - - /** - * Observes events being fired after the administrator has added a new - * mobile provider - *

- * @param event Event being fired - */ - void afterAdminAddedMobileProvider (final AdminAddedMobileProviderEvent event); - -} diff --git a/web/WEB-INF/faces-config.xml b/web/WEB-INF/faces-config.xml index 14d9b5dc..11b8c85e 100644 --- a/web/WEB-INF/faces-config.xml +++ b/web/WEB-INF/faces-config.xml @@ -99,22 +99,10 @@ exception /exception.xhtml - - admin_delete_user - /admin/admin_user_delete.xhtml - admin_list_user /admin/admin_user_list.xhtml - - admin_edit_user - /admin/admin_user_edit.xhtml - - - admin_unlock_user - /admin/admin_user_unlock.xhtml - admin_list_countries /admin/admin_country_list.xhtml @@ -123,6 +111,10 @@ admin_list_mobile_provider /admin/admin_mobile_provider_list.xhtml + + admin_list_contact_cellphone + /admin/admin_contact_cellphone_list.xhtml + /user/login.xhtml @@ -209,6 +201,10 @@ login_data_saved /login/login_data_saved.xhtml + + admin_delete_product + /admin/admin_product_delete.xhtml + /login/login_change_personal_data.xhtml @@ -216,6 +212,10 @@ login_data_saved /login/login_data_saved.xhtml + + admin_delete_category + /admin/admin_category_delete.xhtml + /admin/admin_country_list.xhtml @@ -223,6 +223,117 @@ admin_edit_country /admin/admin_country_edit.xhtml + + admin_delete_country + /admin/admin_country_delete.xhtml + + + + /admin/admin_mobile_provider_list.xhtml + + admin_edit_mobile_provider + /admin/admin_mobile_provider_edit.xhtml + + + admin_delete_mobile_provider + /admin/admin_mobile_provider_delete.xhtml + + + admin_show_mobile_provider + /admin/admin_mobile_provider_show.xhtml + + + + /admin/admin_user_list.xhtml + + admin_show_user + /admin/admin_user_show.xhtml + + + admin_edit_user + /admin/admin_user_edit.xhtml + + + admin_delete_user + /admin/admin_user_delete.xhtml + + + admin_unlock_user + /admin/admin_user_unlock.xhtml + + + + /admin/admin_user_show.xhtml + + admin_show_contact_cellphone + /admin/admin_contact_cellphone_show.xhtml + + + admin_edit_contact_cellphone + /admin/admin_contact_cellphone_edit.xhtml + + + admin_unlink_contact_cellphone + /admin/admin_contact_cellphone_unlink.xhtml + + + admin_delete_contact_cellphone + /admin/admin_contact_cellphone_delete.xhtml + + + admin_edit_user + /admin/admin_user_edit.xhtml + + + admin_delete_user + /admin/admin_user_delete.xhtml + + + admin_unlock_user + /admin/admin_user_unlock.xhtml + + + admin_show_mobile_provider + /admin/admin_mobile_provider_show.xhtml + + + + /admin/admin_contact_cellphone_list.xhtml + + admin_show_contact_cellphone + /admin/admin_contact_cellphone_show.xhtml + + + admin_edit_contact_cellphone + /admin/admin_contact_cellphone_edit.xhtml + + + admin_delete_contact_cellphone + /admin/admin_contact_cellphone_delete.xhtml + + + + /admin/admin_contact_cellphone_show.xhtml + + admin_show_mobile_provider + /admin/admin_mobile_provider_show.xhtml + + + admin_edit_contact_cellphone + /admin/admin_contact_cellphone_edit.xhtml + + + admin_delete_contact_cellphone + /admin/admin_contact_cellphone_delete.xhtml + + + admin_unlink_contact_cellphone + /admin/admin_contact_cellphone_unlink.xhtml + + + admin_show_contact + /admin/admin_contact_show.xhtml + - - /admin/admin_mobile_provider_list.xhtml - - admin_edit_mobile_provider - /admin/admin_mobile_provider_edit.xhtml - - diff --git a/web/WEB-INF/templates/admin/admin_cellphone_data.tpl b/web/WEB-INF/templates/admin/admin_cellphone_data.tpl new file mode 100644 index 00000000..030d3528 --- /dev/null +++ b/web/WEB-INF/templates/admin/admin_cellphone_data.tpl @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + diff --git a/web/WEB-INF/templates/admin/admin_cellphone_links.tpl b/web/WEB-INF/templates/admin/admin_cellphone_links.tpl new file mode 100644 index 00000000..f3201442 --- /dev/null +++ b/web/WEB-INF/templates/admin/admin_cellphone_links.tpl @@ -0,0 +1,46 @@ + + + + + + +
    + + + + + + + + + + + +
+
+
diff --git a/web/WEB-INF/templates/admin/admin_form_mobile_provider.tpl b/web/WEB-INF/templates/admin/admin_form_mobile_provider.tpl index 7d2232c3..25f954eb 100644 --- a/web/WEB-INF/templates/admin/admin_form_mobile_provider.tpl +++ b/web/WEB-INF/templates/admin/admin_form_mobile_provider.tpl @@ -19,7 +19,7 @@
- +
@@ -33,7 +33,7 @@
- +
@@ -47,7 +47,7 @@
- +
@@ -59,7 +59,7 @@
- +
diff --git a/web/WEB-INF/templates/admin/admin_menu.tpl b/web/WEB-INF/templates/admin/admin_menu.tpl index 60095a66..5bae5b8b 100644 --- a/web/WEB-INF/templates/admin/admin_menu.tpl +++ b/web/WEB-INF/templates/admin/admin_menu.tpl @@ -20,9 +20,6 @@
  • -
  • -
  • -
diff --git a/web/admin/admin_mobile_provider_show.xhtml b/web/admin/admin_mobile_provider_show.xhtml new file mode 100644 index 00000000..5689de21 --- /dev/null +++ b/web/admin/admin_mobile_provider_show.xhtml @@ -0,0 +1,20 @@ + + + + + + #{msg.PAGE_TITLE_ADMIN_SHOW_MOBILE_PROVIDER} + + + #{msg.CONTENT_TITLE_ADMIN_SHOW_MOBILE_PROVIDER} + + + + Here goes your content. + + + diff --git a/web/admin/admin_user_list.xhtml b/web/admin/admin_user_list.xhtml index e8bc9179..01cb96dd 100644 --- a/web/admin/admin_user_list.xhtml +++ b/web/admin/admin_user_list.xhtml @@ -18,7 +18,7 @@ #{msg.ADMIN_LIST_USER_ID} - + @@ -62,7 +62,7 @@ #{msg.ADMIN_LIST_USER_CREATED} - + diff --git a/web/admin/admin_user_show.xhtml b/web/admin/admin_user_show.xhtml new file mode 100644 index 00000000..dff90801 --- /dev/null +++ b/web/admin/admin_user_show.xhtml @@ -0,0 +1,182 @@ + + + + + + + + + + #{msg.PAGE_TITLE_ADMIN_SHOW_USER} + + + #{msg.CONTENT_TITLE_ADMIN_SHOW_USER} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/resources/css/cssLayout.css b/web/resources/css/cssLayout.css index bf62f151..457a8646 100644 --- a/web/resources/css/cssLayout.css +++ b/web/resources/css/cssLayout.css @@ -122,18 +122,27 @@ table, .table, .table_medium { clear: both; } -ul.footer_nav { +ul.footer_nav, ul.mini_nav { + display: block; text-align: center; - /*width : 95%;*/ list-style: none; margin: 0px; + padding: 0px; } -ul.footer_nav li.footer_link { +ul.footer_nav li.footer_link, ul.mini_nav li.mini_link { + display: block; float: left; +} + +ul.footer_nav li.footer_link { width: 100px; } +ul.mini_nav li.mini_link { + padding: 1px; +} + ul.footer_nav li.footer_copyright { float: right; width: 300px; @@ -213,3 +222,26 @@ ul.footer_nav li.footer_copyright { .user_status_unconfirmed { color: #aa0000; } + +.data_label, .data_field { + display: block; + width: 100%; + height: 14px; + padding: 1px; + margin: 1px; + border: 1px solid #aaaaaa; + vertical-align: top; +} + +.data_label { + font-weight: bold; + background-color: #dddddd; +} + +.unlink_link { + color: #aaaa00; +} + +.delete_link { + color: #aa0000; +}