--- /dev/null
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.beans.businesscontact;
+
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.SessionScoped;
+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.jcontactsbusiness.BusinessBasicData;
+import org.mxchange.jcontactsbusiness.BusinessDataAdminSessionBeanRemote;
+import org.mxchange.jcountry.data.Country;
+import org.mxchange.jjobs.beans.BaseJobsController;
+
+/**
+ * An administrative business contact bean (controller)
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@Named ("adminBusinessDataController")
+@SessionScoped
+public class JobsAdminBusinessContactWebSessionBean extends BaseJobsController implements JobsAdminBusinessContactWebSessionController {
+
+ /**
+ * Serial number
+ */
+ private static final long serialVersionUID = 56_189_028_928_374L;
+
+ /**
+ * Remote contact bean
+ */
+ private BusinessDataAdminSessionBeanRemote adminBusinessDataBean;
+
+ /**
+ * A list of all registered companies (globally)
+ */
+ private List<BusinessBasicData> businessContacts;
+
+ /**
+ * Comments for this company
+ */
+ private String companyComments;
+
+ /**
+ * Companies (main) email address (example: info@company.example)
+ */
+ private String companyEmailAddress;
+
+ /**
+ * Company legal status (example: Incorporated, GmbH)
+ */
+ private String companyLegalStatus;
+
+ /**
+ * Company name
+ */
+ private String companyName;
+
+ /**
+ * Area code for fax number
+ */
+ private Integer faxAreaCode;
+
+ /**
+ * Country for fax number
+ */
+ private Country faxCountry;
+
+ /**
+ * Dial number for fax number
+ */
+ private Long faxNumber;
+
+ /**
+ * Area code for land-line number
+ */
+ private Integer landLineAreaCode;
+
+ /**
+ * Country for land-line number
+ */
+ private Country landLineCountry;
+
+ /**
+ * Dial number for land-line number
+ */
+ private Long landLineNumber;
+
+ /**
+ * Constructor
+ */
+ public JobsAdminBusinessContactWebSessionBean () {
+ // Call super constructor
+ super();
+ }
+
+ @Override
+ @SuppressWarnings ("ReturnOfCollectionOrArrayField")
+ public List<BusinessBasicData> allBusinessContacts () {
+ return this.businessContacts;
+ }
+
+ /**
+ * Getter for comments
+ * <p>
+ * @return Comments
+ */
+ public String getCompanyComments () {
+ return this.companyComments;
+ }
+
+ /**
+ * Setter for comments
+ * <p>
+ * @param companyComments Comments
+ */
+ public void setCompanyComments (final String companyComments) {
+ this.companyComments = companyComments;
+ }
+
+ /**
+ * Getter for company's (main) email address
+ * <p>
+ * @return Company's (main) email address
+ */
+ public String getCompanyEmailAddress () {
+ return this.companyEmailAddress;
+ }
+
+ /**
+ * Setter for company's (main) email address
+ * <p>
+ * @param companyEmailAddress Company's (main) email address
+ */
+ public void setCompanyEmailAddress (final String companyEmailAddress) {
+ this.companyEmailAddress = companyEmailAddress;
+ }
+
+ /**
+ * Getter for company's legal status
+ * <p>
+ * @return Company's legal status
+ */
+ public String getCompanyLegalStatus () {
+ return this.companyLegalStatus;
+ }
+
+ /**
+ * Setter for company's legal status
+ * <p>
+ * @param companyLegalStatus Company's legal status
+ */
+ public void setCompanyLegalStatus (final String companyLegalStatus) {
+ this.companyLegalStatus = companyLegalStatus;
+ }
+
+ /**
+ * Getter for company name
+ * <p>
+ * @return Company name
+ */
+ public String getCompanyName () {
+ return this.companyName;
+ }
+
+ /**
+ * Setter for company name
+ * <p>
+ * @param companyName Company name
+ */
+ public void setCompanyName (final String companyName) {
+ this.companyName = companyName;
+ }
+
+ /**
+ * Getter for fax number's area code
+ * <p>
+ * @return Fax number's area code
+ */
+ public Integer getFaxAreaCode () {
+ return this.faxAreaCode;
+ }
+
+ /**
+ * Setter for fax number's area code
+ * <p>
+ * @param faxAreaCode Fax number's area code
+ */
+ public void setFaxAreaCode (final Integer faxAreaCode) {
+ this.faxAreaCode = faxAreaCode;
+ }
+
+ /**
+ * Getter for fax's country instance
+ * <p>
+ * @return Fax' country instance
+ */
+ public Country getFaxCountry () {
+ return this.faxCountry;
+ }
+
+ /**
+ * Setter for fax's country instance
+ * <p>
+ * @param faxCountry Fax' country instance
+ */
+ public void setFaxCountry (final Country faxCountry) {
+ this.faxCountry = faxCountry;
+ }
+
+ /**
+ * Getter for fax number
+ * <p>
+ * @return Fax number
+ */
+ public Long getFaxNumber () {
+ return this.faxNumber;
+ }
+
+ /**
+ * Setter for fax number
+ * <p>
+ * @param faxNumber Fax number
+ */
+ public void setFaxNumber (final Long faxNumber) {
+ this.faxNumber = faxNumber;
+ }
+
+ /**
+ * Getter for land-line number's area code
+ * <p>
+ * @return Land-line number's area code
+ */
+ public Integer getLandLineAreaCode () {
+ return this.landLineAreaCode;
+ }
+
+ /**
+ * Setter for land-line number's area code
+ * <p>
+ * @param landLineAreaCode Land-line number's area code
+ */
+ public void setLandLineAreaCode (final Integer landLineAreaCode) {
+ this.landLineAreaCode = landLineAreaCode;
+ }
+
+ /**
+ * Getter for land-line number's country instance
+ * <p>
+ * @return Land-line number's country instance
+ */
+ public Country getLandLineCountry () {
+ return this.landLineCountry;
+ }
+
+ /**
+ * Setter for land-line number's country instance
+ * <p>
+ * @param landLineCountry Land-line number's country instance
+ */
+ public void setLandLineCountry (final Country landLineCountry) {
+ this.landLineCountry = landLineCountry;
+ }
+
+ /**
+ * Getter for land-line number
+ * <p>
+ * @return Land-line number
+ */
+ public Long getLandLineNumber () {
+ return this.landLineNumber;
+ }
+
+ /**
+ * Setter for land-line number
+ * <p>
+ * @param landLineNumber Land-line number
+ */
+ public void setLandLineNumber (final Long landLineNumber) {
+ this.landLineNumber = landLineNumber;
+ }
+
+ /**
+ * Post-initialization of this class
+ */
+ @PostConstruct
+ public void init () {
+ // Try it
+ try {
+ // Get initial context
+ Context context = new InitialContext();
+
+ // Try to lookup
+ this.adminBusinessDataBean = (BusinessDataAdminSessionBeanRemote) context.lookup("java:global/jjobs-ejb/adminBusinessData!org.mxchange.jcontactsbusiness.BusinessDataAdminSessionBeanRemote"); //NOI18N
+ } catch (final NamingException e) {
+ // Throw again
+ throw new FaceletException(e);
+ }
+
+ // Init user's contact list
+ this.businessContacts = this.adminBusinessDataBean.allBusinessContacts();
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (C) 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 <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.beans.businesscontact;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.ejb.Local;
+import org.mxchange.jcontactsbusiness.BusinessBasicData;
+
+/**
+ * An interface for session-scoped financial controller
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@Local
+public interface JobsAdminBusinessContactWebSessionController extends Serializable {
+
+ /**
+ * Returns a list of all business contacts
+ * <p>
+ * @return A list of all business contacts
+ */
+ List<BusinessBasicData> allBusinessContacts ();
+
+}
*/
package org.mxchange.jjobs.beans.businesscontact;
-import java.text.MessageFormat;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
-import javax.faces.application.FacesMessage;
-import javax.faces.context.FacesContext;
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.jcontactsbusiness.BusinessContact;
-import org.mxchange.jcontactsbusiness.BusinessContactSessionBeanRemote;
+import org.mxchange.jcontactsbusiness.BusinessDataSessionBeanRemote;
+import org.mxchange.jcountry.data.Country;
import org.mxchange.jjobs.beans.BaseJobsController;
import org.mxchange.jjobs.beans.user.login.JobsUserLoginWebSessionController;
*/
@Named ("businessContactController")
@SessionScoped
-public abstract class JobsBusinessContactWebSessionBean extends BaseJobsController implements JobsBusinessContactWebSessionController {
+public class JobsBusinessContactWebSessionBean extends BaseJobsController implements JobsBusinessContactWebSessionController {
/**
* Serial number
/**
* Remote contact bean
*/
- private BusinessContactSessionBeanRemote businessContactBean;
+ private BusinessDataSessionBeanRemote businessDataBean;
/**
- * A list of all registered companies (globally)
+ * Comments for this company
*/
- private List<BusinessContact> registeredCompanies;
+ private String companyComments;
+
+ /**
+ * Companies (main) email address (example: info@company.example)
+ */
+ private String companyEmailAddress;
+
+ /**
+ * Company legal status (example: Incorporated, GmbH)
+ */
+ private String companyLegalStatus;
+
+ /**
+ * Company name
+ */
+ private String companyName;
+
+ /**
+ * Area code for fax number
+ */
+ private Integer faxAreaCode;
+
+ /**
+ * Country for fax number
+ */
+ private Country faxCountry;
+
+ /**
+ * Dial number for fax number
+ */
+ private Long faxNumber;
+
+ /**
+ * Area code for land-line number
+ */
+ private Integer landLineAreaCode;
+
+ /**
+ * Country for land-line number
+ */
+ private Country landLineCountry;
+
+ /**
+ * Dial number for land-line number
+ */
+ private Long landLineNumber;
/**
* User instance
super();
}
- @Override
- public List<BusinessContact> allRegisteredCompanies () {
- return Collections.unmodifiableList(this.registeredCompanies);
+ /**
+ * Getter for comments
+ * <p>
+ * @return Comments
+ */
+ public String getCompanyComments () {
+ return this.companyComments;
+ }
+
+ /**
+ * Setter for comments
+ * <p>
+ * @param companyComments Comments
+ */
+ public void setCompanyComments (final String companyComments) {
+ this.companyComments = companyComments;
}
/**
- * Post-initialization of this class
+ * Getter for company's (main) email address
+ * <p>
+ * @return Company's (main) email address
*/
- @PostConstruct
- public void init () {
- // Try it
- try {
- // Get initial context
- Context context = new InitialContext();
+ public String getCompanyEmailAddress () {
+ return this.companyEmailAddress;
+ }
- // Try to lookup
- this.businessContactBean = (BusinessContactSessionBeanRemote) context.lookup("java:global/jfinancials-ejb/businessContact!org.mxchange.jcontactsbusiness.BusinessContactSessionBeanRemote"); //NOI18N
+ /**
+ * Setter for company's (main) email address
+ * <p>
+ * @param companyEmailAddress Company's (main) email address
+ */
+ public void setCompanyEmailAddress (final String companyEmailAddress) {
+ this.companyEmailAddress = companyEmailAddress;
+ }
- // Init list
- this.registeredCompanies = this.businessContactBean.allBusinessContacts();
- } catch (final NamingException e) {
- // Throw again
- throw new FaceletException(e);
- }
+ /**
+ * Getter for company's legal status
+ * <p>
+ * @return Company's legal status
+ */
+ public String getCompanyLegalStatus () {
+ return this.companyLegalStatus;
}
/**
- * Returns given property key or throws an exception if not found.
+ * Setter for company's legal status
* <p>
- * @param parameterKey Property key
+ * @param companyLegalStatus Company's legal status
+ */
+ public void setCompanyLegalStatus (final String companyLegalStatus) {
+ this.companyLegalStatus = companyLegalStatus;
+ }
+
+ /**
+ * Getter for company name
+ * <p>
+ * @return Company name
+ */
+ public String getCompanyName () {
+ return this.companyName;
+ }
+
+ /**
+ * Setter for company name
* <p>
- * @return Property value
+ * @param companyName Company name
+ */
+ public void setCompanyName (final String companyName) {
+ this.companyName = companyName;
+ }
+
+ /**
+ * Getter for fax number's area code
* <p>
- * @throws NullPointerException If given key is not found
- * @throws NumberFormatException If no number is given in context parameter
+ * @return Fax number's area code
*/
- protected int getIntegerContextParameter (final String parameterKey) throws NullPointerException, NumberFormatException {
- // Get context parameter
- Integer contextValue = Integer.parseInt(this.getStringContextParameter(parameterKey));
- // Return it
- return contextValue;
+ public Integer getFaxAreaCode () {
+ return this.faxAreaCode;
}
/**
- * Returns given property key or throws an exception if not found.
+ * Setter for fax number's area code
* <p>
- * @param parameterKey Property key
+ * @param faxAreaCode Fax number's area code
+ */
+ public void setFaxAreaCode (final Integer faxAreaCode) {
+ this.faxAreaCode = faxAreaCode;
+ }
+
+ /**
+ * Getter for fax's country instance
* <p>
- * @return Property value
+ * @return Fax' country instance
+ */
+ public Country getFaxCountry () {
+ return this.faxCountry;
+ }
+
+ /**
+ * Setter for fax's country instance
* <p>
- * @throws NullPointerException If given key is not found
+ * @param faxCountry Fax' country instance
*/
- 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;
+ public void setFaxCountry (final Country faxCountry) {
+ this.faxCountry = faxCountry;
}
/**
- * Checks whether debug mode is enabled for given controller
+ * Getter for fax number
* <p>
- * @param controllerName Name of controller
+ * @return Fax number
+ */
+ public Long getFaxNumber () {
+ return this.faxNumber;
+ }
+
+ /**
+ * Setter for fax number
* <p>
- * @return Whether debug mode is enabled
+ * @param faxNumber Fax number
*/
- 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;
+ public void setFaxNumber (final Long faxNumber) {
+ this.faxNumber = faxNumber;
+ }
+
+ /**
+ * Getter for land-line number's area code
+ * <p>
+ * @return Land-line number's area code
+ */
+ public Integer getLandLineAreaCode () {
+ return this.landLineAreaCode;
}
/**
- * 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.
+ * Setter for land-line number's area code
* <p>
- * @param locale Locale from e.g. FacesContext
+ * @param landLineAreaCode Land-line number's area code
+ */
+ public void setLandLineAreaCode (final Integer landLineAreaCode) {
+ this.landLineAreaCode = landLineAreaCode;
+ }
+
+ /**
+ * Getter for land-line number's country instance
* <p>
- * @return Initialized and loaded resource bundle
+ * @return Land-line number's country instance
*/
- protected abstract ResourceBundle loadResourceBundle (final Locale locale);
+ public Country getLandLineCountry () {
+ return this.landLineCountry;
+ }
/**
- * Shows a faces message for given causing exception. The message from the
- * exception is being inserted into the message.
+ * Setter for land-line number's country instance
* <p>
- * @param clientId Client id to send message to
- * @param cause Causing exception
+ * @param landLineCountry Land-line number's country instance
*/
- protected void showFacesMessage (final String clientId, final Throwable cause) {
- // Get context and add message
- this.showFacesMessage(clientId, cause.getMessage());
+ public void setLandLineCountry (final Country landLineCountry) {
+ this.landLineCountry = landLineCountry;
}
/**
- * Shows a faces message with given message (i18n) key.
+ * Getter for land-line number
* <p>
- * @param clientId Client id to send message to
- * @param i18nKey Message key
+ * @return Land-line number
+ */
+ public Long getLandLineNumber () {
+ return this.landLineNumber;
+ }
+
+ /**
+ * Setter for land-line number
* <p>
- * @throws NullPointerException If clientId or i18nKey is null
- * @throws IllegalArgumentException If clientId or i18nKey is empty
+ * @param landLineNumber Land-line number
*/
- 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
+ public void setLandLineNumber (final Long landLineNumber) {
+ this.landLineNumber = landLineNumber;
+ }
+
+ /**
+ * Post-initialization of this class
+ */
+ @PostConstruct
+ public void init () {
// Try it
try {
- // Get message
- message = bundle.getString(i18nKey);
- } catch (final MissingResourceException ex) {
- // Did not find it, ignored
+ // Get initial context
+ Context context = new InitialContext();
+
+ // Try to lookup
+ this.businessDataBean = (BusinessDataSessionBeanRemote) context.lookup("java:global/jjobs-ejb/businessContact!org.mxchange.jcontactsbusiness.BusinessContactSessionBeanRemote"); //NOI18N
+ } catch (final NamingException e) {
+ // Throw again
+ throw new FaceletException(e);
}
- // Get context and add message
- FacesContext.getCurrentInstance().addMessage(clientId, new FacesMessage(message));
}
}
package org.mxchange.jjobs.beans.businesscontact;
import java.io.Serializable;
-import java.util.List;
import javax.ejb.Local;
-import org.mxchange.jcontactsbusiness.BusinessContact;
/**
* An interface for session-scoped financial controller
@Local
public interface JobsBusinessContactWebSessionController extends Serializable {
- /**
- * Returns a list of all registered companies
- * <p>
- * @return A list of all registered companies
- */
- List<BusinessContact> allRegisteredCompanies ();
-
}
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.mxchange.jcontacts.contact.Contact;
-import org.mxchange.jcontactsbusiness.BusinessContact;
-import org.mxchange.jcontactsbusiness.BusinessContactSessionBeanRemote;
-import org.mxchange.jcontactsbusiness.exceptions.BusinessContactNotFoundException;
+import org.mxchange.jcontactsbusiness.BusinessBasicData;
+import org.mxchange.jcontactsbusiness.BusinessDataSessionBeanRemote;
+import org.mxchange.jcontactsbusiness.exceptions.BusinessDataNotFoundException;
/**
* Converter for contact id <-> valid business contact instance
/**
* Business contact EJB
*/
- private BusinessContactSessionBeanRemote businessContactBean;
+ private static BusinessDataSessionBeanRemote BUSINESS_CONTACT_BEAN;
/**
* Initialization of this converter
return null;
}
- synchronized (this) {
- // Is the EJB instanciated?
- if (null == this.businessContactBean) {
- // Try to get it
- try {
- // Get initial context
- Context initialContext = new InitialContext();
+ // Is the bean there?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsBusinessContactConverter.BUSINESS_CONTACT_BEAN) {
+ // Try to get it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
- // ... and user controller
- this.businessContactBean = (BusinessContactSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/businessContact!org.mxchange.jcontactsbusiness.BusinessContactSessionBeanRemote"); //NOI18N
- } catch (final NamingException ex) {
- // Continue to throw it
- throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
- }
+ // ... and user controller
+ JobsBusinessContactConverter.BUSINESS_CONTACT_BEAN = (BusinessDataSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/businessContact!org.mxchange.jcontactsbusiness.BusinessContactSessionBeanRemote"); //NOI18N
+ } catch (final NamingException ex) {
+ // Continue to throw it
+ throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
}
}
// Init instance
- BusinessContact businessContact = null;
+ BusinessBasicData businessContact = null;
try {
// Try to parse the value as long
Long contactId = Long.valueOf(submittedValue);
// Try to get user instance from it
- businessContact = this.businessContactBean.findBusinessContactById(contactId);
+ businessContact = JobsBusinessContactConverter.BUSINESS_CONTACT_BEAN.findBusinessDataById(contactId);
} catch (final NumberFormatException ex) {
// Throw again
throw new ConverterException(ex);
- } catch (final BusinessContactNotFoundException ex) {
+ } catch (final BusinessDataNotFoundException ex) {
// Debug message
// @TODO Not working with JNDI (no remote interface) this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject(): Exception: {1} - Returning null ...", this.getClass().getSimpleName(), ex)); //NOI18N
}
}
// Return category id
- return String.valueOf(((BusinessContact) value).getBusinessContactId());
+ return String.valueOf(((BusinessBasicData) value).getBusinessDataId());
}
}
/**
* User EJB
*/
- private ContactSessionBeanRemote contactBean;
+ private static ContactSessionBeanRemote CONTACT_BEAN;
/**
* Initialization of this converter
return null;
}
- synchronized (this) {
- // Is the EJB instanciated?
- if (null == this.contactBean) {
- // Try to get it
- try {
- // Get initial context
- Context initialContext = new InitialContext();
+ // Is the bean there?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsContactConverter.CONTACT_BEAN) {
+ // Try to get it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
- // ... and user controller
- this.contactBean = (ContactSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote"); //NOI18N
- } catch (final NamingException ex) {
- // Continue to throw it
- throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
- }
+ // ... and user controller
+ JobsContactConverter.CONTACT_BEAN = (ContactSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote"); //NOI18N
+ } catch (final NamingException ex) {
+ // Continue to throw it
+ throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
}
}
Long contactId = Long.valueOf(submittedValue);
// Try to get user instance from it
- contact = this.contactBean.findContactById(contactId);
+ contact = JobsContactConverter.CONTACT_BEAN.findContactById(contactId);
} catch (final NumberFormatException ex) {
// Throw again
throw new ConverterException(ex);
/**
* Country bean
*/
- private CountrySingletonBeanRemote countryBean = null;
+ private static CountrySingletonBeanRemote COUNTRY_BEAN;
/**
* Initialization of this converter
return null;
}
- synchronized (this) {
- // Is the EJB instanciated?
- if (null == this.countryBean) {
- // Try to get it
- try {
- // Get initial context
- Context initialContext = new InitialContext();
-
- // ... and country bean
- this.countryBean = (CountrySingletonBeanRemote) initialContext.lookup("java:global/jjobs-ejb/country!org.mxchange.jcountry.data.CountrySingletonBeanRemote"); //NOI18N
- } catch (final NamingException ex) {
- // Continue to throw it
- throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
- }
+ // Is the bean there?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsCountryConverter.COUNTRY_BEAN) {
+ // Try to get it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
+
+ // ... and country bean
+ JobsCountryConverter.COUNTRY_BEAN = (CountrySingletonBeanRemote) initialContext.lookup("java:global/jjobs-ejb/country!org.mxchange.jcountry.data.CountrySingletonBeanRemote"); //NOI18N
+ } catch (final NamingException ex) {
+ // Continue to throw it
+ throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
}
}
// Get full list
- List<Country> countryList = this.countryBean.allCountries();
+ List<Country> countryList = JobsCountryConverter.COUNTRY_BEAN.allCountries();
// Init value
Country country = null;
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.fax.DialableFaxNumber;
@FacesConverter (value = "FaxNumberConverter")
public class JobsFaxNumberConverter implements Converter {
- /**
- * Logger instance
- */
- @Log
- private LoggerBeanLocal loggerBeanLocal;
-
/**
* Phone EJB
*/
- private PhoneSessionBeanRemote phoneBean;
+ private static PhoneSessionBeanRemote PHONE_BEAN;
/**
* Initialization of this converter
*/
public JobsFaxNumberConverter () {
- // 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/jjobs-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) {
// Log message
- this.loggerBeanLocal.logTrace(MessageFormat.format("{0}.getAsObject: context={1},component={2},submittedValue={3} - CALLED!", this.getClass().getSimpleName(), context, component, submittedValue)); //NOI18N
+ // @TODO Not possible here: this.loggerBeanLocal.logTrace(MessageFormat.format("{0}.getAsObject: context={1},component={2},submittedValue={3} - CALLED!", this.getClass().getSimpleName(), context, component, submittedValue)); //NOI18N
// Is the value null or empty?
if ((null == submittedValue) || (submittedValue.trim().isEmpty())) {
// Warning message
- this.loggerBeanLocal.logWarning(MessageFormat.format("{0}.getAsObject(): submittedValue is null or empty - EXIT!", this.getClass().getSimpleName())); //NOI18N
+ // @TODO Not possible here: this.loggerBeanLocal.logWarning(MessageFormat.format("{0}.getAsObject(): submittedValue is null or empty - EXIT!", this.getClass().getSimpleName())); //NOI18N
// Return null
return null;
}
+ // Is the bean there?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsFaxNumberConverter.PHONE_BEAN) {
+ // Try to get it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
+
+ // ... and user controller
+ JobsFaxNumberConverter.PHONE_BEAN = (PhoneSessionBeanRemote) initialContext.lookup("java:global/jjobs-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
+ }
+ }
+
// Init instance
DialableFaxNumber faxNumber = null;
Long faxNumberId = Long.valueOf(submittedValue);
// Log message
- this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject: faxNumberId={1}", this.getClass().getSimpleName(), faxNumberId)); //NOI18N
-
+ // @TODO Not possible here: this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject: faxNumberId={1}", this.getClass().getSimpleName(), faxNumberId)); //NOI18N
// Try to get mobile instance from it
- faxNumber = this.phoneBean.findFaxNumberById(faxNumberId);
+ faxNumber = JobsFaxNumberConverter.PHONE_BEAN.findFaxNumberById(faxNumberId);
} catch (final NumberFormatException ex) {
// Throw again
throw new ConverterException(ex);
} catch (final PhoneEntityNotFoundException ex) {
// Debug message
- this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject(): Exception: {1} - Returning null ...", this.getClass().getSimpleName(), ex)); //NOI18N
+ // @TODO Not possible here: this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject(): Exception: {1} - Returning null ...", this.getClass().getSimpleName(), ex)); //NOI18N
}
// Log message
- this.loggerBeanLocal.logTrace(MessageFormat.format("{0}.getAsObject: faxNumber={1} - EXIT!", this.getClass().getSimpleName(), faxNumber)); //NOI18N
-
+ // @TODO Not possible here: this.loggerBeanLocal.logTrace(MessageFormat.format("{0}.getAsObject: faxNumber={1} - EXIT!", this.getClass().getSimpleName(), faxNumber)); //NOI18N
// Return it
return faxNumber;
}
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.landline.DialableLandLineNumber;
@FacesConverter (value = "LandLineNumberConverter")
public class JobsLandLineNumberConverter implements Converter {
- /**
- * Logger instance
- */
- @Log
- private LoggerBeanLocal loggerBeanLocal;
-
/**
* Phone EJB
*/
- private PhoneSessionBeanRemote phoneBean;
+ private static PhoneSessionBeanRemote PHONE_BEAN;
/**
* Initialization of this converter
*/
public JobsLandLineNumberConverter () {
- // 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/jjobs-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
// Is the value null or empty?
if ((null == submittedValue) || (submittedValue.trim().isEmpty())) {
// Warning message
- this.loggerBeanLocal.logWarning(MessageFormat.format("{0}.getAsObject(): submittedValue is null or empty - EXIT!", this.getClass().getSimpleName())); //NOI18N
+ // @TODO Not possible here: this.loggerBeanLocal.logWarning(MessageFormat.format("{0}.getAsObject(): submittedValue is null or empty - EXIT!", this.getClass().getSimpleName())); //NOI18N
// Return null
return null;
}
+ // Is the bean there?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsLandLineNumberConverter.PHONE_BEAN) {
+ // Try to get it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
+
+ // ... and user controller
+ JobsLandLineNumberConverter.PHONE_BEAN = (PhoneSessionBeanRemote) initialContext.lookup("java:global/jjobs-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
+ }
+ }
+
// Init instance
DialableLandLineNumber landLineNumber = null;
Long landLineNumberId = Long.valueOf(submittedValue);
// Try to get mobile instance from it
- landLineNumber = this.phoneBean.findLandLineNumberById(landLineNumberId);
+ landLineNumber = JobsLandLineNumberConverter.PHONE_BEAN.findLandLineNumberById(landLineNumberId);
} catch (final NumberFormatException ex) {
// Throw again
throw new ConverterException(ex);
} catch (final PhoneEntityNotFoundException ex) {
// Debug message
- this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject(): Exception: {1} - Returning null ...", this.getClass().getSimpleName(), ex)); //NOI18N
+ // @TODO Not possible here: this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject(): Exception: {1} - Returning null ...", this.getClass().getSimpleName(), ex)); //NOI18N
}
// Return it
/**
* Phone EJB
*/
- private PhoneSessionBeanRemote phoneBean;
+ private static PhoneSessionBeanRemote PHONE_BEAN;
/**
* Initialization of this converter
return null;
}
- synchronized (this) {
- // Is the EJB instanciated?
- if (null == this.phoneBean) {
- // Try to get it
- try {
- // Get initial context
- Context initialContext = new InitialContext();
+ // Is the bean there?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsMobileNumberConverter.PHONE_BEAN) {
+ // Try to get it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
- // ... and user controller
- this.phoneBean = (PhoneSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote"); //NOI18N
- } catch (final NamingException ex) {
- // Continue to throw it
- throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
- }
+ // ... and user controller
+ JobsMobileNumberConverter.PHONE_BEAN = (PhoneSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote"); //NOI18N
+ } catch (final NamingException ex) {
+ // Continue to throw it
+ throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
}
}
Long mobileNumberId = Long.valueOf(submittedValue);
// Try to get mobile instance from it
- mobileNumber = this.phoneBean.findMobileNumberById(mobileNumberId);
+ mobileNumber = JobsMobileNumberConverter.PHONE_BEAN.findMobileNumberById(mobileNumberId);
} catch (final NumberFormatException ex) {
// Throw again
throw new ConverterException(ex);
/**
* Mobile provider bean
*/
- private MobileProviderSingletonBeanRemote mobileRemoteBean;
+ private static MobileProviderSingletonBeanRemote MOBILE_PROVIDER_BEAN;
/**
* Initialization of this converter
return null;
}
- synchronized (this) {
- // Is the EJB instanciated?
- if (null == this.mobileRemoteBean) {
- // Try to get it
- try {
- // Get initial context
- Context initialContext = new InitialContext();
-
- /// and mobile provider controller
- this.mobileRemoteBean = (MobileProviderSingletonBeanRemote) initialContext.lookup("java:global/jjobs-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote"); //NOI18N
- } catch (final NamingException ex) {
- // Continue to throw it
- throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
- }
+ // Is the bean there?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsMobileProviderConverter.MOBILE_PROVIDER_BEAN) {
+ // Try to get it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
+
+ /// and mobile provider controller
+ JobsMobileProviderConverter.MOBILE_PROVIDER_BEAN = (MobileProviderSingletonBeanRemote) initialContext.lookup("java:global/jjobs-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote"); //NOI18N
+ } catch (final NamingException ex) {
+ // Continue to throw it
+ throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
}
}
// Get full list
- List<MobileProvider> providerList = this.mobileRemoteBean.allMobileProvider();
+ List<MobileProvider> providerList = JobsMobileProviderConverter.MOBILE_PROVIDER_BEAN.allMobileProvider();
// Init value
MobileProvider provider = null;
/**
* User EJB
*/
- private UserSessionBeanRemote userBean;
+ private static UserSessionBeanRemote USER_BEAN;
/**
* Constructor of this converter
return null;
}
- synchronized (this) {
- // Is the EJB instanciated?
- if (null == this.userBean) {
- // Try to get it
- try {
- // Get initial context
- Context initialContext = new InitialContext();
+ // Is the bean there?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsUserConverter.USER_BEAN) {
+ // Try to get it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
- // ... and user controller
- this.userBean = (UserSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote"); //NOI18N
- } catch (final NamingException ex) {
- // Continue to throw it
- throw new RuntimeException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
- }
+ // ... and user controller
+ JobsUserConverter.USER_BEAN = (UserSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote"); //NOI18N
+ } catch (final NamingException ex) {
+ // Continue to throw it
+ throw new RuntimeException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
}
}
Long userId = Long.valueOf(submittedValue);
// Try to get user instance from it
- user = this.userBean.findUserById(userId);
+ user = JobsUserConverter.USER_BEAN.findUserById(userId);
} catch (final NumberFormatException ex) {
// Throw again
throw new ConverterException(ex);
package org.mxchange.jjobs.validator.emailaddress;
import java.text.MessageFormat;
-import java.util.List;
import java.util.regex.Pattern;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
public class JobsEmailAddressValidator extends BaseStringValidator implements Validator {
/**
- * Serial number
+ * Contact session-scoped bean
*/
- private static final long serialVersionUID = 187_536_745_607_192L;
+ private static ContactSessionBeanRemote CONTACT_BEAN;
/**
- * Contact session-scoped bean
+ * Pattern matcher
*/
- private ContactSessionBeanRemote contactBean;
+ private static final Pattern EMAIL_PATTERN = Pattern.compile(JobsEmailAddressValidator.EMAIL_REGEX);
/**
- * Cached list of all email addresses
+ * Email pattern
*/
- private List<String> emailAddresses;
+ private static final String EMAIL_REGEX = "([^.@]+)(\\\\.[^.@]+)*@([^.@]+\\\\.)+([^.@]+)"; //NOI18N
+
+ /**
+ * Serial number
+ */
+ private static final long serialVersionUID = 187_536_745_607_192L;
/**
* Default constructor
// The required field
String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
+ // Check if allowNull is given, otherwise assume "not allowed"
+ Boolean allowEmpty = (component.getAttributes().containsKey("allowEmpty") ? Boolean.parseBoolean((String) component.getAttributes().get("allowEmpty")) : Boolean.FALSE); //NOI18N
+
// Pre-validation (example: not null, not a string, empty string ...)
- super.preValidate(context, component, value, requiredFields, false);
+ super.preValidate(context, component, value, requiredFields, allowEmpty);
// Get string from object ... ;-)
// @TODO Add IDN support (GNU lib?) Search for emailAddressRepeat
String emailAddress = String.valueOf(value);
+ // Is the email address empty and allowed?
+ if (emailAddress.isEmpty() && allowEmpty) {
+ // Then accept this here
+ return;
+ }
+
// Checks if the email address matches a regex ("low-level" check)
// @TODO Should also be done by <f:validatorRegex />)
- boolean matches = Pattern.matches("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$", emailAddress); //NOI18N
+ boolean matches = EMAIL_PATTERN.matcher(emailAddress).matches(); //NOI18N
// Is the email address valid?
if (!matches) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message));
}
- synchronized (this) {
- // Is the EJB instanciated?
- if (null == this.contactBean) {
- // Try it
- try {
- // Get initial context
- Context initialContext = new InitialContext();
-
- // Try to lookup
- this.contactBean = (ContactSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote"); //NOI18N
-
- // Get whole list of email addresses
- this.emailAddresses = this.contactBean.getEmailAddressList();
- } catch (final NamingException ex) {
- // Continue to throw it
- throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
- }
+ // Is the bean not yet set?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsEmailAddressValidator.CONTACT_BEAN) {
+ // Try it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
+
+ // Try to lookup
+ JobsEmailAddressValidator.CONTACT_BEAN = (ContactSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote"); //NOI18N
+ } catch (final NamingException ex) {
+ // Continue to throw it
+ throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
}
}
// Get client id (aka form id)
String clientId = component.getClientId();
+ // Is it registered?
+ Boolean isRegistered = JobsEmailAddressValidator.CONTACT_BEAN.isEmailAddressRegistered(emailAddress);
+
// Is the email address already registered?
- if ((!clientId.endsWith("resendEmailAddress")) && (this.emailAddresses.contains(emailAddress))) { //NOI18N
+ if ((!clientId.endsWith("resendEmailAddress")) && (isRegistered)) { //NOI18N
// Generate message
String message = MessageFormat.format("Email address {0} is already registered.", emailAddress); //NOI18N
// No, then abort here
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));
- } else if ((clientId.endsWith("resendEmailAddress")) && (!this.emailAddresses.contains(emailAddress))) { //NOI18N
+ } else if ((clientId.endsWith("resendEmailAddress")) && (!isRegistered)) { //NOI18N
// Generate message
String message = MessageFormat.format("Email address {0} is not registered.", emailAddress); //NOI18N
/**
* Remote bean
*/
- private UserSessionBeanRemote userBean;
+ private static UserSessionBeanRemote USER_BEAN;
/**
* Initialization of this converter
// Cast value
Long userId = (Long) value;
- synchronized (this) {
- // Is the EJB instanciated?
- if (null == this.userBean) {
- // Try to get it
- try {
- // Get initial context
- Context initialContext = new InitialContext();
+ // Is the bean not yet set?
+ // @TODO Requires this synchronization or is it (sync) confusing the container?
+ if (null == JobsUserIdValidator.USER_BEAN) {
+ // Try to get it
+ try {
+ // Get initial context
+ Context initialContext = new InitialContext();
- // ... and user controller
- this.userBean = (UserSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote"); //NOI18N
- } catch (final NamingException ex) {
- // Continue to throw it
- throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
- }
+ // ... and user controller
+ JobsUserIdValidator.USER_BEAN = (UserSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote"); //NOI18N
+ } catch (final NamingException ex) {
+ // Continue to throw it
+ throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
}
}
// Define variable
- Boolean ifUserExists = this.userBean.ifUserIdExists(userId);
+ Boolean ifUserExists = JobsUserIdValidator.USER_BEAN.ifUserIdExists(userId);
// Is the user id valid?
if (!ifUserExists) {
#@TODO Please fix German umlauts!
GUEST_REGISTRATION_PASSWORD_REPEAT_NOT_ENTERED=Bitte wiederholen Sie das eingegebene Passwort. Dies wird zur Bestaetigung benoetigt.
PAGE_TITLE_ADMIN_AREA=Administration
+#@TODO Please fix German umlauts!
+ADMIN_MENU_CONTACT_BUSINESS_TITLE=Geschaeftliche Kontakte
+#@TODO Please fix German umlauts!
+LINK_ADMIN_LIST_CONTACT_BUSINESS=Geschaeftskontakte auflisten
+#@TODO Please fix German umlauts!
+LINK_ADMIN_LIST_CONTACT_BUSINESS_TITLE=Listet geschaeftliche Kontakte auf
+#@TODO Please fix German umlauts!
+LINK_ADMIN_EXPORT_CONTACT_BUSINESS=Geschaeftliche Kontakte exportieren
+#@TODO Please fix German umlauts!
+LINK_ADMIN_EXPORT_CONTACT_BUSINESS_TITLE=Exportiert geschaeftliche Kontakte
+#@TODO Please fix German umlauts!
+PAGE_TITLE_ADMIN_LIST_CONTACT_BUSINESS=Geschaeftliche Kontakte auflisten
+#@TODO Please fix German umlauts!
+CONTENT_TITLE_ADMIN_LIST_CONTACT_BUSINESS=Auflisten von geschaeftlichen Kontakt
+#@TODO Please fix German umlauts!
+ADMIN_CONTACT_BUSINESS_LIST_EMPTY=Es befinden sich keine geschaeftlichen Kontakte in der Datenbank.
+#@TODO Please fix German umlauts!
+TABLE_SUMMARY_ADMIN_LIST_CONTACT_BUSINESS=Tabelle listet geschaeftliche Kontakte auf.
+ADMIN_CONTACT_BUSINESS_ID=Id-Nummer:
+#@TODO Please fix German umlauts!
+ADMIN_LINK_SHOW_BUSINESS_CONTACT_DATA_TITLE=Details des geschaeftlichen Kontaktes anzeigen.
+ADMIN_CONTACT_BUSINESS_OWNER_ID=Zugew. Benutzer:
+ADMIN_LINK_SHOW_CONTACT_BUSINESS_OWNER_USER_TITLE=Benutzerprofil des zugewiesenen Benutzers anzeigen.
+ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_OWNER_USER=Zuweisen
+#@TODO Please fix German umlauts!
+ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_OWNER_USER_TITLE=Geschaeftlichen Kontakt einen Benutzeraccount zuweisen.
+ADMIN_CONTACT_BUSINESS_COMPANY_NAME=Firmenname:
+ADMIN_CONTACT_BUSINESS_CONTACT_PERSON=Ansprechpartner:
+ADMIN_LINK_SHOW_CONTACT_BUSINESS_CONTACT_PERSON_TITLE=Zeigt einen Mitarbeiter an, der als Ansprechpartner eingetragen ist.
+ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_CONTACT_PERSON=Zuweisen
+#@TODO Please fix German umlauts!
+ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_CONTACT_PERSON_TITLE=Weisst einen Mitarbeiter als Ansprechpartner des geschaftlichen Kontaktes zu.
+ADMIN_SHOW_FULL_CONTACT_DATA_TITLE=Zeigt das komplette Kontaktprofil an.
+ADMIN_BUSINESS_DATA_COMPANY_COMMENTS=Anmerkungen:
+ADMIN_BUSINESS_DATA_PHONE_NUMBER=Haupttelefonnummer:
+ADMIN_BUSINESS_DATA_FAX_NUMBER=Hauptfaxnummer:
+#@TODO Please fix German umlauts!
+ADMIN_ADD_CONTACT_BUSINESS_TITLE=Neuen geschaeftlichen Kontakt hinzufuegen
+ADMIN_ADD_CONTACT_BUSINESS_MINIMUM_DATA=Bitte mindestens Firmennamen mit Rechtsstand ein.
+#@TODO Please fix German umlauts!
+ENTERED_EMAIL_ADDRESS_IS_INVALID=Die eingegebene Email-Addresse entspricht nicht dem gueltigen Format.
GUEST_REGISTRATION_PASSWORD_NOT_ENTERED=Please enter a password. This must match with security rules.
GUEST_REGISTRATION_PASSWORD_REPEAT_NOT_ENTERED=Please repeat the entered password. This done to confirm the password.
PAGE_TITLE_ADMIN_AREA=Administration
+ADMIN_MENU_CONTACT_BUSINESS_TITLE=Business Contacts
+LINK_ADMIN_LIST_CONTACT_BUSINESS=List business contacts
+LINK_ADMIN_LIST_CONTACT_BUSINESS_TITLE=Lists business contacts
+LINK_ADMIN_EXPORT_CONTACT_BUSINESS=Export business contacts
+LINK_ADMIN_EXPORT_CONTACT_BUSINESS_TITLE=Exports business contacts
+PAGE_TITLE_ADMIN_LIST_CONTACT_BUSINESS=List business contacts
+CONTENT_TITLE_ADMIN_LIST_CONTACT_BUSINESS=Lists business contacts
+ADMIN_CONTACT_BUSINESS_LIST_EMPTY=There are currently no business contacts in database.
+TABLE_SUMMARY_ADMIN_LIST_CONTACT_BUSINESS=This table lists business contacts.
+ADMIN_CONTACT_BUSINESS_ID=Id Number:
+ADMIN_LINK_SHOW_BUSINESS_CONTACT_DATA_TITLE=Show details of this business contact.
+ADMIN_CONTACT_BUSINESS_OWNER_ID=Assigned user:
+ADMIN_LINK_SHOW_CONTACT_BUSINESS_OWNER_USER_TITLE=Shows assigned user profile.
+ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_OWNER_USER=Assign
+ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_OWNER_USER_TITLE=Assigns this business contact to a user account.
+ADMIN_CONTACT_BUSINESS_COMPANY_NAME=Company name:
+ADMIN_CONTACT_BUSINESS_CONTACT_PERSON=Contact person:
+ADMIN_LINK_SHOW_CONTACT_BUSINESS_CONTACT_PERSON_TITLE=Shows a single employee entry who has been assigned as contact person.
+ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_CONTACT_PERSON=Assign
+ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_CONTACT_PERSON_TITLE=Assigns an employee as a contact person for given business contact.
+ADMIN_SHOW_FULL_CONTACT_DATA_TITLE=Shows complete contact profile.
+ADMIN_BUSINESS_DATA_COMPANY_COMMENTS=Comments:
+ADMIN_BUSINESS_DATA_PHONE_NUMBER=Main phone number:
+ADMIN_BUSINESS_DATA_FAX_NUMBER=Main fax number:
+ADMIN_ADD_CONTACT_BUSINESS_TITLE=Add new business contact
+ADMIN_ADD_CONTACT_BUSINESS_MINIMUM_DATA=Please enter at least company name and legal status.
+ENTERED_EMAIL_ADDRESS_IS_INVALID=Your entered email address is not valid.
<from-outcome>admin_export_contact</from-outcome>
<to-view-id>/admin/contact/admin_contact_export.xhtml</to-view-id>
</navigation-case>
+ <navigation-case>
+ <from-outcome>admin_list_contact_business</from-outcome>
+ <to-view-id>/admin/contact_business/admin_contact_business_list.xhtml</to-view-id>
+ </navigation-case>
+ <navigation-case>
+ <from-outcome>admin_export_contact_business</from-outcome>
+ <to-view-id>/admin/contact_business/admin_contact_business_export.xhtml</to-view-id>
+ </navigation-case>
<navigation-case>
<from-outcome>admin_list_user</from-outcome>
<to-view-id>/admin/user/admin_user_list.xhtml</to-view-id>
<li><h:link title="#{msg.LINK_ADMIN_EXPORT_CONTACT_TITLE}" outcome="admin_export_contact" value="#{msg.LINK_ADMIN_EXPORT_CONTACT}" /></li>
</ul>
+ <ui:fragment rendered="#{featureController.isFeatureEnabled('business_contacts')}">
+ <div class="menu_header">
+ <h:outputText value="#{msg.ADMIN_MENU_CONTACT_BUSINESS_TITLE}" />
+ </div>
+
+ <ul>
+ <li><h:link title="#{msg.LINK_ADMIN_LIST_CONTACT_BUSINESS_TITLE}" outcome="admin_list_contact_business" value="#{msg.LINK_ADMIN_LIST_CONTACT_BUSINESS}" /></li>
+ <li><h:link title="#{msg.LINK_ADMIN_EXPORT_CONTACT_BUSINESS_TITLE}" outcome="admin_export_contact_business" value="#{msg.LINK_ADMIN_EXPORT_CONTACT_BUSINESS}" /></li>
+ </ul>
+ </ui:fragment>
+
<div class="menu_header">
<h:outputText value="#{msg.ADMIN_MENU_PHONE_NUMBERS_TITLE}" />
</div>
<h:panelGroup styleClass="table_row" layout="block">
<div class="table_left_medium">
- <h:outputLabel value="#{msg.ADMIN_PERSONAL_DATA_PHONE_NUMBER}" />
+ <h:outputLabel for="landLineCountryCode" value="#{msg.ADMIN_PERSONAL_DATA_PHONE_NUMBER}" />
</div>
<div class="table_right_medium">
- <h:selectOneMenu styleClass="select right_space" id="countryPhoneCode" value="#{adminContactController.landLineCountry}">
+ <h:selectOneMenu styleClass="select right_space" id="landLineCountryCode" value="#{adminContactController.landLineCountry}">
<f:converter converterId="CountryConverter" />
<f:selectItem itemValue="" itemLabel="#{msg.NONE_SELECTED}" />
- <f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryPhoneCode}" />
+ <f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryCode}" />
</h:selectOneMenu>
<h:inputText styleClass="input right_space" id="landLineAreaCode" size="5" maxlength="10" value="#{adminContactController.landLineAreaCode}">
<h:panelGroup styleClass="table_row" layout="block">
<div class="table_left_medium">
- <h:outputLabel for="faxNumber" value="#{msg.ADMIN_PERSONAL_DATA_FAX_NUMBER}" />
+ <h:outputLabel for="faxCountryCode" value="#{msg.ADMIN_PERSONAL_DATA_FAX_NUMBER}" />
</div>
<div class="table_right_medium">
<h:selectOneMenu styleClass="select right_space" id="faxCountryCode" value="#{adminContactController.faxCountry}">
<f:converter converterId="CountryConverter" />
<f:selectItem itemValue="" itemLabel="#{msg.NONE_SELECTED}" />
- <f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryPhoneCode}" />
+ <f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryCode}" />
</h:selectOneMenu>
<h:inputText styleClass="input right_space" id="faxAreaCode" size="5" maxlength="10" value="#{adminContactController.faxAreaCode}">
</div>
<div class="table_right_medium">
- <h:inputText styleClass="input" id="emailAddress" size="10" maxlength="255" value="#{adminContactController.emailAddress}" />
+ <h:inputText styleClass="input" id="emailAddress" size="10" maxlength="255" value="#{adminContactController.emailAddress}" validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}">
+ <f:validator validatorId="EmailAddressValidator" />
+ </h:inputText>
</div>
<div class="clear"></div>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:f="http://xmlns.jcp.org/jsf/core"
+ xmlns:h="http://xmlns.jcp.org/jsf/html"
+ xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+ <div class="para">
+ <fieldset class="fieldset" id="business_basic_data">
+ <legend title="#{msg.ADMIN_CONTACT_BUSINESS_DATA_LEGEND_TITLE}">
+ <h:outputText value="#{msg.ADMIN_CONTACT_BUSINESS_DATA_LEGEND}" />
+ </legend>
+
+ <h:panelGroup styleClass="table_row" layout="block">
+ <div class="table_left_medium">
+ <h:outputLabel for="companyName" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_NAME}" />
+ </div>
+
+ <div class="table_right_medium">
+ <h:inputText styleClass="input" id="companyName" size="30" maxlength="200" required="true" requiredMessage="#{msg.ADMIN_BUSINESS_DATA_COMPANY_NAME_REQUIRED}" value="#{adminBusinessDataController.companyName}" />
+ </div>
+
+ <div class="clear"></div>
+ </h:panelGroup>
+
+ <h:panelGroup styleClass="error_container" layout="block">
+ <h:message for="companyName" errorClass="errors" fatalClass="errors" warnClass="errors" />
+ </h:panelGroup>
+
+ <h:panelGroup styleClass="table_row" layout="block">
+ <div class="table_left_medium">
+ <h:outputLabel for="companyLegalStatus" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_LEGAL_STATUS}" />
+ </div>
+
+ <div class="table_right_medium">
+ <h:inputText styleClass="input" id="companyLegalStatus" size="5" maxlength="10" required="true" requiredMessage="#{msg.ADMIN_BUSINESS_DATA_COMPANY_LEGAL_STATUS_REQUIRED}" value="#{adminBusinessDataController.companyLegalStatus}" />
+ </div>
+
+ <div class="clear"></div>
+ </h:panelGroup>
+
+ <h:panelGroup styleClass="error_container" layout="block">
+ <h:message for="companyLegalStatus" errorClass="errors" fatalClass="errors" warnClass="errors" />
+ </h:panelGroup>
+
+ <h:panelGroup styleClass="table_row" layout="block">
+ <div class="table_left_medium">
+ <h:outputLabel for="companyEmailAddress" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_EMAIL_ADDRESS}" />
+ </div>
+
+ <div class="table_right_medium">
+ <h:inputText styleClass="input" id="companyEmailAddress" size="20" maxlength="255" value="#{adminBusinessDataController.companyEmailAddress}" validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}">
+ <f:validator validatorId="EmailAddressValidator" />
+ <f:attribute name="allowEmpty" value="true" />
+ </h:inputText>
+ </div>
+
+ <div class="clear"></div>
+ </h:panelGroup>
+
+ <h:panelGroup styleClass="error_container" layout="block">
+ <h:message for="companyEmailAddress" errorClass="errors" warnClass="warnings" fatalClass="errors" />
+ </h:panelGroup>
+
+ <h:panelGroup styleClass="table_row" layout="block">
+ <div class="table_left_medium">
+ <h:outputLabel for="companyComments" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_COMMENTS}" />
+ </div>
+
+ <div class="table_right_medium">
+ <h:inputTextarea styleClass="input" id="companyComments" rows="7" cols="25" value="#{adminBusinessDataController.companyComments}" />
+ </div>
+
+ <div class="clear"></div>
+ </h:panelGroup>
+
+ <h:panelGroup styleClass="table_row" layout="block">
+ <div class="table_left_medium">
+ <h:outputLabel value="#{msg.ADMIN_BUSINESS_DATA_PHONE_NUMBER}" />
+ </div>
+
+ <div class="table_right_medium">
+ <h:selectOneMenu styleClass="select right_space" id="landLineCountryCode" value="#{adminBusinessDataController.landLineCountry}">
+ <f:converter converterId="CountryConverter" />
+ <f:selectItem itemValue="" itemLabel="#{msg.NONE_SELECTED}" />
+ <f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryCode}" />
+ </h:selectOneMenu>
+
+ <h:inputText styleClass="input right_space" id="landLineAreaCode" size="5" maxlength="10" value="#{adminBusinessDataController.landLineAreaCode}">
+ <f:validator for="landLineAreaCode" validatorId="PhoneNumberValidator" />
+ </h:inputText>
+
+ <h:inputText styleClass="input" id="landLineNumber" size="10" maxlength="20" value="#{adminBusinessDataController.landLineNumber}">
+ <f:validator for="landLineNumber" validatorId="PhoneNumberValidator" />
+ </h:inputText>
+ </div>
+
+ <div class="clear"></div>
+ </h:panelGroup>
+
+ <h:panelGroup styleClass="table_row" layout="block">
+ <div class="table_left_medium">
+ <h:outputLabel for="faxCountryCode" value="#{msg.ADMIN_BUSINESS_DATA_FAX_NUMBER}" />
+ </div>
+
+ <div class="table_right_medium">
+ <h:selectOneMenu styleClass="select right_space" id="faxCountryCode" value="#{adminBusinessDataController.faxCountry}">
+ <f:converter converterId="CountryConverter" />
+ <f:selectItem itemValue="" itemLabel="#{msg.NONE_SELECTED}" />
+ <f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryCode}" />
+ </h:selectOneMenu>
+
+ <h:inputText styleClass="input right_space" id="faxAreaCode" size="5" maxlength="10" value="#{adminBusinessDataController.faxAreaCode}">
+ <f:validator for="faxAreaCode" validatorId="PhoneNumberValidator" />
+ </h:inputText>
+
+ <h:inputText styleClass="input" id="faxNumber" size="10" maxlength="20" value="#{adminBusinessDataController.faxNumber}">
+ <f:validator for="faxNumber" validatorId="PhoneNumberValidator" />
+ </h:inputText>
+ </div>
+
+ <div class="clear"></div>
+ </h:panelGroup>
+ </fieldset>
+ </div>
+</ui:composition>
<ul class="mini_nav">
<ui:fragment rendered="#{empty isShowPage or not isShowPage}">
<li class="mini_link">
- <h:link outcome="admin_show_fax">
- <h:outputText value="#{msg.ADMIN_LINK_SHOW_SHORT}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}" />
+ <h:link outcome="admin_show_fax" value="#{msg.ADMIN_LINK_SHOW_SHORT}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}">
<f:param name="phoneId" value="#{beanHelper.faxNumber.phoneId}" />
</h:link>
</li>
</ui:fragment>
<li class="mini_link">
- <h:link outcome="admin_edit_fax">
- <h:outputText value="#{msg.ADMIN_LINK_EDIT_SHORT}" title="#{msg.ADMIN_LINK_EDIT_SHORT_TITLE}" />
+ <h:link outcome="admin_edit_fax" value="#{msg.ADMIN_LINK_EDIT_SHORT}" title="#{msg.ADMIN_LINK_EDIT_SHORT_TITLE}">
<f:param name="phoneId" value="#{beanHelper.faxNumber.phoneId}" />
</h:link>
</li>
<ul class="mini_nav">
<ui:fragment rendered="#{empty isShowPage or not isShowPage}">
<li class="mini_link">
- <h:link outcome="admin_show_landline">
- <h:outputText value="#{msg.ADMIN_LINK_SHOW_SHORT}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}" />
+ <h:link outcome="admin_show_landline" value="#{msg.ADMIN_LINK_SHOW_SHORT}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}">
<f:param name="phoneId" value="#{beanHelper.landLineNumber.phoneId}" />
</h:link>
</li>
</ui:fragment>
<li class="mini_link">
- <h:link outcome="admin_edit_landline">
- <h:outputText value="#{msg.ADMIN_LINK_EDIT_SHORT}" title="#{msg.ADMIN_LINK_EDIT_SHORT_TITLE}" />
+ <h:link outcome="admin_edit_landline" value="#{msg.ADMIN_LINK_EDIT_SHORT}" title="#{msg.ADMIN_LINK_EDIT_SHORT_TITLE}">
<f:param name="phoneId" value="#{beanHelper.landLineNumber.phoneId}" />
</h:link>
</li>
<h:column>
<h:outputLabel for="mobileProvider" styleClass="table_data_label" value="#{msg.ADMIN_SHOW_MOBILE_PROVIDER_NAME}" />
- <h:link outcome="admin_show_mobile_provider">
+ <h:link id="mobileProvider" outcome="admin_show_mobile_provider">
+ <h:outputText styleClass="table_data_field" value="#{beanHelper.mobileNumber.mobileProvider.providerName}" />
<f:param name="providerId" value="#{beanHelper.mobileNumber.mobileProvider.providerId}" />
- <h:outputText id="mobileProvider" styleClass="table_data_field" value="#{beanHelper.mobileNumber.mobileProvider.providerName}" />
</h:link>
</h:column>
<ul class="mini_nav">
<ui:fragment rendered="#{empty isShowPage or not isShowPage}">
<li class="mini_link">
- <h:link outcome="admin_show_mobile">
- <h:outputText value="#{msg.ADMIN_LINK_SHOW_SHORT}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}" />
+ <h:link outcome="admin_show_mobile" value="#{msg.ADMIN_LINK_SHOW_SHORT}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}">
<f:param name="phoneId" value="#{beanHelper.mobileNumber.phoneId}" />
</h:link>
</li>
</ui:fragment>
<li class="mini_link">
- <h:link outcome="admin_edit_mobile">
- <h:outputText value="#{msg.ADMIN_LINK_EDIT_SHORT}" title="#{msg.ADMIN_LINK_EDIT_SHORT_TITLE}" />
+ <h:link outcome="admin_edit_mobile" value="#{msg.ADMIN_LINK_EDIT_SHORT}" title="#{msg.ADMIN_LINK_EDIT_SHORT_TITLE}">
<f:param name="phoneId" value="#{beanHelper.mobileNumber.phoneId}" />
</h:link>
</li>
</div>
<div class="table_right_medium">
- <h:inputText styleClass="input" id="emailAddress" size="20" maxlength="255" value="#{contactController.emailAddress}" required="true" requiredMessage="#{msg.EMAIL_ADDRESS_NOT_ENTERED}">
+ <h:inputText styleClass="input" id="emailAddress" size="20" maxlength="255" value="#{contactController.emailAddress}" required="true" requiredMessage="#{msg.EMAIL_ADDRESS_NOT_ENTERED}" validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}">
<f:validator validatorId="EmailAddressValidator" />
</h:inputText>
</div>
<div class="clear"></div>
+ </h:panelGroup>
- <h:panelGroup styleClass="error_container" layout="block">
- <h:message for="emailAddress" errorClass="errors" warnClass="warnings" fatalClass="errors" />
- </h:panelGroup>
+ <h:panelGroup styleClass="error_container" layout="block">
+ <h:message for="emailAddress" errorClass="errors" warnClass="warnings" fatalClass="errors" />
</h:panelGroup>
<h:panelGroup styleClass="table_row" layout="block">
</div>
<div class="clear"></div>
+ </h:panelGroup>
- <h:panelGroup styleClass="error_container" layout="block">
- <h:message for="emailAddressRepeat" errorClass="errors" warnClass="warnings" fatalClass="errors" />
- </h:panelGroup>
+ <h:panelGroup styleClass="error_container" layout="block">
+ <h:message for="emailAddressRepeat" errorClass="errors" warnClass="warnings" fatalClass="errors" />
</h:panelGroup>
</ui:composition>
</div>
<div class="table_right">
- <h:inputText class="input" id="emailAddress" size="20" maxlength="255" value="#{userEmailChangeController.emailAddress}" required="true" requiredMessage="#{msg.EMAIL_ADDRESS_NOT_ENTERED}">
+ <h:inputText class="input" id="emailAddress" size="20" maxlength="255" value="#{userEmailChangeController.emailAddress}" required="true" requiredMessage="#{msg.EMAIL_ADDRESS_NOT_ENTERED}" validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}">
<f:validator validatorId="EmailAddressValidator" />
</h:inputText>
</div>
<div class="clear"></div>
+ </h:panelGroup>
- <h:panelGroup styleClass="error_container" layout="block">
- <h:message for="emailAddress" errorClass="errors" warnClass="warnings" fatalClass="errors" />
- </h:panelGroup>
+ <h:panelGroup styleClass="error_container" layout="block">
+ <h:message for="emailAddress" errorClass="errors" warnClass="warnings" fatalClass="errors" />
</h:panelGroup>
<h:panelGroup styleClass="table_row" layout="block">
</div>
<div class="clear"></div>
+ </h:panelGroup>
- <h:panelGroup styleClass="error_container" layout="block">
- <h:message for="emailAddressRepeat" errorClass="errors" warnClass="warnings" fatalClass="errors" />
- </h:panelGroup>
+ <h:panelGroup styleClass="error_container" layout="block">
+ <h:message for="emailAddressRepeat" errorClass="errors" warnClass="warnings" fatalClass="errors" />
</h:panelGroup>
</ui:composition>
<h:outputText styleClass="notice" value="#{msg.USER_PROFILE_NOT_PUBLICLY_VISIBLE}" rendered="#{not empty user and not profileController.isProfileLinkVisibleByUser(user)}" />
- <h:link id="userProfileLink" outcome="user_profile" title="#{msg.LINK_USER_PROFILE_TITLE}" rendered="#{not empty user and profileController.isProfileLinkVisibleByUser(user)}">
- <h:outputText id="userName" value="#{user.userName}" />
+ <h:link outcome="user_profile" title="#{msg.LINK_USER_PROFILE_TITLE}" rendered="#{not empty user and profileController.isProfileLinkVisibleByUser(user)}">
+ <h:outputText value="#{user.userName}" />
<f:param name="userId" value="#{user.userId}" />
</h:link>
</ui:composition>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>
+ <context-param>
+ <description>All empty strings should be converted to null.</description>
+ <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
+ <param-value>true</param-value>
+ </context-param>
<context-param>
<description>Whether the multi-page registration page or a single registration page is active</description>
<param-name>is_feature_user_register_multiple_page_enabled</param-name>
<param-name>is_feature_allow_user_registration_empty_password_enabled</param-name>
<param-value>false</param-value>
</context-param>
+ <context-param>
+ <description>Whether business contacts are used in this project.</description>
+ <param-name>is_feature_business_contacts_enabled</param-name>
+ <param-value>true</param-value>
+ </context-param>
<context-param>
<description>Maximum passwords that must be different.</description>
<param-name>max_user_password_history</param-name>
<ui:composition template="/WEB-INF/templates/admin/admin_base.tpl">
<ui:define name="metadata">
<f:metadata>
- <f:viewParam name="contactId" value="#{beanHelper.contact}" converter="ContactConverter" required="true" requiredMessage="#{msg.ERROR_PARAMETER_CONTACT_ID_NOT_SET}" converterMessage="#{msg.PARAMETER_PHONE_ID_INVALID}" />
+ <f:viewParam name="contactId" value="#{beanHelper.contact}" converter="ContactConverter" required="true" requiredMessage="#{msg.ERROR_PARAMETER_CONTACT_ID_NOT_SET}" converterMessage="#{msg.PARAMETER_CONTACT_ID_INVALID}" />
<f:viewAction onPostback="true" action="#{beanHelper.copyContactToController()}" />
</f:metadata>
</ui:define>
</div>
<div class="para">
- <h:link outcome="admin_show_contact">
- <h:outputText value="#{msg.ADMIN_SHOW_FULL_CONTACT_DATA}" />
+ <h:link outcome="admin_show_contact" value="#{msg.ADMIN_SHOW_FULL_CONTACT_DATA}">
<f:param name="contactId" value="#{beanHelper.contact.contactId}" />
</h:link>
</div>
</div>
<div class="para">
- <h:link outcome="admin_show_contact">
- <h:outputText value="#{msg.ADMIN_SHOW_FULL_CONTACT_DATA}" />
+ <h:link outcome="admin_show_contact" value="#{msg.ADMIN_SHOW_FULL_CONTACT_DATA}">
<f:param name="contactId" value="#{beanHelper.contact.contactId}" />
</h:link>
</div>
</div>
<div class="para">
- <h:link outcome="admin_show_contact">
- <h:outputText value="#{msg.ADMIN_SHOW_FULL_CONTACT_DATA}" />
+ <h:link outcome="admin_show_contact" title="#{msg.ADMIN_SHOW_FULL_CONTACT_DATA_TITLE}" value="#{msg.ADMIN_SHOW_FULL_CONTACT_DATA}">
<f:param name="contactId" value="#{beanHelper.contact.contactId}" />
</h:link>
</div>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
+ lang="#{localizationController.language}" xml:lang="#{localizationController.language}"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+ xmlns:h="http://xmlns.jcp.org/jsf/html"
+ xmlns:f="http://xmlns.jcp.org/jsf/core"
+ >
+
+ <ui:composition template="/WEB-INF/templates/admin/admin_base.tpl">
+ <ui:define name="admin_title">
+ <h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_CONTACT_BUSINESS}" />
+ </ui:define>
+
+ <ui:define name="content_header">
+ <h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_CONTACT_BUSINESS}" />
+ </ui:define>
+
+ <ui:define name="content">
+ <ui:fragment rendered="#{adminBusinessDataController.allBusinessContacts().isEmpty()}">
+ <ui:include src="/WEB-INF/templates/generic/message_box.tpl">
+ <ui:param name="message" value="#{msg.ADMIN_CONTACT_BUSINESS_LIST_EMPTY}" />
+ <ui:param name="styleClass" value="errors" />
+ </ui:include>
+ </ui:fragment>
+
+ <h:dataTable id="table_list_business_contacts" var="businessContact" value="#{adminBusinessDataController.allBusinessContacts()}" styleClass="table_full" headerClass="table_header_column" summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_CONTACT_BUSINESS}" rendered="#{not adminBusinessDataController.allBusinessContacts().isEmpty()}">
+ <h:column>
+ <f:facet name="header">
+ <h:outputText value="#{msg.ADMIN_CONTACT_BUSINESS_ID}" />
+ </f:facet>
+
+ <h:link outcome="admin_show_contact_business" title="#{msg.ADMIN_LINK_SHOW_BUSINESS_CONTACT_DATA_TITLE}" value="#{businessContact.businessDataId}">
+ <f:param name="businessDataId" value="#{businessContact.businessDataId}" />
+ </h:link>
+ </h:column>
+
+ <h:column>
+ <f:facet name="header">
+ <h:outputText value="#{msg.ADMIN_CONTACT_BUSINESS_OWNER_ID}" />
+ </f:facet>
+
+ <h:link outcome="admin_show_user" title="#{msg.ADMIN_LINK_SHOW_CONTACT_BUSINESS_OWNER_USER_TITLE}" value="#{businessContact.contactCompanyUserOwner.userId}" rendered="#{not empty businessContact.contactCompanyUserOwner}" />
+
+ <h:link outcome="admin_assign_contact_business_owner" title="#{msg.ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_OWNER_USER_TITLE}" value="#{msg[ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_OWNER_USER]}" rendered="#{empty businessContact.contactCompanyUserOwner}" />
+ </h:column>
+
+ <h:column>
+ <f:facet name="header">
+ <h:outputText value="#{msg.ADMIN_CONTACT_BUSINESS_COMPANY_NAME}" />
+ </f:facet>
+
+ <h:outputText value="#{businessContact.companyName} #{businessContact.companyLegalStatus}" />
+ </h:column>
+
+ <h:column>
+ <f:facet name="header">
+ <h:outputText value="#{msg.ADMIN_CONTACT_BUSINESS_CONTACT_PERSON}" />
+ </f:facet>
+
+ <h:link outcome="admin_show_business_employee" title="#{msg.ADMIN_LINK_SHOW_CONTACT_BUSINESS_CONTACT_PERSON_TITLE}" value="#{businessContact.companyContact.employeeId}" rendered="#{not empty businessContact.companyContact}" />
+
+ <h:link outcome="admin_assign_contact_business_contact" title="#{msg.ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_CONTACT_PERSON_TITLE}" value="#{msg[ADMIN_LINK_ASSIGN_CONTACT_BUSINESS_CONTACT_PERSON]}" rendered="#{empty businessContact.companyContact}" />
+ </h:column>
+
+ <h:column>
+ <f:facet name="header">
+ <h:outputText value="#{msg.ADMIN_CONTACT_BUSINESS_CREATED}" />
+ </f:facet>
+
+ <h:outputText id="contactCreated" value="#{businessContact.contactCreated.time}">
+ <f:convertDateTime for="contactCreated" type="both" timeStyle="short" dateStyle="short" />
+ </h:outputText>
+ </h:column>
+ </h:dataTable>
+
+ <h:form id="form_admin_add_contact_business">
+ <h:panelGroup styleClass="table_medium" layout="block">
+ <div class="table_header">
+ <h:outputText value="#{msg.ADMIN_ADD_CONTACT_BUSINESS_TITLE}" />
+ </div>
+
+ <div class="para">
+ <h:outputText value="#{msg.ADMIN_ADD_CONTACT_BUSINESS_MINIMUM_DATA}" />
+ </div>
+
+ <ui:include src="/WEB-INF/templates/admin/contact_business/admin_form_contact_business_data.tpl" />
+
+ <div class="table_footer">
+ <h:commandButton styleClass="reset right_space" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
+ <h:commandButton styleClass="submit" type="submit" id="add_contact" value="#{msg.BUTTON_ADMIN_CONTINUE_BUSINESS_CONTACT_PERSON}" action="#{adminBusinessDataController.addBusinessBasicData()}" />
+ </div>
+ </h:panelGroup>
+ </h:form>
+ </ui:define>
+ </ui:composition>
+</html>
<h:outputText value="#{msg.ADMIN_SHOW_PHONE_ID}" />
</f:facet>
- <h:link outcome="admin_show_fax">
- <h:outputText value="#{faxNumber.phoneId}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}" />
+ <h:link outcome="admin_show_fax" value="#{faxNumber.phoneId}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}">
<f:param name="phoneId" value="#{faxNumber.phoneId}" />
</h:link>
</h:column>
<h:column>
<h:outputLabel for="contactId" styleClass="table_data_label" value="#{msg.ADMIN_CONTACT_ID}" />
- <h:link id="contactId" styleClass="table_data_field" outcome="admin_show_contact">
- <h:outputText value="#{contact.contactId}" />
+ <h:link id="contactId" styleClass="table_data_field" outcome="admin_show_contact" value="#{contact.contactId}">
<f:param name="contactId" value="#{contact.contactId}" />
</h:link>
</h:column>
<h:outputText value="#{msg.ADMIN_SHOW_PHONE_ID}" />
</f:facet>
- <h:link outcome="admin_show_landline">
- <h:outputText value="#{landLineNumber.phoneId}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}" />
+ <h:link outcome="admin_show_landline" value="#{landLineNumber.phoneId}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}">
<f:param name="phoneId" value="#{landLineNumber.phoneId}" />
</h:link>
</h:column>
<h:column>
<h:outputLabel for="contactId" styleClass="table_data_label" value="#{msg.ADMIN_CONTACT_ID}" />
- <h:link id="contactId" styleClass="table_data_field" outcome="admin_show_contact">
- <h:outputText value="#{contact.contactId}" />
+ <h:link id="contactId" outcome="admin_show_contact">
+ <h:outputText styleClass="table_data_field" value="#{contact.contactId}" />
<f:param name="contactId" value="#{contact.contactId}" />
</h:link>
</h:column>
<h:outputText value="#{msg.ADMIN_SHOW_PHONE_ID}" />
</f:facet>
- <h:link outcome="admin_show_mobile">
- <h:outputText value="#{mobile.phoneId}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}" />
+ <h:link outcome="admin_show_mobile" value="#{mobile.phoneId}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}">
<f:param name="phoneId" value="#{mobile.phoneId}" />
</h:link>
</h:column>
<h:outputText value="#{msg.ADMIN_SHOW_MOBILE_PROVIDER_NAME}" />
</f:facet>
- <h:link outcome="admin_show_mobile_provider">
+ <h:link outcome="admin_show_mobile_provider" value="#{mobile.mobileProvider.providerName}">
<f:param name="providerId" value="#{mobile.mobileProvider.providerId}" />
- <h:outputText value="#{mobile.mobileProvider.providerName}" />
</h:link>
</h:column>
<h:column>
<h:outputLabel for="contactId" styleClass="table_data_label" value="#{msg.ADMIN_CONTACT_ID}" />
- <h:link id="contactId" styleClass="table_data_field" outcome="admin_show_contact">
- <h:outputText value="#{contact.contactId}" />
+ <h:link id="contactId" styleClass="table_data_field" outcome="admin_show_contact" value="#{contact.contactId}">
<f:param name="contactId" value="#{contact.contactId}" />
</h:link>
</h:column>