package edu.ualberta.med.biobank.validators; 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 CabinetInventoryIDValidator extends AbstractValidator { private static final Pattern PATTERN = Pattern.compile("^[a-zA-Z]{6}$"); //$NON-NLS-1$ private static final Pattern PATTERN2 = Pattern.compile("^C[a-zA-Z]{4}$"); //$NON-NLS-1$ private boolean manageOldInventoryIDs = false; public CabinetInventoryIDValidator() { super(Messages.CabinetInventoryIDValidator_error_msg); } @Override public IStatus validate(Object value) { if (!(value instanceof String)) { throw new RuntimeException( Messages.CabinetInventoryIDValidator_nonstring_error_msg); } String v = (String) value; boolean matches = PATTERN.matcher(v).matches(); if (manageOldInventoryIDs) { matches = matches || PATTERN2.matcher(v).matches(); } if (matches) { hideDecoration(); return Status.OK_STATUS; } showDecoration(); return ValidationStatus.error(errorMessage); } public void setManageOldInventoryIDs(boolean manageOldInventoryIDs) { this.manageOldInventoryIDs = manageOldInventoryIDs; } }