Sample Validators
These examples of validators use the NumberFormat.getInstance() method to retrieve a formatter. Each validator also makes sure that the field being validated has been filled.
To validate a string as a number
To validate a string as a number
FORMATTEDNUMBERVALIDATOR.JAVA
package com.interactive.intviewer.util.validators;
import java.text.NumberFormat;
import java.text.ParsePosition;
import org.netbeans.validation.api.Problems;
import org.netbeans.validation.api.Validator;
public class FormattedNumberValidator implements Validator<String> {
public FormattedNumberValidator() {
}
@Override
public boolean validate(Problems problems, String compName, String model) {
if ((model != null) && (model.length() > 0)) {
NumberFormat numberFormat1 = NumberFormat.getInstance();
ParsePosition position = new ParsePosition(0);
numberFormat1.parseObject(model, position);
if (position.getIndex() < model.length()) {
problems.add("'" + model + "' is not a number");
return false;
} else {
return true;
}
} else {
return true; // should be handled by another validator
}
}
}
To validate a string as an integer
To validate a string as an integer
FORMATTEDINTEGERVALIDATOR.JAVA
package com.interactive.intviewer.util.validators;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import org.netbeans.validation.api.Problems;
import org.netbeans.validation.api.Validator;
public class FormattedIntegerValidator implements Validator<String> {
public FormattedIntegerValidator() {
}
@Override
public boolean validate(Problems problems, String compName, String model) {
if ((model != null) && (model.length() > 0)) {
NumberFormat numberFormat1 = NumberFormat.getInstance();
ParsePosition position = new ParsePosition(0);
Object result = numberFormat1.parseObject(model, position);
if (position.getIndex() < model.length()) {
problems.add("'" + model + "' is not an integer");
return false;
} else {
try {
String resultString = result.toString();
Integer.parseInt(resultString);
return true;
} catch (NumberFormatException ex2) {
problems.add("'" + model + "' is not an integer");
return false;
}
}
} else {
return true; // should be handled by another validator
}
}
}
To validate a string as a number within a range
To validate a string as a number within a range
FORMATTEDNUMBERRANGEVALIDATOR.JAVA
package com.interactive.intviewer.util.validators;
import com.interactive.intviewer.util.NumberUtils;
import java.text.NumberFormat;
import java.text.ParseException;
import org.netbeans.validation.api.Problems;
import org.netbeans.validation.api.Validator;
public class FormattedNumberRangeValidator implements Validator<String> {
private Number max;
private Number min;
public FormattedNumberRangeValidator(Number min, Number max) {
this.min = min;
this.max = max;
}
@Override
public boolean validate(Problems problems, String compName, String model) {
if ((model != null) && (model.length() > 0)) {
NumberFormat formatter = NumberFormat.getInstance();
try {
Number val = formatter.parse(model);
double minn = min.doubleValue();
double maxx = max.doubleValue();
boolean result = val.doubleValue() >= minn && val.doubleValue() <= maxx;
if (!result) {
NumberFormat formatterMin = NumberUtils.getDoubleNumberFormat(minn);
NumberFormat formatterMax = NumberUtils.getDoubleNumberFormat(maxx);
problems.add(compName + " must be between " + formatterMin.format(minn) + " and " + formatterMax.format(maxx));
}
return result;
} catch (ParseException ex) {
return true; //should be handled by another validator
}
} else {
return true; //should be handled by another validator
}
}
}
To validate a string as a number greater than another number entered in a different field
To validate a string as a number greater than another number entered in a different field
FORMATTEDBOUNDARIESVALIDATOR.JAVA
package com.interactive.intviewer.util.validators;
import java.text.NumberFormat;
import java.text.ParseException;
import javax.swing.JTextField;
import org.netbeans.validation.api.Problems;
import org.netbeans.validation.api.Validator;
public class FormattedBoundariesValidator implements Validator<String> {
private JTextField lowerBoundaryField;
public FormattedBoundariesValidator(JTextField lowerBoundaryField) {
this.lowerBoundaryField = lowerBoundaryField;
}
@Override
public boolean validate(Problems problems, String compName, String model) {
if ((model != null) && (model.length() > 0)) {
NumberFormat formatter = NumberFormat.getInstance();
try {
double lowerBoundary = formatter.parse(lowerBoundaryField.getText()).doubleValue();
double upperBoundary = formatter.parse(model).doubleValue();
if (upperBoundary < lowerBoundary) {
String message = compName + " must be greater than " + lowerBoundaryField.getName();
problems.add(message);
return false;
} else {
return true;
}
} catch (ParseException ex) {
return true; // should be taken care of by another validator
}
} else {
return true; // should be taken care of by another validator
}
}
}