--- /dev/null
+/*
+ * Copyright (C) 2015 Roland Haeder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jsfcore.validator.bool;
+
+import java.text.MessageFormat;
+import java.util.Arrays;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import org.mxchange.jsfcore.validator.BaseObjectValidator;
+
+/**
+ * A general boolean value validator.
+ *
+ * @author BalusC
+ * @author Roland Haeder
+ */
+public abstract class BaseBooleanValidator extends BaseObjectValidator implements Validator {
+
+ @Override
+ public void preValidate (final FacesContext context, final UIComponent component, final Object value, final String[] requiredFields) throws ValidatorException {
+ // Trace message
+ this.getLogger().trace(MessageFormat.format("context={0},component={1},value={2},requiredFields={3} - CALLED!", context, component, value, Arrays.toString(requiredFields))); //NOI18N
+
+ // Pre-validate
+ super.preValidate(context, component, value, requiredFields);
+
+ // Get client id and init message + key
+ String clientId = component.getClientId();
+ FacesMessage facesMessage = null;
+
+ // So far all fine, no check if the field is fine
+ for (final String field : requiredFields) {
+ // Debug message
+ this.getLogger().debug(MessageFormat.format("field={0},clientId={1}", field, clientId)); //NOI18N
+
+ // Is it the same?
+ if (clientId.endsWith(field)) {
+ // Compare value's type
+ if (!(value instanceof Boolean)) {
+ // Value is not right type
+ facesMessage = new FacesMessage(this.getMessageStringFromKey(String.format("error.%s.is_not_boolean", field))); //NOI18N
+ break;
+ }
+
+ // Cast to string
+ Boolean bool = (Boolean) value;
+
+ // Is it false?
+ if (bool.equals(Boolean.FALSE)) {
+ // Default message
+ String requiredMessage = ((UIInput) component).getRequiredMessage();
+
+ if (null == requiredMessage) {
+ Object label = component.getAttributes().get("label"); //NOI18N
+
+ // Check if label is null, or zero length
+ if ((null == label) || (label instanceof CharSequence && ((CharSequence) label).length() == 0)) {
+ label = component.getValueExpression("label"); //NOI18N
+ }
+
+ // Label is still null?
+ if (null == label) {
+ label = component.getClientId(context);
+ }
+
+ // Set message
+ requiredMessage = MessageFormat.format(UIInput.REQUIRED_MESSAGE_ID, label);
+
+ // Set value to false in UI component
+ ((ValueHolder) component).setValue(Boolean.FALSE);
+ }
+
+ // Abort processing here
+ facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, requiredMessage, requiredMessage);
+ break;
+ }
+ }
+ }
+
+ // Is facesMessage set?
+ if (facesMessage != null) {
+ // Abort here
+ throw new ValidatorException(facesMessage);
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (C) 2015 Roland Haeder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jsfcore.validator.bool.privacy_terms;
+
+import java.text.MessageFormat;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import org.mxchange.jsfcore.validator.bool.BaseBooleanValidator;
+
+/**
+ * A validator for privacy and terms checkboxes
+ *
+ * @author Roland Haeder
+ */
+public class PrivacyTermsCheckboxValidator extends BaseBooleanValidator implements Validator {
+
+ @Override
+ public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+ // Trace message
+ this.getLogger().trace(MessageFormat.format("context={0},component={1},value={2} - CALLED!", context, component, value)); //NOI18N
+
+ // All accepted, required fields
+ String[] requiredFileds = {"privacy", "terms"}; //NOI18N
+
+ // Pre-validation (e.g. not null, not a string, empty string ...)
+ super.preValidate(context, component, value, requiredFileds);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
+ }
+}
*/
public abstract class BaseStringValidator extends BaseObjectValidator {
- /**
- * Pre-validation of value, e.g. not null
- *
- * @param context FacesContext instance
- * @param component UIComponent instance
- * @param value Value to check
- * @param requiredFields Array of required field names (ending with)
- * @throws ValidatorException If something more horrible went wrong
- */
@Override
protected void preValidate (final FacesContext context, final UIComponent component, final Object value, final String[] requiredFields) throws ValidatorException {
// Trace message
FacesMessage facesMessage = null;
String errKey;
- // So far all fine!
+ // So far all fine, no check if the field is fine
for (final String field : requiredFields) {
// Debug message
this.getLogger().debug(MessageFormat.format("field={0},clientId={1}", field, clientId)); //NOI18N
// Is it the same?
if (clientId.endsWith(field)) {
+ // Compare value's type
if (!(value instanceof String)) {
// Value is empty
errKey = String.format("error.%s.is_not_string", field); //NOI18N