package edu.ualberta.med.biobank.validators; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.core.databinding.validation.ValidationStatus; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import edu.ualberta.med.biobank.gui.common.validators.AbstractValidator; public class PalletLabelValidator extends AbstractValidator { /** * Accept combinations of 2 letters or 2 digits or one letter and one digit. * Need at least 3 repetitions */ private static final Pattern PATTERN = Pattern .compile("^(([A-Z]{2})|([A-Z][0-9])|([0-9]{2})){3,}"); //$NON-NLS-1$ public PalletLabelValidator(String message) { super(message); } @Override public IStatus validate(Object value) { if (value != null && !(value instanceof String)) { throw new RuntimeException( Messages.PalletLabelValidator_nonstring_error_msg); } if (value != null) { String v = (String) value; Matcher m = PATTERN.matcher(v); if (m.matches()) { hideDecoration(); return Status.OK_STATUS; } } showDecoration(); return ValidationStatus.error(errorMessage); } }