/*
- * Copyright (C) 2015 Roland Haeder
+ * 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 General Public License as published by
*/
package org.mxchange.jcoreee.validator.string;
+import java.text.MessageFormat;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
* A general string validation class. You normally want to inherit from this
* class for many form fields, e.g. surname, street name, city name and such.
* <p>
- * @author Roland Haeder<roland@mxchange.org>
+ * @author Roland Häder<roland@mxchange.org>
*/
public abstract class BaseStringValidator extends BaseObjectValidator {
private static final long serialVersionUID = 15_484_578_781_760_287L;
@Override
- protected void preValidate (final FacesContext context, final UIComponent component, final Object value, final String[] requiredFields) throws ValidatorException {
+ protected void preValidate (final FacesContext context, final UIComponent component, final Object value, final String[] requiredFields, Boolean allowNull) throws ValidatorException {
// Trace message
- //this.getLogger().logTrace(MessageFormat.format("preValidate: context={0},component={1},value={2},fields={3} - CALLED!", context, component, value, Arrays.toString(requiredFields))); //NOI18N
+ //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("preValidate: context={0},component={1},value={2},fields={3} - CALLED!", context, component, value, Arrays.toString(requiredFields))); //NOI18N
- // Pre-validate (e.g. on null)
- super.preValidate(context, component, value, requiredFields);
+ // Pre-validate (example: on null)
+ super.preValidate(context, component, value, requiredFields, allowNull);
// Get client id and init message + key
String clientId = component.getClientId();
- FacesMessage facesMessage = null;
- String errKey;
+ String requiredMessage = null;
// So far all fine, no check if the field is fine
for (final String field : requiredFields) {
// Is it the same?
if (clientId.endsWith(field)) {
// Compare value's type
- if (!(value instanceof String)) {
+ if ((!allowNull) && (!(value instanceof String))) {
// Value is empty
- errKey = String.format("ERROR_%s_IS_NOT_STRING", field.toUpperCase()); //NOI18N
-
- facesMessage = new FacesMessage(this.getMessageFromKey(errKey));
+ requiredMessage = MessageFormat.format("Field {0} is not String: {1}", field, value); //NOI18N
}
// Cast to string
// Is it empty?
if (str.isEmpty()) {
- // Value is empty
- errKey = String.format("ERROR_%s_IS_EMPTY", field.toUpperCase()); //NOI18N
-
- facesMessage = new FacesMessage(this.getMessageFromKey(errKey));
+ // Empty strings are currently not accepted, may indicate flaw in invoker
+ requiredMessage = MessageFormat.format("Field {0} is empty.", field); //NOI18N
}
}
}
// Debug message
- //this.getLogger().logDebug(MessageFormat.format("preValidate: facesMessage={0}", facesMessage)); //NOI18N
+ //this.getLogger().logDebug(MessageFormat.format("preValidate: requiredMessage={0}", requiredMessage)); //NOI18N
+
// Is it not null?
- if (null != facesMessage) {
- throw new ValidatorException(facesMessage);
+ if (null != requiredMessage) {
+ // Then there was something wrong with it
+ throw new ValidatorException(new FacesMessage(requiredMessage));
}
// Trace message
- //this.getLogger().logTrace("preValidate: EXIT!"); //NOI18N
+ //* NOISY-DEBUG: */ System.out.println("preValidate: EXIT!"); //NOI18N
}
}